Mercurial > hg > digilib-old
comparison client/digitallibrary/jquery/jquery.digilib.js @ 609:435f81210a33 jquery
start work on scaler call
author | robcast |
---|---|
date | Fri, 14 Jan 2011 13:38:36 +0100 |
parents | 774a3f60efd5 |
children | cd9f657d49fa |
comparison
equal
deleted
inserted
replaced
608:774a3f60efd5 | 609:435f81210a33 |
---|---|
7 | 7 |
8 var defaults = { | 8 var defaults = { |
9 // base URL to Scaler servlet | 9 // base URL to Scaler servlet |
10 'scalerBaseUrl' : 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler', | 10 'scalerBaseUrl' : 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler', |
11 // list of Scaler parameters | 11 // list of Scaler parameters |
12 'scalerParamNames' : ['fn','pn','dw','dh','ww','wh','wx','wy','ws','mo'], | 12 'scalerParamNames' : ['fn','pn','dw','dh','ww','wh','wx','wy','ws','mo', |
13 // digilib image path | 13 'rot','cont','brgt','rgbm','rgba','ddpi','ddpix','ddpiy'], |
14 'fn' : '', | |
15 // mode of operation. | 14 // mode of operation. |
16 // fullscreen: takes parameters from page URL, keeps state in page URL | 15 // fullscreen: takes parameters from page URL, keeps state in page URL |
17 // embedded: takes parameters from Javascript options, keeps state inside object | 16 // embedded: takes parameters from Javascript options, keeps state inside object |
18 'interactionMode' : 'fullscreen' | 17 'interactionMode' : 'fullscreen' |
19 }; | 18 }; |
79 var src = $elem.children('img').attr('src'); | 78 var src = $elem.children('img').attr('src'); |
80 var pos = src.indexOf('?'); | 79 var pos = src.indexOf('?'); |
81 var query = (pos < 0) ? '' : src.substring(pos + 1); | 80 var query = (pos < 0) ? '' : src.substring(pos + 1); |
82 var scalerUrl = src.substring(0, pos); | 81 var scalerUrl = src.substring(0, pos); |
83 var hash = parseQueryString(query); | 82 var hash = parseQueryString(query); |
84 hash.scalerUrl = scalerUrl; | 83 hash.scalerBaseUrl = scalerUrl; |
85 // console.log(hash); | 84 // console.log(hash); |
86 return hash; | 85 return hash; |
87 }; | 86 }; |
88 | 87 |
89 // parses query parameter string into parameter object | 88 // parses query parameter string into parameter object |
99 return hash; | 98 return hash; |
100 }; | 99 }; |
101 | 100 |
102 // returns URL and query string for Scaler | 101 // returns URL and query string for Scaler |
103 var getScalerString = function (settings) { | 102 var getScalerString = function (settings) { |
104 var url = settings.scalerUrl; | 103 var url = settings.scalerBaseUrl + '?'; |
105 | 104 var i, parm, latter; |
105 // go through param names and get values from settings | |
106 for (i = 0; i < settings.scalerParamNames.length; ++i) { | |
107 parm = settings.scalerParamNames[i]; | |
108 if (settings[parm]) { | |
109 // first parm gets no '&' | |
110 url += latter ? '&' : ''; | |
111 latter = 1; | |
112 // add parm=val | |
113 url += parm + '=' + settings[parm]; | |
114 } | |
115 } | |
116 return url; | |
117 }; | |
118 | |
119 // returns maximum size for scaler img in fullscreen mode | |
120 var getFullscreenImgSize = function($elem) { | |
121 var winH = $(window).height(); | |
122 var winW = $(window).width(); | |
123 // TODO: account for borders? | |
124 return geom.size(winW, winH); | |
106 }; | 125 }; |
107 | 126 |
108 // creates HTML structure for digilib in elem | 127 // creates HTML structure for digilib in elem |
109 var setupScalerDiv = function ($elem, settings) { | 128 var setupScalerDiv = function ($elem, settings) { |
110 if (settings.interactionMode === 'fullscreen') { | 129 if (settings.interactionMode === 'fullscreen') { |
111 // fullscreen -- create new | 130 // fullscreen |
131 var imgSize = getFullscreenImgSize($elem); | |
132 settings.dw = imgSize.width; | |
133 settings.dh = imgSize.height; | |
134 // create new html | |
112 $elem.empty(); // TODO: should we keep stuff for customization? | 135 $elem.empty(); // TODO: should we keep stuff for customization? |
136 var scalerUrl = getScalerString(settings); | |
113 var scalerHTML = '<div class="scaler"><img class="pic"/></div>'; | 137 var scalerHTML = '<div class="scaler"><img class="pic"/></div>'; |
114 $elem.add(scalerHTML); | 138 $elem.append(scalerHTML); |
115 | 139 var $img = $elem.find("img.pic"); |
140 $img.attr('src', scalerUrl); | |
141 //$img.load(scalerImgLoaded); | |
142 } else { | |
143 // embedded mode -- keep inner img | |
144 var $img = $elem.detach('img'); | |
145 $elem.empty(); // TODO: should we keep stuff for customization? | |
146 $img.addClass('pic'); | |
147 var $scaler = $('<div class="scaler"/>'); | |
148 $scaler.append($img); | |
149 $elem.append($scaler); | |
150 //$img.load(scalerImgLoaded); | |
116 } | 151 } |
117 }; | 152 }; |
118 | 153 |
119 // hook plugin into jquery | 154 // hook plugin into jquery |
120 $.fn.digilib = function(method) { | 155 $.fn.digilib = function(method) { |