diff --git a/ganttzk/src/main/resources/web/js/ganttz/dependency.js b/ganttzk/src/main/resources/web/js/ganttz/dependency.js
deleted file mode 100644
index 6093dd31a..000000000
--- a/ganttzk/src/main/resources/web/js/ganttz/dependency.js
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * This file is part of NavalPlan
- *
- * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-
-/**
- * Javascript behaviuor for TaskList elements
- * @author Javier Morán Rúa
- * @author Óscar González Fernández
- * @author Lorenzo Tilve Álvaro
- */
-
-webapp_context_path = window.location.pathname.split( '/' )[1];
-
-zkPlanner = {};
-zkPlanner.constants = {
- END_START: "END_START",
- START_START: "START_START",
- END_END: "END_END"
-};
-
-zkPlanner.getImagesDir = function() {
- return "/" + webapp_context_path + "/zkau/web/ganttz/img/";
-}
-
-zkPlanner.init = function(planner){
-
-}
-
-zkPlanner.findImageElement = function(arrow, name) {
- var children = arrow.getElementsByTagName("div");
- for (var i = 0; i < children.length; i++) {
- var child = children[i];
- if (child.getAttribute("class").indexOf(name) != -1) {
- return child;
- }
- }
- return null;
-}
-
-function get_origin() {
- return YAHOO.util.Dom.getXY('listdependencies');
-}
-
-zkPlanner.findPos = function(obj) {
- var pos1 = get_origin();
- var pos2 = YAHOO.util.Dom.getXY(obj.id);
- return [ pos2[0] - pos1[0], pos2[1] - pos1[1] ];
-}
-zkPlanner.findPosForMouseCoordinates = function(x, y){
- /* var pos1 = get_origin() */
- var pos1 = YAHOO.util.Dom.getXY('listtasks');
- return [x - pos1[0], y - pos1[1]];
-}
-
-function getContextPath(element){
- return element.getAttribute('contextpath');
-}
-
-zkPlanner.setupArrow = function(arrowDiv){
-
- var image_data = [ [ "start", "pixel.gif" ], [ "mid", "pixel.gif" ],
- [ "end", "pixel.gif" ], [ "arrow", "arrow.png" ] ];
- for ( var i = 0; i < image_data.length; i++) {
- var img = document.createElement('div');
- img.setAttribute("class", image_data[i][0] );
- img.src = this.getImagesDir() + image_data[i][1];
- arrowDiv.appendChild(img);
- }
-}
-
-zkPlanner.drawArrow = function(dependency, orig, dest) {
- switch(dependency.getAttribute('type'))
- {
- case zkPlanner.constants.START_START:
- zkPlanner.drawArrowStartStart(dependency, orig, dest);
- break;
- case zkPlanner.constants.END_END:
- zkPlanner.drawArrowEndEnd(dependency, orig, dest);
- break;
- case zkPlanner.constants.END_START:
- default:
- zkPlanner.drawArrowEndStart(dependency, orig, dest);
- }
-}
-
-zkPlanner.drawArrowStartStart = function(arrow, orig, dest){
- var xorig = orig[0] - zkTask.HALF_DEPENDENCY_PADDING;
- var yorig = orig[1] - zkTask.CORNER_WIDTH/2 + zkTask.HALF_DEPENDENCY_PADDING;
- var xend = dest[0] + zkTask.HALF_DEPENDENCY_PADDING;
- var yend = dest[1] - zkTask.HALF_DEPENDENCY_PADDING;
- if (yend < yorig) {
- yorig = orig[1] + zkTask.DEPENDENCY_PADDING;
- }
-
- width1 = zkTask.CORNER_WIDTH;
- width2 = Math.abs(xend - xorig) + zkTask.CORNER_WIDTH;
- height = Math.abs(yend - yorig);
-
- if (xorig > xend) {
- width1 = width2;
- width2 = zkTask.CORNER_WIDTH;
- }
-
- // First segment
- var depstart = this.findImageElement(arrow, 'start');
- depstart.style.left = (xorig - width1) + "px";
- depstart.style.top = yorig + "px";
- depstart.style.width = width1 + "px";
- depstart.style.display = "inline";
-
- // Second segment
- var depmid = this.findImageElement(arrow, 'mid');
- depmid.style.left = depstart.style.left;
- if (yend > yorig) {
- depmid.style.top = yorig + "px";
- } else {
- depmid.style.top = yend + "px";
- }
- depmid.style.height = height + "px";
-
- // Third segment
- var depend = this.findImageElement(arrow, 'end');
- depend.style.left = depstart.style.left;
- depend.style.top = yend + "px";
- depend.style.width = width2 - zkTask.HALF_HEIGHT + "px";
-
- var deparrow = this.findImageElement(arrow, 'arrow');
-// deparrow.src = this.getImagesDir()+"arrow.png";
- deparrow.setAttribute("class", "arrow point-east");
- deparrow.style.top = yend - zkTask.HALF_HEIGHT + "px";
- deparrow.style.left = xend - 15 + "px";
- }
-
-
-zkPlanner.drawArrowEndEnd = function(arrow, orig, dest){
- var xorig = orig[0] - zkTask.DEPENDENCY_PADDING;
- var yorig = orig[1] - zkTask.CORNER_WIDTH/2 + zkTask.HALF_DEPENDENCY_PADDING;
- var xend = dest[0] + zkTask.HALF_DEPENDENCY_PADDING;
- var yend = dest[1] - zkTask.DEPENDENCY_PADDING;
-
- width1 = Math.abs(xend - xorig) + zkTask.CORNER_WIDTH;
- width2 = zkTask.CORNER_WIDTH;
- height = Math.abs(yend - yorig);
-
- if (xorig > xend) {
- width2 = width1;
- width1 = zkTask.CORNER_WIDTH;
- }
-
- // First segment
- var depstart = this.findImageElement(arrow, 'start');
- depstart.style.left = xorig + "px";
- if (yend > yorig) {
- depstart.style.top = yorig + "px";
- } else {
- depstart.style.top = yorig + zkTask.HEIGHT + "px";
- }
- depstart.style.width = width1 + "px";
- depstart.style.display = "inline";
-
- // Second segment
- var depmid = this.findImageElement(arrow, 'mid');
- depmid.style.left = (xorig + width1) + "px";
- if (yend > yorig) {
- depmid.style.top = yorig + "px";
- } else {
- depmid.style.top = yend + "px";
- height = height + 10;
- }
- depmid.style.height = height + "px";
-
- // Third segment
- var depend = this.findImageElement(arrow, 'end');
- depend.style.left = (xorig + width1 - width2) + "px";
- depend.style.top = yend + "px";
- depend.style.width = width2 + "px";
-
- var deparrow = this.findImageElement(arrow, 'arrow');
-// deparrow.src = this.getImagesDir()+"arrow3.png";
- deparrow.setAttribute("class", "arrow point-west");
- deparrow.style.top = yend - 5 + "px";
- deparrow.style.left = xend - 8 + "px";
- }
-
-
-zkPlanner.drawArrowEndStart = function(arrow, orig, dest){
- var xorig = orig[0] - zkTask.DEPENDENCY_PADDING;
- var yorig = orig[1] - zkTask.HALF_DEPENDENCY_PADDING;
- var xend = dest[0] - zkTask.DEPENDENCY_PADDING;
- var yend = dest[1] - zkTask.HALF_DEPENDENCY_PADDING;
-
- var width = (xend - xorig);
- var xmid = xorig + width;
-
- // First segment not used
- var depstart = this.findImageElement(arrow, 'start');
- depstart.style.display = "none";
-
- // Second segment not used
- var depmid = this.findImageElement(arrow, 'mid');
- if (yend > yorig) {
- depmid.style.top = yorig + "px";
- depmid.style.height = yend - yorig + "px";
- } else {
- depmid.style.top = yend + "px";
- depmid.style.height = yorig - yend + "px";
- }
- depmid.style.left = xorig + "px";
-
- var depend = this.findImageElement(arrow, 'end');
- depend.style.top = yend + "px";
- depend.style.left = xorig + "px";
- depend.style.width = width + "px";
-
- if (width < 0) {
- depend.style.left = xend + "px";
- depend.style.width = Math.abs(width) + "px";
- }
- var deparrow = this.findImageElement(arrow, 'arrow');
- if ( width == 0 ) {
- deparrow.setAttribute("class", "arrow point-south");
- deparrow.style.top = yend - 10 + "px";
- deparrow.style.left = xend - 5 + "px";
- if ( yorig > yend ) {
- deparrow.setAttribute("class", "arrow point-north");
- deparrow.style.top = yend + "px";
- }
- } else {
- deparrow.style.top = yend - 5 + "px";
- deparrow.style.left = xend - 10 + "px";
- deparrow.setAttribute("class", "arrow point-east");
- if (width < 0) {
- deparrow.setAttribute("class", "arrow point-west");
- deparrow.style.left = xend + "px";
- deparrow.style.top = yend - 5 + "px";
- }
- }
-}
-
-
-zkDependency = {};
-
-zkDependency.origin = function(dependency) {
- var id = dependency.getAttribute("idTaskOrig");
- return document.getElementById(id);
-}
-
-zkDependency.destination = function(dependency) {
- var id = dependency.getAttribute("idTaskEnd");
- return document.getElementById(id);
-}
-
-zkDependency.setCSSClass = function(dependency,value) {
- dependency.setAttribute("class", value);
-}
-
-zkDependency.draw = function(dependency) {
- var orig = zkPlanner.findPos(this.origin(dependency));
- var dest = zkPlanner.findPos(this.destination(dependency));
-
- // This corner case may depend on dependence type
- offsetX = this.origin(dependency).offsetWidth - zkTask.CORNER_WIDTH;
- separation = orig[0] + this.origin(dependency).offsetWidth - dest[0];
-
- if (separation > 0) {
- offsetX = offsetX - separation;
- }
- if (dependency.getAttribute('type') == zkPlanner.constants.END_START
- || dependency.getAttribute('type') == null) {
- orig[0] = orig[0] + Math.max(0, offsetX);
- } else if (dependency.getAttribute('type') == zkPlanner.constants.END_END) {
- orig[0] = orig[0] + this.origin(dependency).offsetWidth;
- dest[0] = dest[0] + this.destination(dependency).offsetWidth;
- }
-
- orig[1] = orig[1] + zkTask.HEIGHT;
- dest[1] = dest[1] + zkTask.HALF_HEIGHT;
-
- if ((orig[1] > dest[1])) {
- orig[1] = orig[1] - zkTask.HEIGHT;
- }
-
- zkPlanner.drawArrow(dependency, orig, dest);
-
-}
-
-zkDependency.init = function(dependency) {
- zkPlanner.setupArrow(dependency);
- var parent = dependency.parentNode;
- if (parent.id !== "listdependencies") {
- document.getElementById("listdependencies").appendChild(dependency);
- }
- YAHOO.util.Event.onDOMReady(function() {
- var origin = zkDependency.origin(dependency);
- var destination = zkDependency.destination(dependency);
- zkDependency.draw(dependency);
- zkTask.addRelatedDependency(origin, dependency);
- zkTask.addRelatedDependency(destination, dependency);
- });
-}
diff --git a/ganttzk/src/main/resources/web/js/ganttz/dependencylist.js b/ganttzk/src/main/resources/web/js/ganttz/dependencylist.js
deleted file mode 100644
index 6b0f54e89..000000000
--- a/ganttzk/src/main/resources/web/js/ganttz/dependencylist.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * This file is part of NavalPlan
- *
- * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-zkDependencylist = {};
-
-zkDependencylist.init = function (cmp) {
-}
diff --git a/ganttzk/src/main/resources/web/js/ganttz/ganttpanel.js b/ganttzk/src/main/resources/web/js/ganttz/ganttpanel.js
deleted file mode 100644
index 9bc2a9022..000000000
--- a/ganttzk/src/main/resources/web/js/ganttz/ganttpanel.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * This file is part of NavalPlan
- *
- * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-/**
- * Javascript behaviuor for GanttPanel element
- * @author Lorenzo Tilve Álvaro
- */
-zkGanttPanel = {};
-
-SCROLL_DAY = 0;
-
-zkGanttPanel.init = function(cmp){
-}
-
-zkGanttPanel.update_day_scroll = function(cmp,previousPixelPerDay) {
- fromPixelToDay(previousPixelPerDay);
-}
-
-/**
- * Scrolls horizontally the ganttpanel when the zoom has resized the component
- * width.
- */
-zkGanttPanel.scroll_horizontal = function(cmp,daysDisplacement) {
- SCROLL_DAY = daysDisplacement;
-}
-
-zkGanttPanel.move_scroll = function(cmp,diffDays,pixelPerDay) {
- fromDayToPixel(diffDays,pixelPerDay);
-}
-
-function fromPixelToDay(previousPixelPerDay){
- var div1 = document.getElementById ("ganttpanel").parentNode;
- var div2 = div1.parentNode;
- var div3 = div2.parentNode;
-
- var maxHPosition = div3.scrollWidth - div3.clientWidth;
- if( maxHPosition > 0 ){
- var proportion = div3.scrollWidth / maxHPosition;
- var positionInScroll = div3.scrollLeft;
- var positionInPx = positionInScroll * proportion;
- if(positionInPx > 0){
- var position = positionInPx / previousPixelPerDay;
- var day = position;
- SCROLL_DAY = position;
- }
- }
-}
-
-function fromDayToPixel(diffDays,pixelPerDay){
- var div1 = document.getElementById ("ganttpanel").parentNode;
- var div2 = div1.parentNode;
- var div3 = div2.parentNode;
-
- var day = SCROLL_DAY;
- day += parseInt(diffDays);
- var newPosInPx = parseInt(day * pixelPerDay);
- var maxHPosition = div3.scrollWidth - div3.clientWidth;
- var newProportion = div3.scrollWidth / maxHPosition;
- if( newProportion > 0){
- var newPosInScroll = newPosInPx / newProportion;
- if(newPosInScroll < 0){
- newPosInScroll = 0;
- }
- div1.scrollLeft = newPosInScroll;
- div2.scrollLeft = newPosInScroll;
- div3.scrollLeft = newPosInScroll;
- }
-}
\ No newline at end of file
diff --git a/ganttzk/src/main/resources/web/js/ganttz/milestone.js b/ganttzk/src/main/resources/web/js/ganttz/milestone.js
deleted file mode 100644
index bb398cb71..000000000
--- a/ganttzk/src/main/resources/web/js/ganttz/milestone.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * This file is part of NavalPlan
- *
- * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-// making believe to zk that milestone.js exists, so it doesn't throw error.
-// zkMilestone code is in tasklist.js
-
-//This way there can be a schedule showing only tasks or taskcontainers.
diff --git a/ganttzk/src/main/resources/web/js/ganttz/planner.js b/ganttzk/src/main/resources/web/js/ganttz/planner.js
deleted file mode 100644
index d44958b24..000000000
--- a/ganttzk/src/main/resources/web/js/ganttz/planner.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * This file is part of NavalPlan
- *
- * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-/**
- * Javascript behaviuor for Planner elements
- * @author Lorenzo Tilve Álvaro
- */
-zkPlanner = {};
-zkPlanner.constants = {
- END_START: "END_START",
- START_START: "START_START",
- END_END: "END_END"
-};
-
-zkPlanner.getImagesDir = function() {
- return webapp_context_path + "/zkau/web/ganttz/img/";
-}
-
-zkPlanner.init = function(planner){
-
-}
-
-zkPlanner.findImageElement = function(arrow, name) {
- var children = arrow.getElementsByTagName("div");
- for (var i = 0; i < children.length; i++) {
- var child = children[i];
- if (child.getAttribute("class").indexOf(name) != -1) {
- return child;
- }
- }
- return null;
-}
-
-function get_origin() {
- return YAHOO.util.Dom.getXY('listdependencies');
-}
-
-zkPlanner.findPos = function(obj) {
- var pos1 = get_origin();
- var pos2 = YAHOO.util.Dom.getXY(obj.id);
- return [ pos2[0] - pos1[0], pos2[1] - pos1[1] ];
-}
-zkPlanner.findPosForMouseCoordinates = function(x, y){
- /* var pos1 = get_origin() */
- var pos1 = YAHOO.util.Dom.getXY('listtasks');
- return [x - pos1[0], y - pos1[1]];
-}
-
-function getContextPath(element){
- return element.getAttribute('contextpath');
-}
-
-zkPlanner.setupArrow = function(arrowDiv){
-
- var image_data2 = [ "start", "mid", "end", "arrow" ];
- for ( var i = 0; i < image_data2.length; i++) {
- var img = document.createElement('div');
- img.setAttribute("class", image_data[i]+" extra_padding");
- arrowDiv.appendChild(img);
- }
-}
-
-zkPlanner.drawArrow = function(dependency, orig, dest) {
- switch(dependency.getAttribute('type'))
- {
- case zkPlanner.constants.START_START:
- zkPlanner.drawArrowStartStart(dependency, orig, dest);
- break;
- case zkPlanner.constants.END_END:
- zkPlanner.drawArrowEndEnd(dependency, orig, dest);
- break;
- case zkPlanner.constants.END_START:
- default:
- zkPlanner.drawArrowEndStart(dependency, orig, dest);
- }
-}
diff --git a/ganttzk/src/main/resources/web/js/ganttz/scrollSync.js b/ganttzk/src/main/resources/web/js/ganttz/scrollSync.js
deleted file mode 100644
index 0ddf6e168..000000000
--- a/ganttzk/src/main/resources/web/js/ganttz/scrollSync.js
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * This file is part of NavalPlan
- *
- * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-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; });
- };
-
- this.notifyXChangeTo = function(listenerReceivingScroll){
- xChanges.push(function(){
- listenerReceivingScroll(element.scrollLeft);
- });
- };
-
- this.notifyYChangeTo = function(listenerReceivingScroll){
- yChanges.push(function() {
- listenerReceivingScroll(element.scrollTop);
- });
- };
-
- YAHOO.util.Event.addListener(element,'scroll', notifyListeners);
- return this;
-}
\ No newline at end of file
diff --git a/ganttzk/src/main/resources/web/js/ganttz/task.js b/ganttzk/src/main/resources/web/js/ganttz/task.js
deleted file mode 100644
index 0eb51521b..000000000
--- a/ganttzk/src/main/resources/web/js/ganttz/task.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * This file is part of NavalPlan
- *
- * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-// making believe to zk that task.js exists, so it doesn't throw error.
-// zkTask code is in tasklist.js
-
-//This way there can be a schedule showing only tasks or taskcontainers.
\ No newline at end of file
diff --git a/ganttzk/src/main/resources/web/js/ganttz/taskcontainer.js b/ganttzk/src/main/resources/web/js/ganttz/taskcontainer.js
deleted file mode 100644
index 47590119d..000000000
--- a/ganttzk/src/main/resources/web/js/ganttz/taskcontainer.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * This file is part of NavalPlan
- *
- * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-// making believe to zk that taskcontainer.js exists, so it doesn't throw error.
-// zkTaskContainer code is in tasklist.js
-
-//This way there can be a schedule showing only tasks or taskcontainers.
diff --git a/ganttzk/src/main/resources/web/js/ganttz/taskdetails.js b/ganttzk/src/main/resources/web/js/ganttz/taskdetails.js
deleted file mode 100644
index ebbfec776..000000000
--- a/ganttzk/src/main/resources/web/js/ganttz/taskdetails.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * This file is part of NavalPlan
- *
- * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-zkTaskDetails = {};
-
-zkTaskDetails.init = function(cmp) {
-
-}
\ No newline at end of file
diff --git a/ganttzk/src/main/resources/web/js/ganttz/tasklist.js b/ganttzk/src/main/resources/web/js/ganttz/tasklist.js
deleted file mode 100644
index 2cd137eb0..000000000
--- a/ganttzk/src/main/resources/web/js/ganttz/tasklist.js
+++ /dev/null
@@ -1,738 +0,0 @@
-/*
- * This file is part of NavalPlan
- *
- * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-/**
- * Javascript behaviuor for TaskList elements
- *
- * @author Javier Morán Rúa
- * @author Óscar González Fernández
- * @author Lorenzo Tilve Álvaro
- */
-zkTasklist = {};
-
-HEIGHT_PER_ROW = 15; // Ganttz task row height
-HEIGHT_TIME_TRACKER = -10; // Timetracker legend height (80)
-
-MIN_RESOLUTION_X = 600; // Minimun horizontal autoresizable window
-MIN_RESOLUTION_Y = 600; // Minimun vertical autoresizable window
-
-TASKDETAILS_WIDTH = 300; // Taskdetails column fixed width (300)
-TASKDETAILS_HEIGHT = 180; // 260 // Design-relative reservated height for
- // taskdetails (300,260)
-TIMETRACKER_OFFSET_TOP = 120 // Design-relative height above timetracker
-
-FOOTER_HEIGHT = 40; // Design-relative footer height
-
-SCROLLBAR_WIDTH = 15; // Scrollbars default width
-
-DRAGABLE_PADDING = 20; // Drag padding for dependency creation
-
-PERSPECTIVES_WIDTH = 90;
-
-LEGEND_CONTAINER_OFFSET = 75; // Taskdetail width - legend container width
-
-zkTasklist.DELAY = 10 // Delay in ms to show task tooltips
-
-zkTasklist.tooltipTimeout = "";
-
-zkTasklist.showTooltip = function(elem) {
- zkTasklist.tooltipTimeout = setTimeout(function(offset) {
- component = document.getElementById(elem);
- if (component!=null) {
- component.style['display'] = 'block';
- offset = zkTask.xMouse - component.parentNode.offsetLeft - taskdetailsContainer().offsetWidth - PERSPECTIVES_WIDTH + rightpanellayout().scrollLeft;
- component.style['left'] = offset + 'px';
- }
- }, zkTasklist.DELAY);
-}
-
-zkTasklist.showAllTooltips = function(elem) {
- var tooltips = YAHOO.util.Selector.query('.task-labels');
- for (j=0;j MIN_RESOLUTION_X) {
- scroller_y.style["left"] = (window.innerWidth - SCROLLBAR_WIDTH * 3)
- + "px"; // Extra padding
- scroller_x.style["width"] = (window.innerWidth - TASKDETAILS_WIDTH - SCROLLBAR_WIDTH * 2)
- + "px"; // Extra padding
- }
-
- // Shift scroll-y and scroll-x width (Height change)
- if (window.innerHeight > MIN_RESOLUTION_Y) {
- scroller_x.style["top"] = (window.innerHeight - SCROLLBAR_WIDTH * 2 - HEIGHT_TIME_TRACKER)
- + "px";
- scroller_y.style["height"] = (window.innerHeight - TASKDETAILS_HEIGHT + SCROLLBAR_WIDTH * 2)
- + "px";
- listdetails.style["height"] = (window.innerHeight - TASKDETAILS_HEIGHT + SCROLLBAR_WIDTH * 2)
- + "px";
- }
-
- adjustScrollableDimensions();
-}
-
-/*
- * Recalculate component dimensions
- */
-function adjustScrollableDimensions() {
-
- // Timetracker is recalculated when the window is resized and when zoom
- // level is changed as the component is recreated
- // timetracker = document.getElementById('timetracker');
- timetracker = YAHOO.util.Selector.query('#timetracker')[0];
-
- watermark = document.getElementById('watermark');
- scroll_container = document.getElementById('scroll_container');
-
- timetracker.style["width"] = (window.innerWidth - TASKDETAILS_WIDTH - SCROLLBAR_WIDTH * 2)
- + "px";
-
- scroll_container.style["width"] = YAHOO.util.Selector.query('.second_level_')[0].clientWidth +"px";
-
- document.getElementById('timetracker').style["width"] = scroll_container.style["width"];
-
- timetracker.style["height"] =
- Math.max((window.innerHeight - TIMETRACKER_OFFSET_TOP + 26 ),
- document.getElementById('listdetails_container').scrollHeight + 12 )
- +"px";
-
- scroll_container.style["height"] = (window.innerHeight
- - TIMETRACKER_OFFSET_TOP - (FOOTER_HEIGHT + SCROLLBAR_WIDTH * 2))
- + "px";
-
- /* Watermark heigh also needs recalculations due to the recreation
- document.getElementById('watermark').style["height"] = (window.innerHeight
- - TIMETRACKER_OFFSET_TOP - (FOOTER_HEIGHT + SCROLLBAR_WIDTH))
- + "px";
- // Pbs with document.getElementById('watermark').firstChild
- YAHOO.util.Selector.query('.timetracker_column_even')[0].style["height"]= (window.innerHeight
- - TIMETRACKER_OFFSET_TOP - (FOOTER_HEIGHT + SCROLLBAR_WIDTH))
- + "px"; */
-
- // Inner divs need recalculation to adjust to new scroll displacement lenght
- document.getElementById('ganttpanel_inner_scroller_y').style["height"] = document
- .getElementById('listdetails_container').scrollHeight
- + "px";
-
- // Inner divs need recalculation to adjust to new scroll displacement lenght
- document.getElementById('ganttpanel_inner_scroller_x').style["width"] = watermark.offsetWidth
- + "px";
-
-}
-
-/**
- *
- * task.js
- *
- */
-
-zkTask = {};
-
-zkTask.CORNER_WIDTH = 20;
-zkTask.HEIGHT = 10;
-zkTask.HALF_HEIGHT = 5;
-zkTask.DEPENDENCY_PADDING = 4;
-zkTask.HALF_DEPENDENCY_PADDING = 2;
-// Task borders are default 1px
-
-zkTask.getDD = function(cmp) {
- if (typeof (cmp.created_dd) == 'undefined') {
-
- // Create the laned drag&drop component
- cmp.created_dd = new YAHOO.example.DDRegion(cmp.id, '', {
- cont : cmp.parentNode.id
- });
- }
- return cmp.created_dd;
-}
-
-zkTask.init = function(cmp) {
- function addDragSupport() {
- // Configure the drag&drop over the component
- var dd = zkTask.getDD(cmp);
- // when the tasks is being dragged the related dependencies are redrawn
- dd.on('dragEvent', function(ev) {
- // Slight overload. It could be more efficent to overwrite the YUI
- // method
- // that is setting the top property
- cmp.style.top = "";
- if (cmp['relatedDependencies']) {
- for ( var i = 0; i < cmp.relatedDependencies.length; i++) {
- zkDependency.draw(cmp.relatedDependencies[i]);
- }
- }
- }, null, false);
- // Register the event endDragEvent
- dd.on('endDragEvent', function(ev) {
- zkau.send( {
- uuid : cmp.id,
- cmd : "updatePosition",
- data : [ cmp.style.left, cmp.style.top ]
- });
-
- }, null, false);
- }
-
- function addResizeSupport() {
- // Configure the task element to be resizable
- var resize = new YAHOO.util.Resize(cmp.id, {
- handles : [ 'r' ],
- proxy : true
- });
-
- resize.on('resize', function(ev) {
- cmp.style.top = "";
- zkau.send( {
- uuid : cmp.id,
- cmd : "updateSize",
- data : [ cmp.style.width ]
- });
-
- }, zkTask, true);
- }
-
- function movingTasksEnabled() {
- return cmp.getAttribute('movingTasksEnabled') === 'true';
- }
-
- function resizingTasksEnabled() {
- return cmp.getAttribute('resizingTasksEnabled') === 'true';
- }
- // Instead of executing the code directly, a callback is created
- // that will be executed when the user passes the mouse over the task
- var callback = function() {
- if (movingTasksEnabled()) {
- addDragSupport();
- }
- addResizeSupport();
- if (!resizingTasksEnabled()) {
- cmp.className = cmp.className.replace("yui-resize", "");
- }
- // it removes itself, so it's not executed again:
- YAHOO.util.Event.removeListener(cmp, "mouseover", callback);
- }
- YAHOO.util.Event.addListener(cmp, "mouseover", callback);
-};
-
-zkTask.xMouse;
-zkTask.yMouse;
-
-// Listen to mousemove events
-YAHOO.util.Event.on(document.body, 'mousemove', function(e) {
- var arrPos = YAHOO.util.Event.getXY(e);
- zkTask.xMouse = arrPos[0];
- zkTask.yMouse = arrPos[1];
-});
-
-zkTask.setClass = function(cmp, newclass) {
- cmp.className = newclass;
-};
-
-zkTask.setAttr = function(cmp, name, val) {
- switch (name) {
- case "resourcesText":{
- var resourcesTextElement = YAHOO.util.Selector.query(
- '.task-resources .task-resources-inner', cmp, true);
- resourcesTextElement.innerHTML = val;
- return true;
- }
- case "taskTooltipText":{
- var taskTooltipTextElement = YAHOO.util.Selector.query(
- '.task_tooltip', cmp, true);
- taskTooltipTextElement.innerHTML = val;
- return true;
- }
- default: {
- return false;
- }
- }
-};
-
-zkTask.addDependency = function(cmp) {
- zkTask.createArrow(cmp);
-};
-
-zkTask.next = function(elem) {
- do {
- elem = elem.nextSibling;
- } while (elem && elem.nodeType != 1);
- return elem;
-}
-
-zkTask.addRelatedDependency = function(cmp, dependency) {
- if (!cmp['relatedDependencies']) {
- cmp.relatedDependencies = [];
- }
- cmp.relatedDependencies.push(dependency);
-}
-
-zkTask.createArrow = function(cmp) {
- var arrow = document.createElement('div');
- var listtasksNode = document.getElementById("listtasks");
- var listdependenciesNode = document.getElementById("listdependencies");
- var cmpNode = document.getElementById(cmp.id);
-
- cmp.parentNode.appendChild(arrow);
- zkPlanner.setupArrow(arrow);
- var xMouse = zkTask.xMouse;
- var yMouse = zkTask.yMouse;
- function updateArrow() {
- var origin = zkPlanner.findPos(cmp);
- origin[0] = origin[0]
- + Math.max(0, cmpNode.offsetWidth - zkTask.CORNER_WIDTH);
- origin[1] = origin[1] - listtasksNode.offsetTop
- + listdependenciesNode.offsetTop + zkTask.HEIGHT;
- var destination = zkPlanner.findPosForMouseCoordinates(xMouse, yMouse);
- zkPlanner.drawArrow(arrow, origin, destination);
- }
- updateArrow();
- mousemoveListener = function(e) {
- var arrPos = YAHOO.util.Event.getXY(e);
- xMouse = arrPos[0];
- yMouse = arrPos[1];
- updateArrow();
- };
- mouseClickListener = function(e) {
- var parentNode = arrow.parentNode;
- var task;
- if ((task = zkTask.isOverTask(cmp, arrow))) {
- zkau.send( {
- uuid : cmp.id,
- cmd : "addDependency",
- data : [ task.getAttribute('idtask') ]
- });
- }
- parentNode.removeChild(arrow);
- YAHOO.util.Event.removeListener(document.body, 'click',
- mouseClickListener);
- YAHOO.util.Event.removeListener(document.body, 'mousemove',
- mousemoveListener);
- };
- YAHOO.util.Event.on(document.body, 'mousemove', mousemoveListener);
- YAHOO.util.Event.on(document.body, 'click', mouseClickListener);
-};
-
-function findPosX(obj)
-{
- var curleft = 0;
- if(obj.offsetParent)
- while(1)
- {
- curleft += obj.offsetLeft;
- if(!obj.offsetParent)
- break;
- obj = obj.offsetParent;
- }
- else if(obj.x)
- curleft += obj.x;
- return curleft;
-}
-
-function findPosY(obj)
-{
- var curtop = 0;
- if(obj.offsetParent)
- while(1)
- {
- curtop += obj.offsetTop;
- if(!obj.offsetParent)
- break;
- obj = obj.offsetParent;
- }
- else if(obj.y)
- curtop += obj.y;
- return curtop;
-}
-
-
-/*
- * This method is binded to the mouse click listener to determine if it is
- * positioned over any task
- */
-zkTask.isOverTask = function(cmp, arrow) {
-
- var listtasksNode = document.getElementById("listtasks");
- var ganttPanelNode = document.getElementById("ganttpanel");
- var scrollContainerPanelNode = document.getElementById("scroll_container");
- var innerLayout = YAHOO.util.Selector.query('.rightpanellayout div')[0];
-
- arrayTasks = zkTask.getElementsByAttribute(listtasksNode, "div", "z.type",
- "ganttz.task.Task");
- arrayTasks = arrayTasks.concat(zkTask.getElementsByAttribute(listtasksNode,
- "div", "z.type", "ganttz.taskcontainer.TaskContainer"));
-
- a = findPosX(innerLayout);
- b = findPosY(innerLayout);
-
- var xpos = zkTask.xMouse - findPosX(innerLayout)
- + innerLayout.scrollLeft;
- var ypos = zkTask.yMouse - findPosY(innerLayout)
- + innerLayout.scrollTop - listtasksNode.offsetTop;
-
- for ( var i = 0; i < arrayTasks.length; i++) {
- var task = arrayTasks[i];
- /* Added margins to pointing errors */
- if (((xpos) > (task.offsetLeft - DRAGABLE_PADDING))
- && ((xpos) < (task.offsetLeft + task.offsetWidth + DRAGABLE_PADDING))
- && (ypos > (task.offsetTop))
- && (ypos < (task.offsetTop + task.offsetHeight))) {
- return task;
- }
- }
- return false;
-};
-
-zkTask.getElementsByAttribute = function(oElm, strTagName, strAttributeName,
- strAttributeValue) {
-
- var arrElements = (strTagName == "*" && oElm.all) ? oElm.all : oElm
- .getElementsByTagName(strTagName);
- var arrReturnElements = new Array();
- var oAttributeValue = (typeof strAttributeValue != "undefined") ? new RegExp(
- "(^|\\s)" + strAttributeValue + "(\\s|$)")
- : null;
- var oCurrent;
- var oAttribute;
-
- for ( var i = 0; i < arrElements.length; i++) {
- oCurrent = arrElements[i];
- oAttribute = oCurrent.getAttribute
- && oCurrent.getAttribute(strAttributeName);
- if (typeof oAttribute == "string" && oAttribute.length > 0) {
- if (typeof strAttributeValue == "undefined"
- || (oAttributeValue && oAttributeValue.test(oAttribute))) {
- arrReturnElements.push(oCurrent);
- }
- }
- }
- return arrReturnElements;
-}
-
-
-zkTask.moveDeadline = function(cmp, width) {
- var deadlineDiv = zkTask.next(cmp);
- deadlineDiv["style"].left = width;
-}
-
-zkTask.moveConsolidatedline = function(cmp, width) {
- var deadlineDiv = zkTask.next(cmp);
- var consolidatedlineDiv = zkTask.next(deadlineDiv);
- consolidatedlineDiv["style"].left = width;
-}
-
-
-zkTask.resizeCompletionAdvance = function(cmp, width) {
- var completionDiv = YAHOO.util.Selector.query('.completion', cmp, true);
- completionDiv["style"].width = width;
-}
-
-zkTask.resizeCompletion2Advance = function(cmp, width) {
- var completionDiv = YAHOO.util.Selector.query('.completion2', cmp, true);
- completionDiv["style"].width = width;
-}
-
-YAHOO.example.DDRegion = function(id, sGroup, config) {
- this.cont = config.cont;
- YAHOO.example.DDRegion.superclass.constructor.apply(this, arguments);
-};
-
-var myDom = YAHOO.util.Dom, myEvent = YAHOO.util.Event
-
-YAHOO.extend(YAHOO.example.DDRegion, YAHOO.util.DD, {
- cont : null,
- init : function() {
- // Call the parent's init method
- YAHOO.example.DDRegion.superclass.init.apply(this, arguments);
- this.initConstraints();
-
- myEvent.on(window, 'resize', function() {
- this.initConstraints();
- }, this, true);
-},
-initConstraints : function() {
-
- // Get the top, right, bottom and left positions
- var region = myDom.getRegion(this.cont);
-
- // Get the element we are working on
- var el = this.getEl();
-
- // Get the xy position of it
- var xy = myDom.getXY(el);
-
- // Get the width and height
- var width = parseInt(myDom.getStyle(el, 'width'), 10);
- var height = parseInt(myDom.getStyle(el, 'height'), 10);
-
- // Set left to x minus left
- var left = xy[0] - region.left;
-
- // Set right to right minus x minus width
- var right = region.right - xy[0] - width;
-
- // Set top to y minus top
- var top = xy[1] - region.top;
-
- // Set bottom to bottom minus y minus height
- var bottom = region.bottom - xy[1] - height;
-
- // Set the constraints based on the above calculations
- this.setXConstraint(left, right);
- this.setYConstraint(top, bottom);
-}
-});
-
-
-/**
- *
- * taskContainer.js
- *
- */
-
-zkTaskContainer = {};
-
-/*
- * We will not allow taskcontainer move or resize untill its behaviour its
- * clearly specified zkTaskContainer.getDD = function(cmp) { zkTask.getDD(cmp); };
- */
-
-
-zkTaskContainer.init = function(cmp) {
- /*
- * We will not allow taskcontainer move or resize untill its behaviour its
- * clearly specified zkTask.init(cmp);
- */
-};
-
-zkTaskContainer.xMouse;
-zkTaskContainer.yMouse;
-
-// Listen to mousemove events
-YAHOO.util.Event.on(document.body, 'mousemove', function(e) {
- var arrPos = YAHOO.util.Event.getXY(e);
- zkTaskContainer.xMouse = arrPos[0];
- zkTaskContainer.yMouse = arrPos[1];
-});
-
-zkTaskContainer.setAttr = function(cmp, nm, val) {
- zkTask.setAttr(cmp, nm, val);
-};
-
-zkTaskContainer.addDependency = function(cmp) {
- zkTask.addDependency(cmp);
-};
-
-zkTaskContainer.setAttr = function(cmp, name, value) {
- zkTask.setAttr(cmp, name, value);
-};
-
-zkTaskContainer.addRelatedDependency = function(cmp, dependency) {
- zkTask.addRelatedDependency(cmp, dependency);
-};
-
-/*
- * Dependencies with origin in a task container will be redrawn with a different
- * algorithm
- */
-zkTaskContainer.createArrow = function(cmp) {
- zkTask.createArrow(cmp)
-};
-
-zkTaskContainer.isOverTask = function(cmp, arrow) {
- zkTask.isOverTask(cmp, arrow);
-};
-
-zkTaskContainer.getElementsByAttribute = function(oElm, strTagName,
- strAttributeName, strAttributeValue) {
- zkTask.getElementsByAttribute(oElm, strTagName, strAttributeName,
- strAttributeValue);
-}
-
-zkTaskContainer.setClass = function(cmp, newclass) {
- cmp.className = newclass;
-};
-
-zkTaskContainer.legendResize = function(cmp) {
- var taskdetailsContainer = YAHOO.util.Selector.query('.taskdetailsContainer')[0];
- var legendContainer = YAHOO.util.Selector.query('.legend-container')[0];
- var legendContainerEarned = YAHOO.util.Selector.query('.legend-container')[1];
- if ( legendContainer != undefined ) {
- legendContainer.style["width"] = (taskdetailsContainer.clientWidth - LEGEND_CONTAINER_OFFSET )+"px";
- }
- if ( legendContainerEarned != undefined ) {
- legendContainerEarned.style["width"] = (taskdetailsContainer.clientWidth - LEGEND_CONTAINER_OFFSET )+"px";
- }
-
-};
-
-zkTaskContainer.resizeCompletionAdvance = zkTask.resizeCompletionAdvance;
-zkTaskContainer.resizeCompletion2Advance = zkTask.resizeCompletion2Advance;
diff --git a/ganttzk/src/main/resources/web/js/ganttz/timetrackedTableWithLeftPane.js b/ganttzk/src/main/resources/web/js/ganttz/timetrackedTableWithLeftPane.js
deleted file mode 100644
index fa44cad1d..000000000
--- a/ganttzk/src/main/resources/web/js/ganttz/timetrackedTableWithLeftPane.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * This file is part of NavalPlan
- *
- * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-zkTimeTrackedTableWithLeftPane = {};
\ No newline at end of file