comparison client/digitallibrary/jquery/jquery.digilib.js @ 644:ee8ccd84c5f8 jquery

reload doesn't take list of changed parameters any more changed parameters detected by comparison with defaults (data.queryParams mostly useless now)
author robcast
date Wed, 19 Jan 2011 20:18:59 +0100
parents c108607e1bc0
children 91d168f7dd0d
comparison
equal deleted inserted replaced
643:c108607e1bc0 644:ee8ccd84c5f8
172 'rgbm' : '0/0/0', 172 'rgbm' : '0/0/0',
173 'rgba' : '0/0/0', 173 'rgba' : '0/0/0',
174 'ddpi' : null, 174 'ddpi' : null,
175 'ddpix' : null, 175 'ddpix' : null,
176 'ddpiy' : null, 176 'ddpiy' : null,
177 // digilib defaults 177 // list of digilib parameters
178 'digilibParamNames' : ['fn','pn','ww','wh','wx','wy','ws','mo','rot','cont','brgt','rgbm','rgba',
179 'mk'],
180 // digilib parameter defaults
178 'mk' : '', 181 'mk' : '',
179 // mode of operation: 182 // mode of operation:
180 // fullscreen = take parameters from page URL, keep state in page URL 183 // fullscreen = take parameters from page URL, keep state in page URL
181 // embedded = take parameters from Javascript options, keep state inside object 184 // embedded = take parameters from Javascript options, keep state inside object
182 'interactionMode' : 'fullscreen', 185 'interactionMode' : 'fullscreen',
295 alert("no such page (page number too high)"); 298 alert("no such page (page number too high)");
296 settings.pn = oldpn; 299 settings.pn = oldpn;
297 return false; 300 return false;
298 } 301 }
299 } 302 }
300 // add pn to param list and reset mk and others(?) 303 // reset mk and others(?)
301 data.marks = []; 304 data.marks = [];
302 data.zoomArea = MAX_ZOOMAREA; 305 data.zoomArea = MAX_ZOOMAREA;
303 // then reload 306 // then reload
304 redisplay(data, ['pn']); 307 redisplay(data);
305 }, 308 },
306 309
307 // zoom by a given factor 310 // zoom by a given factor
308 zoomBy : function (factor) { 311 zoomBy : function (factor) {
309 var $elem = $(this); 312 var $elem = $(this);
387 var url = settings.scalerBaseUrl + '?' + queryString; 390 var url = settings.scalerBaseUrl + '?' + queryString;
388 return url; 391 return url;
389 }; 392 };
390 393
391 // returns URL and query string for current digilib 394 // returns URL and query string for current digilib
392 var getDigilibUrl = function (data, changedParams) { 395 var getDigilibUrl = function (data) {
393 packParams(data); 396 packParams(data);
394 var settings = data.settings; 397 var settings = data.settings;
395 var queryParams = data.queryParams; 398 var queryString = getParamString(settings, settings.digilibParamNames, defaults);
396 // add changedParams
397 if (changedParams != null) {
398 for (var i=0; i < changedParams.length; ++i) {
399 var k = changedParams[i];
400 if (queryParams[k] == null) {
401 // add param (value doesn't matter)
402 queryParams[k] = k;
403 }
404 }
405 }
406 // make list from queryParams keys
407 var keys = [];
408 for (var k in data.queryParams) {
409 keys.push(k);
410 }
411 var queryString = getParamString(settings, keys, defaults);
412 var url = window.location.toString(); 399 var url = window.location.toString();
413 var pos = url.indexOf('?'); 400 var pos = url.indexOf('?');
414 var baseUrl = url.substring(0, pos); 401 var baseUrl = url.substring(0, pos);
415 var newurl = baseUrl + '?' + queryString; 402 var newurl = baseUrl + '?' + queryString;
416 return newurl; 403 return newurl;
466 // TODO: account for borders? 453 // TODO: account for borders?
467 return geom.size(winW, winH); 454 return geom.size(winW, winH);
468 }; 455 };
469 456
470 // (re)load the img from a new scaler URL 457 // (re)load the img from a new scaler URL
471 var redisplay = function (data, changedParams) { 458 var redisplay = function (data) {
472 var settings = data.settings; 459 var settings = data.settings;
473 if (settings.interactionMode === 'fullscreen') { 460 if (settings.interactionMode === 'fullscreen') {
474 // update location.href (browser URL) in fullscreen mode 461 // update location.href (browser URL) in fullscreen mode
475 var url = getDigilibUrl(data, changedParams); 462 var url = getDigilibUrl(data);
476 var history = window.history; 463 var history = window.history;
477 if (typeof(history.pushState) === 'function') { 464 if (typeof(history.pushState) === 'function') {
478 console.debug("we could modify history, but we don't..."); 465 console.debug("we could modify history, but we don't...");
479 } 466 }
480 window.location = url; 467 window.location = url;
685 // and recenter 672 // and recenter
686 newarea.x -= 0.5 * (newarea.width - area.width); 673 newarea.x -= 0.5 * (newarea.width - area.width);
687 newarea.y -= 0.5 * (newarea.height - area.height); 674 newarea.y -= 0.5 * (newarea.height - area.height);
688 newarea = MAX_ZOOMAREA.fit(newarea); 675 newarea = MAX_ZOOMAREA.fit(newarea);
689 data.zoomArea = newarea; 676 data.zoomArea = newarea;
690 redisplay(data, ['wx', 'wy', 'ww', 'wh']); 677 redisplay(data);
691 }; 678 };
692 679
693 // auxiliary function (from Douglas Crockford, A.10) 680 // auxiliary function (from Douglas Crockford, A.10)
694 var isNumber = function isNumber(value) { 681 var isNumber = function isNumber(value) {
695 return typeof value === 'number' && isFinite(value); 682 return typeof value === 'number' && isFinite(value);