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