Mercurial > hg > digilib-old
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); |