Mercurial > hg > digilib
comparison client/digitallibrary/jquery/jquery.digilib.js @ 780:fd86688e6be0 jquery
more new plugin architecture.
| author | robcast |
|---|---|
| date | Thu, 17 Feb 2011 22:36:49 +0100 |
| parents | 7afa40517871 |
| children | 29de7131a5a8 |
comparison
equal
deleted
inserted
replaced
| 779:7afa40517871 | 780:fd86688e6be0 |
|---|---|
| 252 }; | 252 }; |
| 253 | 253 |
| 254 // list of plugins | 254 // list of plugins |
| 255 var plugins = {}; | 255 var plugins = {}; |
| 256 | 256 |
| 257 // object to export functions to plugins | |
| 258 var fn; | |
| 259 | |
| 257 // affine geometry plugin stub | 260 // affine geometry plugin stub |
| 258 var geom; | 261 var geom; |
| 259 | 262 |
| 260 var FULL_AREA; | 263 var FULL_AREA; |
| 261 | 264 |
| 350 elemSettings.digilibBaseUrl = url.substring(0, bp) + '/digilib.jsp'; | 353 elemSettings.digilibBaseUrl = url.substring(0, bp) + '/digilib.jsp'; |
| 351 } | 354 } |
| 352 } | 355 } |
| 353 } | 356 } |
| 354 // initialise plugins | 357 // initialise plugins |
| 355 for (p in plugins) { | 358 for (n in plugins) { |
| 356 plugins[p].init(data); | 359 var p = plugins[n]; |
| 360 // share common objects | |
| 361 p.buttons = buttons; | |
| 362 p.actions = actions; | |
| 363 p.fn = fn; | |
| 364 // and init | |
| 365 p.init(data); | |
| 357 } | 366 } |
| 358 // get image info from server if needed | 367 // get image info from server if needed |
| 359 if (data.scaleMode === 'pixel' || data.scaleMode === 'size') { | 368 if (data.scaleMode === 'pixel' || data.scaleMode === 'size') { |
| 360 loadImageInfo(data, updateDisplay); // updateDisplay(data) on completion | 369 loadImageInfo(data, updateDisplay); // updateDisplay(data) on completion |
| 361 } | 370 } |
| 1765 console.log = logFunction('_log'); | 1774 console.log = logFunction('_log'); |
| 1766 console.debug = logFunction('_debug'); | 1775 console.debug = logFunction('_debug'); |
| 1767 console.error = logFunction('_error'); | 1776 console.error = logFunction('_error'); |
| 1768 } | 1777 } |
| 1769 | 1778 |
| 1779 // functions to export to plugins | |
| 1780 fn = { | |
| 1781 parseQueryString : parseQueryString, | |
| 1782 getScalerUrl : getScalerUrl, | |
| 1783 getParamString : getParamString, | |
| 1784 getDigilibUrl : getDigilibUrl, | |
| 1785 unpackParams : unpackParams, | |
| 1786 packParams : packParams, | |
| 1787 redisplay : redisplay, | |
| 1788 updateDisplay : updateDisplay, | |
| 1789 getImgTrafo : getImgTrafo, | |
| 1790 getQuality : getQuality, | |
| 1791 setQuality : setQuality, | |
| 1792 getScaleMode : getScaleMode, | |
| 1793 setScaleMode : setScaleMode, | |
| 1794 isFullArea : isFullArea | |
| 1795 }; | |
| 1796 | |
| 1770 // hook plugin into jquery | 1797 // hook plugin into jquery |
| 1771 $.fn.digilib = function (action) { | 1798 $.fn.digilib = function (action) { |
| 1772 // plugin extension mechanism | 1799 // plugin extension mechanism |
| 1773 if (action === 'plugin') { | 1800 if (action === 'plugin') { |
| 1774 var plugin = arguments[1]; | 1801 var plugin = arguments[1]; |
| 1775 // each plugin needs a name | 1802 // each plugin needs a name |
| 1776 if (plugin.name != null) { | 1803 if (plugin.name != null) { |
| 1777 plugins[plugin.name] = plugin; | 1804 plugins[plugin.name] = plugin; |
| 1778 } | 1805 } |
| 1779 /* for each digilib $elem extend data.settings with obj.options | 1806 // initialisation of plugins done later |
| 1780 // TODO: couldn't other plugins just access $elem.data('digilib')? | |
| 1781 if (obj.options) { | |
| 1782 this.each(function() { | |
| 1783 var $elem = $(this); | |
| 1784 // console.debug('extending:', $elem); | |
| 1785 var data = $elem.data('digilib'); | |
| 1786 if (!data) { | |
| 1787 return console.log('cannot extend digilib plugin, element not initialised!'); | |
| 1788 } | |
| 1789 var settings = data.settings; | |
| 1790 $.extend(settings, obj.options); | |
| 1791 // console.log('settings:', settings); | |
| 1792 }); | |
| 1793 delete(obj.options); | |
| 1794 } | |
| 1795 // extend the plugin actions (to make this useful, | |
| 1796 // maybe we need to expose some more internal functions) | |
| 1797 $.extend(actions, obj); */ | |
| 1798 } else if (actions[action]) { | 1807 } else if (actions[action]) { |
| 1799 // call action on this with the remaining arguments (inserting data as first argument) | 1808 // call action on this with the remaining arguments (inserting data as first argument) |
| 1800 var $elem = $(this); | 1809 var $elem = $(this); |
| 1801 var data = $elem.data('digilib'); | 1810 var data = $elem.data('digilib'); |
| 1802 var args = Array.prototype.slice.call(arguments, 1); | 1811 var args = Array.prototype.slice.call(arguments, 1); |
