Mercurial > hg > digilib-old
comparison client/digitallibrary/jquery/jquery.digilib.js @ 608:774a3f60efd5 jquery
start work on scaler call
author | robcast |
---|---|
date | Fri, 14 Jan 2011 11:23:56 +0100 |
parents | f5d5cae64828 |
children | 435f81210a33 |
comparison
equal
deleted
inserted
replaced
607:f5d5cae64828 | 608:774a3f60efd5 |
---|---|
4 */ | 4 */ |
5 | 5 |
6 (function($) { | 6 (function($) { |
7 | 7 |
8 var defaults = { | 8 var defaults = { |
9 /* base URL to Scaler servlet */ | 9 // base URL to Scaler servlet |
10 'scalerUrl' : 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler', | 10 'scalerBaseUrl' : 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler', |
11 /* digilib image path i.e. fn */ | 11 // list of Scaler parameters |
12 'scalerParamNames' : ['fn','pn','dw','dh','ww','wh','wx','wy','ws','mo'], | |
13 // digilib image path | |
12 'fn' : '', | 14 'fn' : '', |
13 /* mode of operation. | 15 // mode of operation. |
14 * fullscreen: takes parameters from page URL, keeps state in page URL | 16 // fullscreen: takes parameters from page URL, keeps state in page URL |
15 * embedded: takes parameters from Javascript options, keeps state inside object | 17 // embedded: takes parameters from Javascript options, keeps state inside object |
16 */ | |
17 'interactionMode' : 'fullscreen' | 18 'interactionMode' : 'fullscreen' |
18 }; | 19 }; |
19 | 20 |
20 /* parameters from the query string */ | 21 // parameters from the query string |
21 var queryParams = {}; | 22 var queryParams = {}; |
23 | |
24 // affine geometry classes | |
25 var geom = dlGeometry(); | |
22 | 26 |
23 var methods = { | 27 var methods = { |
28 // digilib initialization | |
24 init : function(options) { | 29 init : function(options) { |
30 // settings for this digilib instance are merged from defaults and options | |
25 var settings = $.extend({}, defaults, options); | 31 var settings = $.extend({}, defaults, options); |
26 var isFullscreen = settings.interactionMode === 'fullscreen'; | 32 var isFullscreen = settings.interactionMode === 'fullscreen'; |
27 if (isFullscreen) { | 33 if (isFullscreen) { |
28 queryParams = parseQueryParams(); | 34 queryParams = parseQueryParams(); |
29 }; | 35 }; |
30 return this.each(function() { | 36 return this.each(function() { |
31 var $elem = $(this); | 37 var $elem = $(this); |
32 var data = $elem.data('digilib'); | 38 var data = $elem.data('digilib'); |
33 var elemSettings; | 39 var elemSettings; |
34 // If the plugin hasn't been initialized yet | 40 // if the plugin hasn't been initialized yet |
35 if (!data) { | 41 if (!data) { |
36 // settings for this digilib instance are merged from defaults and options | |
37 // merge query parameters | 42 // merge query parameters |
38 if (isFullscreen) { | 43 if (isFullscreen) { |
39 elemSettings = $.extend({}, settings, queryParams); | 44 elemSettings = $.extend({}, settings, queryParams); |
40 } else { | 45 } else { |
41 elemSettings = $.extend({}, settings, parseImgParams($elem)); | 46 elemSettings = $.extend({}, settings, parseImgParams($elem)); |
44 $elem.data('digilib', { | 49 $elem.data('digilib', { |
45 target : $elem, | 50 target : $elem, |
46 settings : elemSettings | 51 settings : elemSettings |
47 }); | 52 }); |
48 } | 53 } |
54 // create HTML structure | |
55 setupScalerDiv($elem, elemSettings); | |
49 }); | 56 }); |
50 }, | 57 }, |
58 | |
59 // clean up digilib | |
51 destroy : function() { | 60 destroy : function() { |
52 return this.each(function(){ | 61 return this.each(function(){ |
53 var $this = $(this); | 62 var $this = $(this); |
54 var data = $this.data('digilib'); | 63 var data = $this.data('digilib'); |
55 // Namespacing FTW | 64 // Namespacing FTW |
58 $this.removeData('digilib'); | 67 $this.removeData('digilib'); |
59 }); | 68 }); |
60 } | 69 } |
61 }; | 70 }; |
62 | 71 |
63 // returns object with parameters from the query string or an embedded img-tag (depending on interactionMode) | 72 // returns parameters from page url |
64 var parseQueryParams = function() { | 73 var parseQueryParams = function() { |
65 return parseQueryString(location.search.slice(1)); | 74 return parseQueryString(location.search.slice(1)); |
66 }; | 75 }; |
67 | 76 |
77 // returns parameters taken from embedded img-element | |
68 var parseImgParams = function($elem) { | 78 var parseImgParams = function($elem) { |
69 var src = $elem.children('img').attr('src'); | 79 var src = $elem.children('img').attr('src'); |
70 var pos = src.indexOf('?'); | 80 var pos = src.indexOf('?'); |
71 var query = (pos < 0) ? '' : src.substring(pos + 1); | 81 var query = (pos < 0) ? '' : src.substring(pos + 1); |
72 var scalerUrl = src.substring(0, pos); | 82 var scalerUrl = src.substring(0, pos); |
74 hash.scalerUrl = scalerUrl; | 84 hash.scalerUrl = scalerUrl; |
75 // console.log(hash); | 85 // console.log(hash); |
76 return hash; | 86 return hash; |
77 }; | 87 }; |
78 | 88 |
89 // parses query parameter string into parameter object | |
79 var parseQueryString = function(query) { | 90 var parseQueryString = function(query) { |
80 var pairs = query.split("&"); | 91 var pairs = query.split("&"); |
81 var hash = {}; | 92 var hash = {}; |
82 for (var i = 0; i < pairs.length; i++) { | 93 for (var i = 0; i < pairs.length; i++) { |
83 var pair = pairs[i].split("="); | 94 var pair = pairs[i].split("="); |
84 if (pair.length === 2) { | 95 if (pair.length === 2) { |
85 hash[pair[0]] = pair[1] | 96 hash[pair[0]] = pair[1]; |
86 }; | 97 }; |
87 }; | 98 }; |
88 return hash; | 99 return hash; |
89 }; | 100 }; |
90 | 101 |
102 // returns URL and query string for Scaler | |
103 var getScalerString = function (settings) { | |
104 var url = settings.scalerUrl; | |
105 | |
106 }; | |
107 | |
108 // creates HTML structure for digilib in elem | |
109 var setupScalerDiv = function ($elem, settings) { | |
110 if (settings.interactionMode === 'fullscreen') { | |
111 // fullscreen -- create new | |
112 $elem.empty(); // TODO: should we keep stuff for customization? | |
113 var scalerHTML = '<div class="scaler"><img class="pic"/></div>'; | |
114 $elem.add(scalerHTML); | |
115 | |
116 } | |
117 }; | |
118 | |
91 // hook plugin into jquery | 119 // hook plugin into jquery |
92 $.fn.digilib = function(method) { | 120 $.fn.digilib = function(method) { |
93 if (methods[method]) { | 121 if (methods[method]) { |
94 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); | 122 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); |
95 } else if (typeof(method) === 'object' || !method) { | 123 } else if (typeof(method) === 'object' || !method) { |