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