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