From 61d2be74c0ed556641da3e61bafeb77a6a2cb890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Sun, 23 Aug 2009 11:58:42 +0200 Subject: [PATCH] ItEr22S12CUVistaRecursosTempoPorProxectoItEr21S07:Synchronizing the scroll of resources load list with the timetracker and the left pane --- .../resourceload/resourceloadleftpane.dsp | 3 +- .../main/resources/web/js/ganttz/planner.js | 37 +++++++++++++++++++ .../resourceload/resourcesloadleftpane.js | 13 +++++++ .../ganttz/resourceload/resourcesloadlist.js | 14 ++++--- 4 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 ganttzk/src/main/resources/web/js/ganttz/resourceload/resourcesloadleftpane.js diff --git a/ganttzk/src/main/resources/web/ganttz/resourceload/resourceloadleftpane.dsp b/ganttzk/src/main/resources/web/ganttz/resourceload/resourceloadleftpane.dsp index 745dd8e4f..115fa038f 100644 --- a/ganttzk/src/main/resources/web/ganttz/resourceload/resourceloadleftpane.dsp +++ b/ganttzk/src/main/resources/web/ganttz/resourceload/resourceloadleftpane.dsp @@ -3,7 +3,8 @@ -
+
${z:redraw(child, null)} diff --git a/ganttzk/src/main/resources/web/js/ganttz/planner.js b/ganttzk/src/main/resources/web/js/ganttz/planner.js index b84376652..5ec35089e 100644 --- a/ganttzk/src/main/resources/web/js/ganttz/planner.js +++ b/ganttzk/src/main/resources/web/js/ganttz/planner.js @@ -1,3 +1,40 @@ +function ScrollSync(element){ + var xChanges = []; + var yChanges = []; + var notifyScrollX = function(){ + for ( var i = 0; i < xChanges.length; i++) { + xChanges[i](); + } + }; + var notifyScrollY = function(){ + for ( var i = 0; i < yChanges.length; i++) { + yChanges[i](); + } + }; + var notifyListeners = function(){ + notifyScrollX(); + notifyScrollY(); + }; + var toFunction = function(value){ + var result = value; + if(typeof(value) !== 'function'){ + result = function(){return synched}; + } + return result; + }; + + this.synchXChangeTo = function(synched){ + var target = toFunction(synched); + xChanges.push(function(){ target().scrollLeft = element.scrollLeft; }); + }; + this.synchYChangeTo = function(synched){ + var target = toFunction(synched); + yChanges.push(function(){ target().scrollTop = element.scrollTop; }); + }; + YAHOO.util.Event.addListener(element,'scroll', notifyListeners); + return this; +} + /** * Javascript behaviuor for Planner elements * @author Lorenzo Tilve Álvaro diff --git a/ganttzk/src/main/resources/web/js/ganttz/resourceload/resourcesloadleftpane.js b/ganttzk/src/main/resources/web/js/ganttz/resourceload/resourcesloadleftpane.js new file mode 100644 index 000000000..15f7819a0 --- /dev/null +++ b/ganttzk/src/main/resources/web/js/ganttz/resourceload/resourcesloadleftpane.js @@ -0,0 +1,13 @@ +zkResourcesLoadLeftPane = {}; + +addResourcesLoadLeftPaneMethods({}); + +function addResourcesLoadLeftPaneMethods(object) { + var scrollSync; + + object.init = function(cmp) { + scrollSync = new ScrollSync(cmp); + scrollSync.synchYChangeTo(cmp); + }; + return object; +} diff --git a/ganttzk/src/main/resources/web/js/ganttz/resourceload/resourcesloadlist.js b/ganttzk/src/main/resources/web/js/ganttz/resourceload/resourcesloadlist.js index e4934b444..5796d88bf 100644 --- a/ganttzk/src/main/resources/web/js/ganttz/resourceload/resourcesloadlist.js +++ b/ganttzk/src/main/resources/web/js/ganttz/resourceload/resourcesloadlist.js @@ -1,8 +1,10 @@ var TIMETRACKER_OFFSET_TOP = 120; -zkResourcesLoadList = initializeClass( {}); +zkResourcesLoadList = addResourcesLoadListMethods({}); + +function addResourcesLoadListMethods(object) { + var scrollSync; -function initializeClass(classObject) { function watermark() { return document.getElementById('watermark'); } @@ -11,15 +13,17 @@ function initializeClass(classObject) { return document.getElementById('timetracker'); } - classObject.init = function(cmp) { + object.init = function(cmp) { this.adjustTimeTrackerSize(cmp); YAHOO.util.Event.addListener(window, 'resize', zkResourcesLoadList.adjustTimeTrackerSize, cmp); + scrollSync = new ScrollSync(cmp); + scrollSync.synchXChangeTo(timetracker); } - classObject.adjustTimeTrackerSize = function(cmp) { + object.adjustTimeTrackerSize = function(cmp) { watermark().style["height"] = cmp.clientHeight + "px"; timetracker().style["width"] = cmp.clientWidth + "px"; } - return classObject; + return object; } \ No newline at end of file