tiseza_oss_live/obj/Release/Package/PackageTmp/Scripts/dx-gantt.js

8129 lines
356 KiB
JavaScript
Raw Normal View History

2025-11-15 11:14:31 +00:00
/*!
* DevExpress Gantt (dx-gantt)
* Version: 0.0.27
* Build date: Thu Nov 28 2019
*
* Copyright (c) 2012 - 2019 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExpress licensing here: https://www.devexpress.com/Support/EULAs
*/
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["Gantt"] = factory();
else
root["DevExpress"] = root["DevExpress"] || {}, root["DevExpress"]["Gantt"] = factory();
})(window, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 32);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var JsonUtils = (function () {
function JsonUtils() {
}
JsonUtils.isExists = function (obj) {
return (typeof (obj) != "undefined") && (obj != null);
};
JsonUtils.isValidJson = function (json) {
return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(json.replace(/"(\\.|[^"\\])*"/g, '')));
};
JsonUtils.evalJson = function (json) {
return JsonUtils.isValidJson(json) ? eval("(" + json + ")") : null;
};
return JsonUtils;
}());
exports.JsonUtils = JsonUtils;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Browser_1 = __webpack_require__(12);
var DomUtils = (function () {
function DomUtils() {
}
DomUtils.clientEventRequiresDocScrollCorrection = function () {
var isSafariVerLess3 = Browser_1.Browser.Safari && Browser_1.Browser.Version < 3, isMacOSMobileVerLess51 = Browser_1.Browser.MacOSMobilePlatform && Browser_1.Browser.Version < 5.1;
return Browser_1.Browser.AndroidDefaultBrowser || Browser_1.Browser.AndroidChromeBrowser || !(isSafariVerLess3 || isMacOSMobileVerLess51);
};
DomUtils.getEventX = function (evt) {
return evt.clientX + (this.clientEventRequiresDocScrollCorrection() ? this.getDocumentScrollLeft() : 0);
};
DomUtils.getEventY = function (evt) {
return evt.clientY + (this.clientEventRequiresDocScrollCorrection() ? this.getDocumentScrollTop() : 0);
};
DomUtils.getEventSource = function (evt) {
return evt.srcElement ? evt.srcElement : evt.target;
};
DomUtils.GetKeyCode = function (evt) {
return Browser_1.Browser.NetscapeFamily || Browser_1.Browser.Opera ? evt.which : evt.keyCode;
};
DomUtils.GetIsParent = function (parentElement, element) {
if (!parentElement || !element)
return false;
while (element) {
if (element === parentElement)
return true;
if (element.tagName === "BODY")
return false;
element = element.parentNode;
}
return false;
};
DomUtils.getCurrentStyle = function (element) {
if (document.defaultView && document.defaultView.getComputedStyle)
return document.defaultView.getComputedStyle(element, null);
return window.getComputedStyle(element, null);
};
DomUtils.getTopPaddings = function (element) {
var currentStyle = this.getCurrentStyle(element);
return this.pxToInt(currentStyle.paddingTop);
};
DomUtils.getLeftPadding = function (element) {
var currentStyle = this.getCurrentStyle(element);
return this.pxToInt(currentStyle.paddingLeft);
};
DomUtils.getVerticalBordersWidth = function (element) {
var style = window.getComputedStyle ? window.getComputedStyle(element) : this.getCurrentStyle(element);
var res = 0;
if (style.borderTopStyle != "none")
res += this.pxToFloat(style.borderTopWidth);
if (style.borderBottomStyle != "none")
res += this.pxToFloat(style.borderBottomWidth);
return res;
};
DomUtils.getHorizontalBordersWidth = function (element) {
var style = window.getComputedStyle ? window.getComputedStyle(element) : this.getCurrentStyle(element);
var res = 0;
if (style.borderLeftStyle != "none")
res += this.pxToFloat(style.borderLeftWidth);
if (style.borderRightStyle != "none")
res += this.pxToFloat(style.borderRightWidth);
return res;
};
DomUtils.pxToInt = function (px) {
return this.pxToNumber(px, parseInt);
};
DomUtils.pxToFloat = function (px) {
return this.pxToNumber(px, parseFloat);
};
;
DomUtils.pxToNumber = function (px, parseFunction) {
var result = 0;
if (px != null && px != "") {
try {
var indexOfPx = px.indexOf("px");
if (indexOfPx > -1)
result = parseFunction(px.substr(0, indexOfPx));
}
catch (e) { }
}
return result;
};
DomUtils.getDocumentScrollTop = function () {
var isScrollBodyIE = Browser_1.Browser.IE && this.getCurrentStyle(document.body).overflow == "hidden" && document.body.scrollTop > 0;
if (Browser_1.Browser.WebKitFamily || Browser_1.Browser.Edge || isScrollBodyIE) {
if (Browser_1.Browser.MacOSMobilePlatform)
return window.pageYOffset;
if (Browser_1.Browser.WebKitFamily)
return document.documentElement.scrollTop || document.body.scrollTop;
return document.body.scrollTop;
}
else
return document.documentElement.scrollTop;
};
DomUtils.getDocumentScrollLeft = function () {
var isScrollBodyIE = Browser_1.Browser.IE && this.getCurrentStyle(document.body).overflow == "hidden" && document.body.scrollLeft > 0;
if (Browser_1.Browser.Edge || isScrollBodyIE)
return document.body ? document.body.scrollLeft : document.documentElement.scrollLeft;
if (Browser_1.Browser.WebKitFamily)
return document.documentElement.scrollLeft || document.body.scrollLeft;
return document.documentElement.scrollLeft;
};
DomUtils.getAbsolutePositionY = function (element) {
if (Browser_1.Browser.IE)
return this.getAbsolutePositionY_IE(element);
else if (Browser_1.Browser.Firefox && Browser_1.Browser.Version >= 3)
return this.getAbsolutePositionY_FF3(element);
else if (Browser_1.Browser.Opera)
return this.getAbsolutePositionY_Opera(element);
else if (Browser_1.Browser.NetscapeFamily && (!Browser_1.Browser.Firefox || Browser_1.Browser.Version < 3))
return this.getAbsolutePositionY_NS(element);
else if (Browser_1.Browser.WebKitFamily || Browser_1.Browser.Edge)
return this.getAbsolutePositionY_FF3(element);
else
return this.getAbsolutePositionY_Other(element);
};
DomUtils.getAbsolutePositionY_Opera = function (curEl) {
var isFirstCycle = true;
if (curEl && curEl.tagName == "TR" && curEl.cells.length > 0)
curEl = curEl.cells[0];
var pos = this.getAbsoluteScrollOffset_OperaFF(curEl, false);
while (curEl != null) {
pos += curEl.offsetTop;
if (!isFirstCycle)
pos -= curEl.scrollTop;
curEl = curEl.offsetParent;
isFirstCycle = false;
}
pos += document.body.scrollTop;
return pos;
};
DomUtils.getAbsolutePositionY_IE = function (element) {
if (element == null || Browser_1.Browser.IE && element.parentNode == null)
return 0;
return element.getBoundingClientRect().top + this.getDocumentScrollTop();
};
DomUtils.getAbsolutePositionY_FF3 = function (element) {
if (element == null)
return 0;
var y = element.getBoundingClientRect().top + this.getDocumentScrollTop();
return Math.round(y);
};
DomUtils.getAbsolutePositionY_NS = function (curEl) {
var pos = this.getAbsoluteScrollOffset_OperaFF(curEl, false);
var isFirstCycle = true;
while (curEl != null) {
pos += curEl.offsetTop;
if (!isFirstCycle && curEl.offsetParent != null)
pos -= curEl.scrollTop;
if (!isFirstCycle && Browser_1.Browser.Firefox) {
var style = this.getCurrentStyle(curEl);
if (curEl.tagName == "DIV" && style.overflow != "visible")
pos += this.pxToInt(style.borderTopWidth);
}
isFirstCycle = false;
curEl = curEl.offsetParent;
}
return pos;
};
DomUtils.getAbsolutePositionY_Other = function (curEl) {
var pos = 0;
var isFirstCycle = true;
while (curEl != null) {
pos += curEl.offsetTop;
if (!isFirstCycle && curEl.offsetParent != null)
pos -= curEl.scrollTop;
isFirstCycle = false;
curEl = curEl.offsetParent;
}
return pos;
};
DomUtils.getAbsoluteScrollOffset_OperaFF = function (curEl, isX) {
var pos = 0;
var isFirstCycle = true;
while (curEl != null) {
if (curEl.tagName == "BODY")
break;
var style = this.getCurrentStyle(curEl);
if (style.position == "absolute")
break;
if (!isFirstCycle && curEl.tagName == "DIV" && (style.position == "" || style.position == "static"))
pos -= isX ? curEl.scrollLeft : curEl.scrollTop;
curEl = curEl.parentNode;
isFirstCycle = false;
}
return pos;
};
DomUtils.getAbsolutePositionX = function (element) {
if (Browser_1.Browser.IE)
return this.getAbsolutePositionX_IE(element);
else if (Browser_1.Browser.Firefox && Browser_1.Browser.Version >= 3)
return this.getAbsolutePositionX_FF3(element);
else if (Browser_1.Browser.Opera)
return this.getAbsolutePositionX_Opera(element);
else if (Browser_1.Browser.NetscapeFamily && (!Browser_1.Browser.Firefox || Browser_1.Browser.Version < 3))
return this.getAbsolutePositionX_NS(element);
else if (Browser_1.Browser.WebKitFamily || Browser_1.Browser.Edge)
return this.getAbsolutePositionX_FF3(element);
else
return this.getAbsolutePositionX_Other(element);
};
DomUtils.getAbsolutePositionX_Opera = function (curEl) {
var isFirstCycle = true;
var pos = this.getAbsoluteScrollOffset_OperaFF(curEl, true);
while (curEl != null) {
pos += curEl.offsetLeft;
if (!isFirstCycle)
pos -= curEl.scrollLeft;
curEl = curEl.offsetParent;
isFirstCycle = false;
}
pos += document.body.scrollLeft;
return pos;
};
DomUtils.getAbsolutePositionX_IE = function (element) {
if (element == null || Browser_1.Browser.IE && element.parentNode == null)
return 0;
return element.getBoundingClientRect().left + this.getDocumentScrollLeft();
};
DomUtils.getAbsolutePositionX_FF3 = function (element) {
if (element == null)
return 0;
var x = element.getBoundingClientRect().left + this.getDocumentScrollLeft();
return Math.round(x);
};
DomUtils.getAbsolutePositionX_NS = function (curEl) {
var pos = this.getAbsoluteScrollOffset_OperaFF(curEl, true);
var isFirstCycle = true;
while (curEl != null) {
pos += curEl.offsetLeft;
if (!isFirstCycle && curEl.offsetParent != null)
pos -= curEl.scrollLeft;
if (!isFirstCycle && Browser_1.Browser.Firefox) {
var style = this.getCurrentStyle(curEl);
if (curEl.tagName == "DIV" && style.overflow != "visible")
pos += this.pxToInt(style.borderLeftWidth);
}
isFirstCycle = false;
curEl = curEl.offsetParent;
}
return pos;
};
DomUtils.getAbsolutePositionX_Other = function (curEl) {
var pos = 0;
var isFirstCycle = true;
while (curEl != null) {
pos += curEl.offsetLeft;
if (!isFirstCycle && curEl.offsetParent != null)
pos -= curEl.scrollLeft;
isFirstCycle = false;
curEl = curEl.offsetParent;
}
return pos;
};
DomUtils.GetEvent = function (evt) {
return (typeof (event) != "undefined" && event != null && Browser_1.Browser.IE) ? event : evt;
};
DomUtils.isExists = function (obj) {
return (typeof (obj) != "undefined") && (obj != null);
};
DomUtils.isTouchEvent = function (evt) {
if (!evt)
return false;
return Browser_1.Browser.WebKitTouchUI && DomUtils.isExists(evt.changedTouches);
};
DomUtils.IsLeftButtonPressed = function (evt) {
if (DomUtils.isTouchEvent(evt))
return true;
evt = DomUtils.GetEvent(evt);
if (!evt)
return false;
if (Browser_1.Browser.IE && Browser_1.Browser.Version < 11) {
if (Browser_1.Browser.MSTouchUI)
return true;
return evt.button % 2 == 1;
}
else if (Browser_1.Browser.WebKitFamily) {
if (evt.type === "pointermove")
return evt.buttons === 1;
return evt.which == 1;
}
else if (Browser_1.Browser.NetscapeFamily || Browser_1.Browser.Edge || (Browser_1.Browser.IE && Browser_1.Browser.Version >= 11)) {
if (evt.type === DomUtils.touchMouseMoveEventName)
return evt.buttons === 1;
return evt.which == 1;
}
else if (Browser_1.Browser.Opera)
return evt.button == 0;
return true;
};
DomUtils.touchMouseMoveEventName = Browser_1.Browser.WebKitTouchUI ? "touchmove" : (Browser_1.Browser.Edge && Browser_1.Browser.MSTouchUI && window.PointerEvent ? "pointermove" : "mousemove");
DomUtils.getMouseWheelEventName = function () {
if (Browser_1.Browser.Safari)
return "mousewheel";
if (Browser_1.Browser.NetscapeFamily && Browser_1.Browser.MajorVersion < 17)
return "DOMMouseScroll";
return "wheel";
};
DomUtils.getWheelDelta = function (evt) {
var ret;
if (Browser_1.Browser.NetscapeFamily && Browser_1.Browser.MajorVersion < 17)
ret = -evt.detail;
else if (Browser_1.Browser.Safari)
ret = evt.wheelDelta;
else
ret = -evt.deltaY;
if (Browser_1.Browser.Opera && Browser_1.Browser.Version < 9)
ret = -ret;
return ret;
};
DomUtils.IsRightButtonPressed = function (evt) {
evt = DomUtils.GetEvent(evt);
if (!DomUtils.isExists(evt))
return false;
if (Browser_1.Browser.IE || Browser_1.Browser.Edge) {
if (evt.type === "pointermove")
return evt.buttons === 2;
return evt.button == 2;
}
else if (Browser_1.Browser.NetscapeFamily || Browser_1.Browser.WebKitFamily)
return evt.which == 3;
else if (Browser_1.Browser.Opera)
return evt.button == 1;
return true;
};
DomUtils.addClassNameToElement = function (element, className) {
if (!element || typeof (className) !== "string")
return;
className = DomUtils.trim(className);
if (!DomUtils.elementHasCssClass(element, className) && className !== "") {
var oldClassName = DomUtils.getClassName(element);
DomUtils.setClassName(element, (oldClassName === "") ? className : oldClassName + " " + className);
}
};
DomUtils.removeClassNameFromElement = function (element, className) {
if (!element)
return;
var elementClassName = DomUtils.getClassName(element);
var updClassName = " " + elementClassName + " ";
var newClassName = updClassName.replace(" " + className + " ", " ");
if (updClassName.length != newClassName.length)
DomUtils.setClassName(element, DomUtils.trim(newClassName));
};
DomUtils.elementHasCssClass = function (element, className) {
try {
var elementClasses;
var classList = DomUtils.getClassNameList(element);
if (!classList) {
var elementClassName = DomUtils.getClassName(element);
if (!elementClassName) {
return false;
}
elementClasses = elementClassName.split(" ");
}
var classNames = className.split(" ");
for (var i = classNames.length - 1; i >= 0; i--) {
if (classList) {
if (classList.indexOf(classNames[i]) === -1)
return false;
continue;
}
if (elementClasses.indexOf(classNames[i]) < 0)
return false;
}
return true;
}
catch (e) {
return false;
}
};
DomUtils.getClassName = function (element) {
var result = "";
if (element) {
if (element.tagName === "svg")
result = element.className.baseVal;
else
result = element.className ? element.className : "";
}
return result;
};
DomUtils.getClassNameList = function (element) {
var result = [];
if (element) {
if (element.tagName === "svg")
result = DomUtils.getClassName(element).replace(/^\s+|\s+$/g, '').split(/\s+/);
else
result = element.classList ? [].slice.call(element.classList) : DomUtils.getClassName(element).replace(/^\s+|\s+$/g, '').split(/\s+/);
}
return result;
};
DomUtils.setClassName = function (element, className) {
if (element.tagName === "svg") {
element.className.baseVal = DomUtils.trim(className);
}
else {
element.className = DomUtils.trim(className);
}
};
DomUtils.trim = function (str) {
var result = str;
result = result.replace(/^\s+/, "");
result = result.replace(/\s+$/, "");
return result;
};
return DomUtils;
}());
exports.DomUtils = DomUtils;
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Time_1 = __webpack_require__(23);
var TimeRange_1 = __webpack_require__(24);
var Utils_1 = __webpack_require__(0);
var DateRange_1 = __webpack_require__(10);
var DayOfWeekMonthlyOccurrence_1 = __webpack_require__(25);
var DateTimeUtils = (function () {
function DateTimeUtils() {
}
DateTimeUtils.compareDates = function (date1, date2) {
if (!date1 || !date2)
return -1;
return date2.getTime() - date1.getTime();
};
DateTimeUtils.areDatesEqual = function (date1, date2) {
return this.compareDates(date1, date2) == 0;
};
DateTimeUtils.getMaxDate = function (date1, date2) {
if (!date1 && !date2)
return null;
if (!date1)
return date2;
if (!date2)
return date1;
var diff = this.compareDates(date1, date2);
return diff > 0 ? date2 : date1;
};
DateTimeUtils.getMinDate = function (date1, date2) {
if (!date1 && !date2)
return null;
if (!date1)
return date2;
if (!date2)
return date1;
var diff = this.compareDates(date1, date2);
return diff > 0 ? date1 : date2;
};
DateTimeUtils.getDaysBetween = function (start, end) {
var diff = Math.abs(end.getTime() - start.getTime());
return Math.ceil(diff / this.msInDay);
};
DateTimeUtils.getWeeksBetween = function (start, end) {
var daysBetween = this.getDaysBetween(start, end);
var numWeeks = Math.floor(daysBetween / 7);
if (start.getDay() > end.getDay())
numWeeks++;
return numWeeks;
};
DateTimeUtils.getMonthsDifference = function (start, end) {
var dateDiff = this.compareDates(start, end);
var from = dateDiff >= 0 ? start : end;
var to = dateDiff >= 0 ? end : start;
var yearsDiff = to.getFullYear() - from.getFullYear();
var monthDiff = yearsDiff * 12 + (to.getMonth() - from.getMonth());
return monthDiff;
};
DateTimeUtils.getYearsDifference = function (start, end) {
return Math.abs(end.getFullYear() - start.getFullYear());
};
DateTimeUtils.getDayNumber = function (date) {
return Math.ceil(date.getTime() / this.msInDay);
};
DateTimeUtils.getDateByDayNumber = function (num) {
var date = new Date(num * this.msInDay);
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
return date;
};
DateTimeUtils.addDays = function (date, days) {
return new Date(date.getTime() + days * this.msInDay);
};
DateTimeUtils.checkDayOfMonth = function (day, date) {
return day == date.getDate();
};
DateTimeUtils.checkDayOfWeek = function (day, date) {
return day == date.getDay();
};
DateTimeUtils.checkMonth = function (month, date) {
return month == date.getMonth();
};
DateTimeUtils.checkYear = function (year, date) {
return year == date.getFullYear();
};
DateTimeUtils.checkDayOfWeekOccurrenceInMonth = function (date, dayOfWeek, occurrence) {
var dayOfWeekInMonthDates = this.getSpecificDayOfWeekInMonthDates(dayOfWeek, date.getFullYear(), date.getMonth());
if (occurrence == DayOfWeekMonthlyOccurrence_1.DayOfWeekMonthlyOccurrence.Last)
return this.areDatesEqual(date, dayOfWeekInMonthDates[dayOfWeekInMonthDates.length - 1]);
return this.areDatesEqual(date, dayOfWeekInMonthDates[occurrence]);
};
DateTimeUtils.getFirstDayOfWeekInMonth = function (year, month) {
var date = new Date(year, month, 1);
return date.getDay();
};
DateTimeUtils.getSpecificDayOfWeekInMonthDates = function (dayOfWeek, year, month) {
var firstDayOfWeekInMonth = this.getFirstDayOfWeekInMonth(year, month);
var diffDays = dayOfWeek >= firstDayOfWeekInMonth ? dayOfWeek - firstDayOfWeekInMonth : dayOfWeek + 7 - firstDayOfWeekInMonth;
var res = new Array();
var specificDayOfWeekDate = new Date(year, month, diffDays + 1);
while (specificDayOfWeekDate.getMonth() == month) {
res.push(specificDayOfWeekDate);
specificDayOfWeekDate = this.addDays(specificDayOfWeekDate, 7);
}
return res;
};
DateTimeUtils.getSpecificDayOfWeekInMonthDate = function (dayOfWeek, year, month, occurrence) {
var dates = this.getSpecificDayOfWeekInMonthDates(dayOfWeek, year, month);
if (occurrence == DayOfWeekMonthlyOccurrence_1.DayOfWeekMonthlyOccurrence.Last)
return dates[dates.length - 1];
return dates[occurrence];
};
DateTimeUtils.checkValidDayInMonth = function (year, month, day) {
if (day < 1 || day > 31 || (new Date(year, month, day)).getMonth() != month)
return false;
return true;
};
DateTimeUtils.getNextMonth = function (month, inc) {
if (inc === void 0) { inc = 1; }
return (month + inc) % 12;
};
DateTimeUtils.convertToDate = function (src) {
if (src instanceof Date)
return new Date(src);
var ms = Date.parse(src);
if (!isNaN(ms))
return new Date(ms);
return null;
};
DateTimeUtils.convertTimeRangeToDateRange = function (timeRange, dayNumber) {
var date = this.getDateByDayNumber(dayNumber);
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var startT = timeRange.start;
var start = new Date(year, month, day, startT.hour, startT.min, startT.sec, startT.msec);
var endT = timeRange.end;
var end = new Date(year, month, day, endT.hour, endT.min, endT.sec, endT.msec);
return new DateRange_1.DateRange(start, end);
};
DateTimeUtils.convertToTimeRanges = function (src) {
var _this = this;
if (src instanceof Array)
return src.map(function (x) { return _this.convertToTimeRange(x); });
return this.parseTimeRanges(src);
};
DateTimeUtils.convertToTimeRange = function (src) {
if (!src)
return null;
if (src instanceof TimeRange_1.TimeRange)
return src;
if (Utils_1.JsonUtils.isExists(src.start) && Utils_1.JsonUtils.isExists(src.end))
return new TimeRange_1.TimeRange(this.convertToTime(src.start), this.convertToTime(src.end));
return this.parseTimeRange(src);
};
DateTimeUtils.convertToTime = function (src) {
if (!src)
return null;
if (src instanceof Time_1.Time)
return src;
if (src instanceof Date)
return this.getTimeGromJsDate(src);
return this.parseTime(src);
};
DateTimeUtils.parseTimeRanges = function (src) {
var _this = this;
if (!src)
return null;
var parts = src.split(/;|,/);
return parts.map(function (p) { return _this.parseTimeRange(p); }).filter(function (r) { return !!r; });
};
DateTimeUtils.parseTimeRange = function (src) {
if (!src)
return null;
var parts = src.split("-");
var start = parts[0];
var end = parts[1];
if (Utils_1.JsonUtils.isExists(start) && Utils_1.JsonUtils.isExists(end))
return new TimeRange_1.TimeRange(this.parseTime(start), this.parseTime(end));
return null;
};
DateTimeUtils.parseTime = function (src) {
if (!src)
return null;
var parts = src.split(":");
var h = parseInt(parts[0]) || 0;
var m = parseInt(parts[1]) || 0;
var s = parseInt(parts[2]) || 0;
var ms = parseInt(parts[3]) || 0;
return new Time_1.Time(h, m, s, ms);
};
DateTimeUtils.getTimeGromJsDate = function (date) {
if (!date)
return null;
var h = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
var ms = date.getMilliseconds();
return new Time_1.Time(h, m, s, ms);
};
DateTimeUtils.caclTimeDifference = function (time1, time2) {
return time2.getTimeInMilleconds() - time1.getTimeInMilleconds();
};
DateTimeUtils.areTimesEqual = function (time1, time2) {
return this.caclTimeDifference(time1, time2) == 0;
};
DateTimeUtils.getMaxTime = function (time1, time2) {
if (!time1 && !time2)
return null;
if (!time1)
return time2;
if (!time2)
return time1;
var diff = this.caclTimeDifference(time1, time2);
return diff > 0 ? time2 : time1;
};
DateTimeUtils.getMinTime = function (time1, time2) {
if (!time1 && !time2)
return null;
if (!time1)
return time2;
if (!time2)
return time1;
var diff = this.caclTimeDifference(time1, time2);
return diff > 0 ? time1 : time2;
};
DateTimeUtils.getLastTimeOfDay = function () {
return new Time_1.Time(23, 59, 59, 999);
};
DateTimeUtils.msInDay = 24 * 3600 * 1000;
return DateTimeUtils;
}());
exports.DateTimeUtils = DateTimeUtils;
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Point = (function () {
function Point(x, y) {
this.x = null;
this.y = null;
if (x !== undefined)
this.x = x;
if (y !== undefined)
this.y = y;
}
return Point;
}());
exports.Point = Point;
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Utils_1 = __webpack_require__(0);
var DataObject = (function () {
function DataObject() {
this.internalId = this.generateGuid();
}
DataObject.prototype.assignFromObject = function (sourceObj) {
if (!Utils_1.JsonUtils.isExists(sourceObj))
return;
if (Utils_1.JsonUtils.isExists(sourceObj.id)) {
this.id = sourceObj.id;
this.internalId = String(sourceObj.id);
}
};
DataObject.prototype.generateGuid = function () {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
};
return DataObject;
}());
exports.DataObject = DataObject;
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var CommandBase = (function () {
function CommandBase(control) {
this.control = control;
}
Object.defineProperty(CommandBase.prototype, "modelManipulator", {
get: function () { return this.control.modelManipulator; },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandBase.prototype, "history", {
get: function () { return this.control.history; },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandBase.prototype, "state", {
get: function () {
if (!this._state)
this._state = this.getState();
return this._state;
},
enumerable: true,
configurable: true
});
CommandBase.prototype.execute = function () {
var parameters = [];
for (var _i = 0; _i < arguments.length; _i++) {
parameters[_i] = arguments[_i];
}
if (!this.state.enabled)
return false;
return this.executeInternal.apply(this, parameters);
};
CommandBase.prototype.isEnabled = function () {
return this.control.settings.editing.enabled;
};
CommandBase.prototype.executeInternal = function () {
var parameters = [];
for (var _i = 0; _i < arguments.length; _i++) {
parameters[_i] = arguments[_i];
}
throw new Error("Not implemented");
};
;
return CommandBase;
}());
exports.CommandBase = CommandBase;
var SimpleCommandState = (function () {
function SimpleCommandState(enabled, value) {
this.visible = true;
this.enabled = enabled;
this.value = value;
}
return SimpleCommandState;
}());
exports.SimpleCommandState = SimpleCommandState;
/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Utils_1 = __webpack_require__(0);
var CollectionBase = (function () {
function CollectionBase() {
this._items = new Array();
this._isGanttCollection = true;
}
CollectionBase.prototype.add = function (element) {
if (!Utils_1.JsonUtils.isExists(element))
return;
if (!!this.getItemById(element.internalId))
throw "The collection item with id ='" + element.internalId + "' already exists.";
this._items.push(element);
};
CollectionBase.prototype.addRange = function (range) {
for (var i = 0; i < range.length; i++)
this.add(range[i]);
};
CollectionBase.prototype.remove = function (element) {
var index = this._items.indexOf(element);
if (index > -1 && index < this._items.length)
this._items.splice(index, 1);
};
CollectionBase.prototype.clear = function () {
this._items.splice(0, this._items.length);
};
Object.defineProperty(CollectionBase.prototype, "items", {
get: function () {
return this._items.slice();
},
set: function (value) {
if (value)
this._items = value.slice();
},
enumerable: true,
configurable: true
});
Object.defineProperty(CollectionBase.prototype, "length", {
get: function () {
return this._items.length;
},
enumerable: true,
configurable: true
});
CollectionBase.prototype.getItem = function (index) {
if (index > -1 && index < this._items.length)
return this._items[index];
return null;
};
CollectionBase.prototype.getItemById = function (id) {
return this._items.filter(function (val) { return val.internalId === id; })[0];
};
CollectionBase.prototype.getItemByPublicId = function (id) {
return this._items.filter(function (val) { return val.id === id || val.id.toString() === id; })[0];
};
CollectionBase.prototype.assign = function (sourceCollection) {
if (!Utils_1.JsonUtils.isExists(sourceCollection))
return;
this.items = sourceCollection.items;
};
CollectionBase.prototype.importFromObject = function (source) {
if (!Utils_1.JsonUtils.isExists(source))
return;
this.clear();
if (source._isGanttCollection)
this.assign(source);
else if (source instanceof Array) {
this.importFromArray(source);
}
else {
this.createItemFromObjectAndAdd(source);
}
};
CollectionBase.prototype.createItemFromObjectAndAdd = function (source) {
if (Utils_1.JsonUtils.isExists(source)) {
var item = this.createItem();
item.assignFromObject(source);
this.add(item);
}
};
CollectionBase.prototype.importFromArray = function (values) {
for (var i = 0; i < values.length; i++)
this.createItemFromObjectAndAdd(values[i]);
};
CollectionBase.prototype.importFromJSON = function (json) {
this.importFromObject(Utils_1.JsonUtils.evalJson(json));
};
return CollectionBase;
}());
exports.CollectionBase = CollectionBase;
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ViewType;
(function (ViewType) {
ViewType[ViewType["TenMinutes"] = 0] = "TenMinutes";
ViewType[ViewType["Hours"] = 1] = "Hours";
ViewType[ViewType["SixHours"] = 2] = "SixHours";
ViewType[ViewType["Days"] = 3] = "Days";
ViewType[ViewType["Weeks"] = 4] = "Weeks";
ViewType[ViewType["Months"] = 5] = "Months";
ViewType[ViewType["Quarter"] = 6] = "Quarter";
ViewType[ViewType["Years"] = 7] = "Years";
ViewType[ViewType["FiveYears"] = 8] = "FiveYears";
})(ViewType = exports.ViewType || (exports.ViewType = {}));
var Position;
(function (Position) {
Position[Position["Left"] = 0] = "Left";
Position[Position["Top"] = 1] = "Top";
Position[Position["Right"] = 2] = "Right";
Position[Position["Bottom"] = 3] = "Bottom";
})(Position = exports.Position || (exports.Position = {}));
var TaskTitlePosition;
(function (TaskTitlePosition) {
TaskTitlePosition[TaskTitlePosition["Inside"] = 0] = "Inside";
TaskTitlePosition[TaskTitlePosition["Outside"] = 1] = "Outside";
TaskTitlePosition[TaskTitlePosition["None"] = 2] = "None";
})(TaskTitlePosition = exports.TaskTitlePosition || (exports.TaskTitlePosition = {}));
/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DomUtils_1 = __webpack_require__(1);
var Point_1 = __webpack_require__(3);
var Browser_1 = __webpack_require__(12);
var GridLayoutCalculator_1 = __webpack_require__(16);
var MouseEventSource;
(function (MouseEventSource) {
MouseEventSource[MouseEventSource["TaskArea"] = 0] = "TaskArea";
MouseEventSource[MouseEventSource["TaskEdit_Frame"] = 1] = "TaskEdit_Frame";
MouseEventSource[MouseEventSource["TaskEdit_Progress"] = 2] = "TaskEdit_Progress";
MouseEventSource[MouseEventSource["TaskEdit_Start"] = 3] = "TaskEdit_Start";
MouseEventSource[MouseEventSource["TaskEdit_End"] = 4] = "TaskEdit_End";
MouseEventSource[MouseEventSource["TaskEdit_DependencyStart"] = 5] = "TaskEdit_DependencyStart";
MouseEventSource[MouseEventSource["TaskEdit_DependencyFinish"] = 6] = "TaskEdit_DependencyFinish";
MouseEventSource[MouseEventSource["Successor_Wrapper"] = 7] = "Successor_Wrapper";
MouseEventSource[MouseEventSource["Successor_DependencyStart"] = 8] = "Successor_DependencyStart";
MouseEventSource[MouseEventSource["Successor_DependencyFinish"] = 9] = "Successor_DependencyFinish";
})(MouseEventSource = exports.MouseEventSource || (exports.MouseEventSource = {}));
var TaskAreaManager = (function () {
function TaskAreaManager(ganttView) {
this.ganttView = ganttView;
this.eventManager = ganttView.eventManager;
this.mousePosition = new Point_1.Point(-1, -1);
this.initMouseEvents();
}
TaskAreaManager.prototype.initMouseEvents = function () {
var _this = this;
this.ganttView.taskArea.addEventListener("click", function (evt) { _this.onTaskAreaClick(evt); });
this.ganttView.taskArea.addEventListener("scroll", this.ganttView.updateView.bind(this.ganttView));
this.ganttView.taskArea.addEventListener("contextmenu", function (evt) { _this.onContextMenu(evt); });
this.ganttView.taskArea.addEventListener(DomUtils_1.DomUtils.getMouseWheelEventName(), function (evt) { _this.onMouseWheel(evt); });
this.ganttView.taskArea.addEventListener("mousedown", function (evt) { _this.onMouseDown(evt); });
document.addEventListener("mousemove", function (evt) { _this.onDocumentMouseMove(evt); });
document.addEventListener("mouseup", function (evt) { _this.onDocumentMouseUp(evt); });
document.addEventListener("keydown", function (evt) { _this.onDocumentKeyDown(evt); });
};
TaskAreaManager.prototype.onMouseDown = function (evt) {
this.eventManager.onMouseDown(evt);
this.preventSelect = false;
this.mousePosition = new Point_1.Point(evt.clientX, evt.clientY);
};
TaskAreaManager.prototype.onDocumentMouseUp = function (evt) {
var _this = this;
this.ganttView.isFocus = DomUtils_1.DomUtils.GetIsParent(this.ganttView.taskArea, DomUtils_1.DomUtils.getEventSource(evt)) ? true : false;
if (this.ganttView.isFocus && !this.preventSelect && this.ganttView.settings.allowSelectTask && !this.isConnectorLine(evt))
setTimeout(function () { _this.changeTaskSelection(_this.getClickedTaskIndex(evt)); }, 0);
this.eventManager.onMouseUp(evt);
};
TaskAreaManager.prototype.onDocumentMouseMove = function (evt) {
if (this.mousePosition.x != evt.clientX || this.mousePosition.y != evt.clientY) {
this.eventManager.onMouseMove(evt);
this.preventSelect = true;
}
};
TaskAreaManager.prototype.onMouseWheel = function (evt) {
this.eventManager.onMouseWheel(evt);
};
TaskAreaManager.prototype.onDocumentKeyDown = function (evt) {
this.eventManager.onKeyDown(evt);
};
TaskAreaManager.prototype.onContextMenu = function (evt) {
if (evt.stopPropagation)
evt.stopPropagation();
if (evt.preventDefault)
evt.preventDefault();
if (Browser_1.Browser.WebKitFamily)
evt.returnValue = false;
this.ganttView.ganttOwner.showPopupMenu(new Point_1.Point(DomUtils_1.DomUtils.getEventX(evt), DomUtils_1.DomUtils.getEventY(evt)));
};
TaskAreaManager.prototype.getClickedTaskIndex = function (evt) {
var y = DomUtils_1.DomUtils.getEventY(evt);
var taskAreaY = DomUtils_1.DomUtils.getAbsolutePositionY(this.ganttView.taskArea);
var relativeY = y - taskAreaY;
return Math.floor(relativeY / this.ganttView.tickSize.height);
};
TaskAreaManager.prototype.onTaskElementHover = function (evt) {
var hoveredTaskIndex = this.getClickedTaskIndex(evt);
this.ganttView.taskEditController.show(hoveredTaskIndex);
};
TaskAreaManager.prototype.changeTaskSelection = function (index) {
var clickedTask = this.ganttView.viewModel.items[index];
if (clickedTask) {
this.ganttView.unselectCurrentSelectedTask();
this.ganttView.ganttOwner.changeGanttTaskSelection(clickedTask.task.id, true);
this.ganttView.selectTask(clickedTask.task.internalId);
}
};
TaskAreaManager.prototype.onTaskAreaClick = function (evt) {
var now = new Date(Date.now());
var clickedTaskIndex = this.getClickedTaskIndex(evt);
if (this.time && now.getTime() - this.time.getTime() < TaskAreaManager.DBLCLICK_INTERVAL) {
var clickedTask = this.ganttView.viewModel.items[clickedTaskIndex];
this.ganttView.commandManager.showTaskEditDialog.execute(clickedTask.task);
}
this.time = now;
};
TaskAreaManager.prototype.isConnectorLine = function (evt) {
var source = DomUtils_1.DomUtils.getEventSource(evt);
return DomUtils_1.DomUtils.getClassNameList(source).indexOf(GridLayoutCalculator_1.GridLayoutCalculator.CLASSNAMES.CONNECTOR_HORIZONTAL) >= 0 ||
DomUtils_1.DomUtils.getClassNameList(source).indexOf(GridLayoutCalculator_1.GridLayoutCalculator.CLASSNAMES.CONNECTOR_VERTICAL) >= 0;
};
TaskAreaManager.DBLCLICK_INTERVAL = 300;
return TaskAreaManager;
}());
exports.TaskAreaManager = TaskAreaManager;
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var HistoryItem = (function () {
function HistoryItem(modelManipulator) {
this.modelManipulator = modelManipulator;
}
return HistoryItem;
}());
exports.HistoryItem = HistoryItem;
var CompositionHistoryItem = (function (_super) {
__extends(CompositionHistoryItem, _super);
function CompositionHistoryItem() {
var _this = _super.call(this, null) || this;
_this.historyItems = [];
return _this;
}
CompositionHistoryItem.prototype.redo = function () {
var item;
for (var i = 0; item = this.historyItems[i]; i++)
item.redo();
};
CompositionHistoryItem.prototype.undo = function () {
var item;
for (var i = this.historyItems.length - 1; item = this.historyItems[i]; i--)
item.undo();
};
CompositionHistoryItem.prototype.add = function (historyItem) {
if (historyItem == null)
throw new Error("Can't add null HistoryItem");
this.historyItems.push(historyItem);
};
return CompositionHistoryItem;
}(HistoryItem));
exports.CompositionHistoryItem = CompositionHistoryItem;
/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DateRange = (function () {
function DateRange(start, end) {
this.start = start;
this.end = end;
}
return DateRange;
}());
exports.DateRange = DateRange;
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var DataObject_1 = __webpack_require__(4);
var DayOfWeek_1 = __webpack_require__(47);
var DayOfWeekMonthlyOccurrence_1 = __webpack_require__(25);
var Month_1 = __webpack_require__(48);
var Utils_1 = __webpack_require__(0);
var DateTimeUtils_1 = __webpack_require__(2);
var RecurrenceFactory_1 = __webpack_require__(26);
var RecurrenceBase = (function (_super) {
__extends(RecurrenceBase, _super);
function RecurrenceBase(start, end, interval, occurrenceCount) {
if (start === void 0) { start = null; }
if (end === void 0) { end = null; }
if (interval === void 0) { interval = 1; }
if (occurrenceCount === void 0) { occurrenceCount = 0; }
var _this = _super.call(this) || this;
_this._start = null;
_this._end = null;
_this._interval = 1;
_this._occurrenceCount = 0;
_this._dayOfWeek = 0;
_this._day = 1;
_this._dayOfWeekOccurrence = 0;
_this._month = 0;
_this._calculateByDayOfWeek = false;
_this.start = start;
_this.end = end;
_this.interval = interval;
_this.occurrenceCount = occurrenceCount;
return _this;
}
RecurrenceBase.prototype.assignFromObject = function (sourceObj) {
if (Utils_1.JsonUtils.isExists(sourceObj)) {
_super.prototype.assignFromObject.call(this, sourceObj);
this.start = DateTimeUtils_1.DateTimeUtils.convertToDate(sourceObj.start);
this.end = DateTimeUtils_1.DateTimeUtils.convertToDate(sourceObj.end);
if (Utils_1.JsonUtils.isExists(sourceObj.interval))
this.interval = sourceObj.interval;
if (Utils_1.JsonUtils.isExists(sourceObj.occurrenceCount))
this.occurrenceCount = sourceObj.occurrenceCount;
if (Utils_1.JsonUtils.isExists(sourceObj.dayOfWeek))
this.dayOfWeekInternal = RecurrenceFactory_1.RecurrenceFactory.getEnumValue(DayOfWeek_1.DayOfWeek, sourceObj.dayOfWeek);
if (Utils_1.JsonUtils.isExists(sourceObj.day))
this.dayInternal = sourceObj.day;
if (Utils_1.JsonUtils.isExists(sourceObj.dayOfWeekOccurrence))
this.dayOfWeekOccurrenceInternal = RecurrenceFactory_1.RecurrenceFactory.getEnumValue(DayOfWeekMonthlyOccurrence_1.DayOfWeekMonthlyOccurrence, sourceObj.dayOfWeekOccurrence);
if (Utils_1.JsonUtils.isExists(sourceObj.month))
this.monthInternal = RecurrenceFactory_1.RecurrenceFactory.getEnumValue(Month_1.Month, sourceObj.month);
if (Utils_1.JsonUtils.isExists(sourceObj.calculateByDayOfWeek))
this._calculateByDayOfWeek = !!sourceObj.calculateByDayOfWeek;
}
};
RecurrenceBase.prototype.calculatePoints = function (start, end) {
if (!start || !end)
return new Array();
var from = DateTimeUtils_1.DateTimeUtils.getMaxDate(start, this._start);
var to = DateTimeUtils_1.DateTimeUtils.getMinDate(end, this._end);
if (this._occurrenceCount > 0)
return this.calculatePointsByOccurrenceCount(from, to);
return this.calculatePointsByDateRange(from, to);
};
RecurrenceBase.prototype.calculatePointsByOccurrenceCount = function (start, end) {
var points = new Array();
var point = this.getFirstPoint(start);
while (!!point && points.length < this._occurrenceCount && DateTimeUtils_1.DateTimeUtils.compareDates(point, end) >= 0) {
if (this.isRecurrencePoint(point))
points.push(point);
point = this.getNextPoint(point);
}
return points;
};
RecurrenceBase.prototype.calculatePointsByDateRange = function (start, end) {
var points = new Array();
var point = this.getFirstPoint(start);
while (!!point && DateTimeUtils_1.DateTimeUtils.compareDates(point, end) >= 0) {
if (this.isRecurrencePoint(point))
points.push(point);
point = this.getNextPoint(point);
}
return points;
};
RecurrenceBase.prototype.getFirstPoint = function (start) {
if (this.isRecurrencePoint(start))
return start;
return this.getNextPoint(start);
};
;
RecurrenceBase.prototype.isRecurrencePoint = function (date) {
return this.isDateInRange(date) && this.checkDate(date) && (!this.useIntervalInCalc() || this.checkInterval(date));
};
RecurrenceBase.prototype.isDateInRange = function (date) {
if (!date)
return false;
if (this._start && DateTimeUtils_1.DateTimeUtils.compareDates(this.start, date) < 0)
return false;
if (this._occurrenceCount == 0 && this.end && DateTimeUtils_1.DateTimeUtils.compareDates(date, this.end) < 0)
return false;
return true;
};
RecurrenceBase.prototype.useIntervalInCalc = function () {
return this.interval > 1 && !!this._start;
};
RecurrenceBase.prototype.getNextPoint = function (date) {
if (!this.isDateInRange(date))
return null;
if (this.useIntervalInCalc())
return this.calculatePointByInterval(date);
return this.calculateNearestPoint(date);
};
;
RecurrenceBase.prototype.getSpecDayInMonth = function (year, month) {
var date;
if (this._calculateByDayOfWeek)
date = DateTimeUtils_1.DateTimeUtils.getSpecificDayOfWeekInMonthDate(this.dayOfWeekInternal, year, month, this.dayOfWeekOccurrenceInternal);
else
date = new Date(year, month, this.dayInternal);
return date;
};
Object.defineProperty(RecurrenceBase.prototype, "dayInternal", {
get: function () { return this._day; },
set: function (value) {
if (value > 0 && value <= 31)
this._day = value;
},
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(RecurrenceBase.prototype, "dayOfWeekInternal", {
get: function () { return this._dayOfWeek; },
set: function (dayOfWeek) {
if (dayOfWeek >= DayOfWeek_1.DayOfWeek.Sunday && dayOfWeek <= DayOfWeek_1.DayOfWeek.Saturday)
this._dayOfWeek = dayOfWeek;
},
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(RecurrenceBase.prototype, "dayOfWeekOccurrenceInternal", {
get: function () {
return this._dayOfWeekOccurrence;
},
set: function (value) {
if (value >= DayOfWeekMonthlyOccurrence_1.DayOfWeekMonthlyOccurrence.First && value <= DayOfWeekMonthlyOccurrence_1.DayOfWeekMonthlyOccurrence.Last)
this._dayOfWeekOccurrence = value;
},
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(RecurrenceBase.prototype, "monthInternal", {
get: function () { return this._month; },
set: function (value) {
if (value >= Month_1.Month.January && value <= Month_1.Month.December)
this._month = value;
},
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(RecurrenceBase.prototype, "start", {
get: function () { return this._start; },
set: function (date) {
if (!date)
return;
this._start = date;
if (!!this._end && date > this._end)
this._end = date;
},
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(RecurrenceBase.prototype, "end", {
get: function () { return this._end; },
set: function (date) {
if (!date)
return;
this._end = date;
if (!!this._start && date < this._start)
this._start = date;
},
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(RecurrenceBase.prototype, "occurrenceCount", {
get: function () { return this._occurrenceCount; },
set: function (value) {
if (value < 0)
value = 0;
this._occurrenceCount = value;
},
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(RecurrenceBase.prototype, "interval", {
get: function () { return this._interval; },
set: function (value) {
if (value > 0)
this._interval = value;
},
enumerable: true,
configurable: true
});
;
;
return RecurrenceBase;
}(DataObject_1.DataObject));
exports.RecurrenceBase = RecurrenceBase;
/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Browser = (function () {
function Browser() {
}
Browser.IdentUserAgent = function (userAgent, ignoreDocumentMode) {
if (ignoreDocumentMode === void 0) { ignoreDocumentMode = false; }
var browserTypesOrderedList = ["Mozilla", "IE", "Firefox", "Netscape", "Safari", "Chrome", "Opera", "Opera10", "Edge"];
var defaultBrowserType = "IE";
var defaultPlatform = "Win";
var defaultVersions = { Safari: 2, Chrome: 0.1, Mozilla: 1.9, Netscape: 8, Firefox: 2, Opera: 9, IE: 6, Edge: 12 };
if (!userAgent || userAgent.length == 0) {
Browser.fillUserAgentInfo(browserTypesOrderedList, defaultBrowserType, defaultVersions[defaultBrowserType], defaultPlatform);
return;
}
userAgent = userAgent.toLowerCase();
Browser.indentPlatformMajorVersion(userAgent);
try {
var platformIdentStrings = {
"Windows": "Win",
"Macintosh": "Mac",
"Mac OS": "Mac",
"Mac_PowerPC": "Mac",
"cpu os": "MacMobile",
"cpu iphone os": "MacMobile",
"Android": "Android",
"!Windows Phone": "WinPhone",
"!WPDesktop": "WinPhone",
"!ZuneWP": "WinPhone"
};
var optSlashOrSpace = "(?:/|\\s*)?";
var versionString = "(\\d+)(?:\\.((?:\\d+?[1-9])|\\d)0*?)?";
var optVersion = "(?:" + versionString + ")?";
var patterns = {
Safari: "applewebkit(?:.*?(?:version/" + versionString + "[\\.\\w\\d]*?(?:\\s+mobile\/\\S*)?\\s+safari))?",
Chrome: "(?:chrome|crios)(?!frame)" + optSlashOrSpace + optVersion,
Mozilla: "mozilla(?:.*rv:" + optVersion + ".*Gecko)?",
Netscape: "(?:netscape|navigator)\\d*/?\\s*" + optVersion,
Firefox: "firefox" + optSlashOrSpace + optVersion,
Opera: "(?:opera|\sopr)" + optSlashOrSpace + optVersion,
Opera10: "opera.*\\s*version" + optSlashOrSpace + optVersion,
IE: "msie\\s*" + optVersion,
Edge: "edge" + optSlashOrSpace + optVersion
};
var browserType;
var version = -1;
for (var i = 0; i < browserTypesOrderedList.length; i++) {
var browserTypeCandidate = browserTypesOrderedList[i];
var regExp = new RegExp(patterns[browserTypeCandidate], "i");
if (regExp.compile)
regExp.compile(patterns[browserTypeCandidate], "i");
var matches = regExp.exec(userAgent);
if (matches && matches.index >= 0) {
if (browserType == "IE" && version >= 11 && browserTypeCandidate == "Safari")
continue;
browserType = browserTypeCandidate;
if (browserType == "Opera10")
browserType = "Opera";
var tridentPattern = "trident" + optSlashOrSpace + optVersion;
version = Browser.GetBrowserVersion(userAgent, matches, tridentPattern, Browser.getIECompatibleVersionString());
if (browserType == "Mozilla" && version >= 11)
browserType = "IE";
}
}
if (!browserType)
browserType = defaultBrowserType;
var browserVersionDetected = version != -1;
if (!browserVersionDetected)
version = defaultVersions[browserType];
var platform;
var minOccurenceIndex = Number.MAX_VALUE;
for (var identStr in platformIdentStrings) {
if (!platformIdentStrings.hasOwnProperty(identStr))
continue;
var importantIdent = identStr.substr(0, 1) == "!";
var occurenceIndex = userAgent.indexOf((importantIdent ? identStr.substr(1) : identStr).toLowerCase());
if (occurenceIndex >= 0 && (occurenceIndex < minOccurenceIndex || importantIdent)) {
minOccurenceIndex = importantIdent ? 0 : occurenceIndex;
platform = platformIdentStrings[identStr];
}
}
var samsungPattern = "SM-[A-Z]";
var m = userAgent.toUpperCase().match(samsungPattern);
var isSamsungAndroidDevice = m && m.length > 0;
if (platform == "WinPhone" && version < 9)
version = Math.floor(Browser.getVersionFromTrident(userAgent, "trident" + optSlashOrSpace + optVersion));
if (!ignoreDocumentMode && browserType == "IE" && version > 7 && document.documentMode < version)
version = document.documentMode;
if (platform == "WinPhone")
version = Math.max(9, version);
if (!platform)
platform = defaultPlatform;
if (platform == platformIdentStrings["cpu os"] && !browserVersionDetected)
version = 4;
Browser.fillUserAgentInfo(browserTypesOrderedList, browserType, version, platform, isSamsungAndroidDevice);
}
catch (e) {
Browser.fillUserAgentInfo(browserTypesOrderedList, defaultBrowserType, defaultVersions[defaultBrowserType], defaultPlatform);
}
};
Browser.GetBrowserVersion = function (userAgent, matches, tridentPattern, ieCompatibleVersionString) {
var version = Browser.getVersionFromMatches(matches);
if (ieCompatibleVersionString) {
var versionFromTrident = Browser.getVersionFromTrident(userAgent, tridentPattern);
if (ieCompatibleVersionString === "edge" || parseInt(ieCompatibleVersionString) === versionFromTrident)
return versionFromTrident;
}
return version;
};
Browser.getIECompatibleVersionString = function () {
if (document.compatible) {
for (var i = 0; i < document.compatible.length; i++)
if (document.compatible[i].userAgent === "IE" && document.compatible[i].version)
return document.compatible[i].version.toLowerCase();
}
return "";
};
Browser.fillUserAgentInfo = function (browserTypesOrderedList, browserType, version, platform, isSamsungAndroidDevice) {
if (isSamsungAndroidDevice === void 0) { isSamsungAndroidDevice = false; }
for (var i = 0; i < browserTypesOrderedList.length; i++) {
var type = browserTypesOrderedList[i];
Browser[type] = type == browserType;
}
Browser.Version = Math.floor(10.0 * version) / 10.0;
Browser.MajorVersion = Math.floor(Browser.Version);
Browser.WindowsPlatform = platform == "Win" || platform == "WinPhone";
Browser.MacOSPlatform = platform == "Mac";
Browser.MacOSMobilePlatform = platform == "MacMobile";
Browser.AndroidMobilePlatform = platform == "Android";
Browser.WindowsPhonePlatform = platform == "WinPhone";
Browser.WebKitFamily = Browser.Safari || Browser.Chrome || Browser.Opera && Browser.MajorVersion >= 15;
Browser.NetscapeFamily = Browser.Netscape || Browser.Mozilla || Browser.Firefox;
Browser.HardwareAcceleration = (Browser.IE && Browser.MajorVersion >= 9) || (Browser.Firefox && Browser.MajorVersion >= 4) ||
(Browser.AndroidMobilePlatform && Browser.Chrome) || (Browser.Chrome && Browser.MajorVersion >= 37) ||
(Browser.Safari && !Browser.WindowsPlatform) || Browser.Edge || (Browser.Opera && Browser.MajorVersion >= 46);
Browser.WebKitTouchUI = Browser.MacOSMobilePlatform || Browser.AndroidMobilePlatform;
var isIETouchUI = Browser.IE && Browser.MajorVersion > 9 && Browser.WindowsPlatform && Browser.UserAgent.toLowerCase().indexOf("touch") >= 0;
Browser.MSTouchUI = isIETouchUI || (Browser.Edge && !!window.navigator.maxTouchPoints);
Browser.TouchUI = Browser.WebKitTouchUI || Browser.MSTouchUI;
Browser.MobileUI = Browser.WebKitTouchUI || Browser.WindowsPhonePlatform;
Browser.AndroidDefaultBrowser = Browser.AndroidMobilePlatform && !Browser.Chrome;
Browser.AndroidChromeBrowser = Browser.AndroidMobilePlatform && Browser.Chrome;
if (isSamsungAndroidDevice)
Browser.SamsungAndroidDevice = isSamsungAndroidDevice;
if (Browser.MSTouchUI) {
var isARMArchitecture = Browser.UserAgent.toLowerCase().indexOf("arm;") > -1;
Browser.VirtualKeyboardSupported = isARMArchitecture || Browser.WindowsPhonePlatform;
}
else {
Browser.VirtualKeyboardSupported = Browser.WebKitTouchUI;
}
Browser.fillDocumentElementBrowserTypeClassNames(browserTypesOrderedList);
};
Browser.indentPlatformMajorVersion = function (userAgent) {
var regex = /(?:(?:windows nt|macintosh|mac os|cpu os|cpu iphone os|android|windows phone|linux) )(\d+)(?:[-0-9_.])*/;
var matches = regex.exec(userAgent);
if (matches)
Browser.PlaformMajorVersion = matches[1];
};
Browser.prototype.GetBrowserVersion = function (userAgent, matches, tridentPattern, ieCompatibleVersionString) {
var version = Browser.getVersionFromMatches(matches);
if (ieCompatibleVersionString) {
var versionFromTrident = Browser.getVersionFromTrident(userAgent, tridentPattern);
if (ieCompatibleVersionString === "edge" || parseInt(ieCompatibleVersionString) === versionFromTrident)
return versionFromTrident;
}
return version;
};
Browser.getVersionFromMatches = function (matches) {
var result = -1;
var versionStr = "";
if (matches[1]) {
versionStr += matches[1];
if (matches[2])
versionStr += "." + matches[2];
}
if (versionStr != "") {
result = parseFloat(versionStr);
if (isNaN(result))
result = -1;
}
return result;
};
Browser.getVersionFromTrident = function (userAgent, tridentPattern) {
var tridentDiffFromVersion = 4;
var matches = new RegExp(tridentPattern, "i").exec(userAgent);
return Browser.getVersionFromMatches(matches) + tridentDiffFromVersion;
};
Browser.fillDocumentElementBrowserTypeClassNames = function (browserTypesOrderedList) {
var documentElementClassName = "";
var browserTypeslist = browserTypesOrderedList.concat(["WindowsPlatform", "MacOSPlatform", "MacOSMobilePlatform", "AndroidMobilePlatform",
"WindowsPhonePlatform", "WebKitFamily", "WebKitTouchUI", "MSTouchUI", "TouchUI", "AndroidDefaultBrowser"]);
for (var i = 0; i < browserTypeslist.length; i++) {
var type = browserTypeslist[i];
if (Browser[type])
documentElementClassName += "dx" + type + " ";
}
documentElementClassName += "dxBrowserVersion-" + Browser.MajorVersion;
if (document && document.documentElement) {
if (document.documentElement.className != "")
documentElementClassName = " " + documentElementClassName;
document.documentElement.className += documentElementClassName;
Browser.Info = documentElementClassName;
}
};
Browser.UserAgent = window.navigator.userAgent.toLowerCase();
Browser._foo = Browser.IdentUserAgent(Browser.UserAgent);
return Browser;
}());
exports.Browser = Browser;
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var CollectionBase_1 = __webpack_require__(6);
var Resource_1 = __webpack_require__(36);
var ResourceCollection = (function (_super) {
__extends(ResourceCollection, _super);
function ResourceCollection() {
return _super !== null && _super.apply(this, arguments) || this;
}
ResourceCollection.prototype.createItem = function () { return new Resource_1.Resource(); };
return ResourceCollection;
}(CollectionBase_1.CollectionBase));
exports.ResourceCollection = ResourceCollection;
/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var DataObject_1 = __webpack_require__(4);
var Utils_1 = __webpack_require__(0);
var DependencyType;
(function (DependencyType) {
DependencyType[DependencyType["FS"] = 0] = "FS";
DependencyType[DependencyType["SS"] = 1] = "SS";
DependencyType[DependencyType["FF"] = 2] = "FF";
DependencyType[DependencyType["SF"] = 3] = "SF";
})(DependencyType = exports.DependencyType || (exports.DependencyType = {}));
var Dependency = (function (_super) {
__extends(Dependency, _super);
function Dependency() {
var _this = _super.call(this) || this;
_this.predecessorId = "";
_this.successorId = "";
_this.type = null;
return _this;
}
Dependency.prototype.assignFromObject = function (sourceObj) {
if (Utils_1.JsonUtils.isExists(sourceObj)) {
_super.prototype.assignFromObject.call(this, sourceObj);
this.internalId = String(sourceObj.id);
this.predecessorId = String(sourceObj.predecessorId);
this.successorId = String(sourceObj.successorId);
this.type = sourceObj.type;
}
};
return Dependency;
}(DataObject_1.DataObject));
exports.Dependency = Dependency;
/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Size = (function () {
function Size(width, height) {
this.width = null;
this.height = null;
if (width !== undefined)
this.width = width;
if (height !== undefined)
this.height = height;
}
return Size;
}());
exports.Size = Size;
/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Size_1 = __webpack_require__(15);
var DateRange_1 = __webpack_require__(10);
var Enums_1 = __webpack_require__(7);
var GridElementInfo_1 = __webpack_require__(29);
var Utils_1 = __webpack_require__(28);
var Point_1 = __webpack_require__(3);
var Dependency_1 = __webpack_require__(14);
var GridLayoutCalculator = (function () {
function GridLayoutCalculator() {
this.tileToDependencyMap = [];
this.tileToNoWorkingIntervalsMap = [];
this.minLineLength = 10;
this.resourceMaxWidth = 500;
this.minTaskWidth = 2;
}
GridLayoutCalculator.prototype.setSettings = function (visibleTaskAreaSize, tickSize, elementSizeValues, range, viewModel, viewType, scrollBarHeight) {
if (scrollBarHeight === void 0) { scrollBarHeight = 0; }
this.visibleTaskAreaSize = visibleTaskAreaSize;
this.tickSize = tickSize;
this.viewType = viewType;
this.range = range;
this.verticalTickCount = viewModel.itemCount;
this.viewModel = viewModel;
this.elementSizeValues = elementSizeValues;
this.taskHeight = elementSizeValues.taskHeight;
this.milestoneWidth = elementSizeValues.milestoneWidth;
this.scaleHeight = elementSizeValues.scaleItemHeight;
this.arrowSize = new Size_1.Size(elementSizeValues.connectorArrowWidth, elementSizeValues.connectorArrowWidth);
this.lineThickness = elementSizeValues.connectorLineThickness;
this.minConnectorSpaceFromTask = (this.tickSize.height - this.taskHeight) / 2;
this.tickTimeSpan = Utils_1.DateUtils.getTickTimeSpan(viewType);
this.horizontalTickCount = this.getTotalTickCount();
this.scrollBarHeight = scrollBarHeight;
this.createTileToConnectorLinesMap();
this.createTileToNonWorkingIntervalsMap();
};
GridLayoutCalculator.prototype.getTaskAreaBorderInfo = function (index, isVertical) {
var sizeValue = isVertical ?
this.getVerticalGridLineHeight() :
this.tickSize.width * this.horizontalTickCount;
return this.getGridBorderInfo(index, isVertical, sizeValue);
};
GridLayoutCalculator.prototype.getScaleBorderInfo = function (index, scaleType) {
var result = this.getGridBorderInfo(index, true, this.scaleHeight);
result.position.x *= this.getScaleItemColSpan(scaleType);
return result;
};
GridLayoutCalculator.prototype.getGridBorderInfo = function (index, isVertical, size) {
var result = new GridElementInfo_1.GridElementInfo();
result.setPosition(this.getGridBorderPosition(index, isVertical));
if (size)
result.setSize(this.getGridBorderSize(isVertical, size));
result.className = isVertical ? "dx-gantt-vb" : "dx-gantt-hb";
return result;
};
GridLayoutCalculator.prototype.getGridBorderPosition = function (index, isVertical) {
var result = new Point_1.Point();
var posValue = (index + 1) * (isVertical ? this.tickSize.width : this.tickSize.height);
if (isVertical)
result.x = posValue;
else
result.y = posValue;
return result;
};
GridLayoutCalculator.prototype.getGridBorderSize = function (isVertical, sizeValue) {
var result = new Size_1.Size();
if (isVertical)
result.height = sizeValue;
else
result.width = sizeValue;
return result;
};
GridLayoutCalculator.prototype.getScaleElementInfo = function (index, scaleType) {
var result = new GridElementInfo_1.GridElementInfo();
result.setPosition(this.getScaleItemPosition(index, scaleType));
result.setSize(this.getScaleItemSize(scaleType));
result.className = this.getScaleItemClassName(scaleType, result, this.getRenderedNoWorkingIntervals(result.position.x));
return result;
};
GridLayoutCalculator.prototype.getScaleItemClassName = function (scaleType, scaleItemInfo, noWorkingIntervals) {
var result = "dx-gantt-si";
if (scaleType.valueOf() == this.viewType.valueOf() && this.isScaleItemInsideNoWorkingInterval(scaleItemInfo, noWorkingIntervals))
result += " dx-gantt-holiday-scaleItem";
return result;
};
GridLayoutCalculator.prototype.isScaleItemInsideNoWorkingInterval = function (scaleItemInfo, noWorkingIntervals) {
var scaleItemLeft = scaleItemInfo.position.x;
var scaleItemRight = scaleItemInfo.position.x + scaleItemInfo.size.width;
for (var i = 0; i < noWorkingIntervals.length; i++) {
var noWorkingIntervalLeft = noWorkingIntervals[i].position.x;
var noWorkingIntervalRight = noWorkingIntervals[i].position.x + noWorkingIntervals[i].size.width;
if (scaleItemLeft >= noWorkingIntervalLeft && scaleItemRight <= noWorkingIntervalRight)
return true;
}
return false;
};
GridLayoutCalculator.prototype.getScaleItemPosition = function (index, scaleType) {
return new Point_1.Point(index * this.tickSize.width * this.getScaleItemColSpan(scaleType));
};
GridLayoutCalculator.prototype.getScaleItemSize = function (scaleType) {
return new Size_1.Size(this.tickSize.width * this.getScaleItemColSpan(scaleType));
};
GridLayoutCalculator.prototype.getScaleItemColSpan = function (scaleType) {
if (scaleType.valueOf() == this.viewType.valueOf())
return 1;
if (this.viewType == Enums_1.ViewType.TenMinutes)
return 6;
if (this.viewType == Enums_1.ViewType.Hours)
return 24;
if (this.viewType == Enums_1.ViewType.SixHours)
return 4;
if (this.viewType == Enums_1.ViewType.Days)
return 7;
if (this.viewType == Enums_1.ViewType.Weeks)
return 4.29;
if (this.viewType == Enums_1.ViewType.Months)
return 12;
if (this.viewType == Enums_1.ViewType.Quarter)
return 4;
if (this.viewType == Enums_1.ViewType.Years)
return 5;
return 1;
};
GridLayoutCalculator.prototype.getTaskWrapperElementInfo = function (index) {
var result = new GridElementInfo_1.GridElementInfo();
result.className = this.getTaskWrapperClassName(index);
result.setPosition(this.getTaskWrapperPoint(index));
result.setSize(this.getTaskWrapperSize(index));
return result;
};
GridLayoutCalculator.prototype.getTaskWrapperClassName = function (index) {
var result = "dx-gantt-taskWrapper";
if (this.getTask(index).isMilestone())
result = "dx-gantt-milestoneWrapper";
if (this.viewModel.items[index].selected)
result += " dx-gantt-selectedTask";
return result;
};
GridLayoutCalculator.prototype.getTaskWrapperSize = function (index) {
var resourceCount = this.viewModel.items[index].resources.items.length;
var resourceWidth = this.resourceMaxWidth * resourceCount;
var taskWidth = this.getTaskWidth(index);
var taskPoint = this.getTaskPoint(index);
var totalWidth = this.tickSize.width * this.horizontalTickCount;
var resultWidth = Math.min(taskWidth + resourceWidth, totalWidth - taskPoint.x);
return new Size_1.Size(resultWidth);
};
GridLayoutCalculator.prototype.getTaskWrapperPoint = function (index) {
var result = new Point_1.Point(this.getPosByDate(this.getTask(index).start), index * this.tickSize.height);
if (this.getTask(index).isMilestone()) {
var height = this.getTaskHeight(index);
result.x -= height / 2;
result.y += (this.tickSize.height - height) / 2;
}
return result;
};
GridLayoutCalculator.prototype.getTaskElementInfo = function (index) {
var result = new GridElementInfo_1.GridElementInfo();
if (!this.getTask(index).isMilestone())
result.size.width = this.getTaskWidth(index);
result.className = this.getTaskClassName(index, result.size.width);
return result;
};
GridLayoutCalculator.prototype.getTaskClassName = function (index, taskWidth) {
var result = "dx-gantt-task";
if (this.getTask(index).isMilestone())
result += " dx-gantt-milestone";
else if (taskWidth <= this.elementSizeValues.smallTaskWidth)
result += " dx-gantt-smallTask";
return result;
};
GridLayoutCalculator.prototype.getTaskPoint = function (index) {
var result = this.getTaskWrapperPoint(index);
if (!this.getTask(index).isMilestone())
result.y += this.elementSizeValues.taskWrapperTopPadding;
return result;
};
GridLayoutCalculator.prototype.getTaskSize = function (index) {
return new Size_1.Size(this.getTaskWidth(index), this.getTaskHeight(index));
};
GridLayoutCalculator.prototype.getTaskWidth = function (index) {
var task = this.getTask(index);
return task.isMilestone() ? this.getTaskHeight(index) : this.getWidthByDateRange(task.start, task.end);
};
GridLayoutCalculator.prototype.getTaskHeight = function (index) {
var task = this.getTask(index);
return task.isMilestone() ? this.milestoneWidth : this.taskHeight;
};
GridLayoutCalculator.prototype.getTask = function (index) {
return this.viewModel.items[index].task;
};
GridLayoutCalculator.prototype.getTaskProgressElementInfo = function (index) {
var result = new GridElementInfo_1.GridElementInfo();
result.className = "dx-gantt-tPrg";
result.setSize(this.getTaskProgressSize(index));
return result;
};
GridLayoutCalculator.prototype.getTaskProgressSize = function (index) {
return new Size_1.Size(this.getTaskProgressWidth(index), null);
};
GridLayoutCalculator.prototype.getTaskProgressWidth = function (index) {
return this.getTaskWidth(index) * this.getTask(index).progress / 100;
};
GridLayoutCalculator.prototype.getTaskTextElementInfo = function (index, isInsideText) {
var result = new GridElementInfo_1.GridElementInfo();
result.className = this.getTaskTextElementClassName(isInsideText);
if (!isInsideText) {
var taskX = this.getTaskPoint(index).x;
if (taskX < this.elementSizeValues.outsideTaskTextDefaultWidth) {
result.size.width = taskX;
result.margins.marginLeft = -taskX;
}
}
return result;
};
GridLayoutCalculator.prototype.getTaskTextElementClassName = function (isInsideText) {
var result = "dx-gantt-taskTitle";
result += (isInsideText ? " dx-gantt-titleIn" : " dx-gantt-titleOut");
return result;
};
GridLayoutCalculator.prototype.getTaskResourceElementInfo = function () {
var result = new GridElementInfo_1.GridElementInfo();
result.className = "dx-gantt-taskRes";
return result;
};
GridLayoutCalculator.prototype.getSelectionElementInfo = function (index) {
return this.getRowElementInfo(index, "dx-gantt-sel");
};
GridLayoutCalculator.prototype.getSelectionPosition = function (index) {
var result = new Point_1.Point();
result.y = index * this.tickSize.height;
return result;
};
GridLayoutCalculator.prototype.getSelectionSize = function () {
return new Size_1.Size(this.tickSize.width * this.horizontalTickCount, this.tickSize.height);
};
GridLayoutCalculator.prototype.getHighlightRowInfo = function (index) {
return this.getRowElementInfo(index, "dx-gantt-altRow");
};
GridLayoutCalculator.prototype.getRowElementInfo = function (index, className) {
var result = new GridElementInfo_1.GridElementInfo();
result.className = className;
result.setPosition(this.getSelectionPosition(index));
result.setSize(this.getSelectionSize());
return result;
};
GridLayoutCalculator.prototype.getNoWorkingIntervalInfo = function (noWorkingDateRange) {
var result = new GridElementInfo_1.GridElementInfo();
result.className = "dx-gantt-nwi";
result.setPosition(this.getNoWorkingIntervalPosition(noWorkingDateRange.start));
result.setSize(this.getNoWorkingIntervalSize(noWorkingDateRange));
return result;
};
GridLayoutCalculator.prototype.getNoWorkingIntervalPosition = function (intervalStart) {
var result = new Point_1.Point();
result.x = this.getPosByDate(intervalStart);
return result;
};
GridLayoutCalculator.prototype.getNoWorkingIntervalSize = function (noWorkingInterval) {
return new Size_1.Size(this.getWidthByDateRange(noWorkingInterval.start, noWorkingInterval.end), this.getVerticalGridLineHeight());
};
GridLayoutCalculator.prototype.getVerticalGridLineHeight = function () {
return Math.max(this.visibleTaskAreaSize.height - this.scrollBarHeight, this.tickSize.height * this.verticalTickCount);
};
GridLayoutCalculator.prototype.getConnectorInfo = function (id, predessorIndex, successorIndex, connectorType) {
var result = new Array();
var connectorPoints = this.getConnectorPoints(predessorIndex, successorIndex, connectorType);
for (var i = 0; i < connectorPoints.length - 1; i++)
result.push(this.getConnectorLineInfo(id, connectorPoints[i], connectorPoints[i + 1], i == 0 || i == connectorPoints.length - 2));
result.push(this.getArrowInfo(connectorPoints, result, predessorIndex, successorIndex));
return result;
};
GridLayoutCalculator.prototype.getConnectorLineInfo = function (id, startPoint, endPoint, isEdgeLine) {
var result = new GridElementInfo_1.GridElementInfo();
var isVertical = startPoint.x == endPoint.x;
result.className = this.getConnectorClassName(isVertical);
result.setPosition(this.getConnectorPosition(startPoint, endPoint));
result.setSize(this.getConnectorSize(startPoint, endPoint, isVertical, isEdgeLine));
result.setAttribute("dependency-id", id);
return result;
};
GridLayoutCalculator.prototype.getConnectorClassName = function (isVertical) {
return isVertical ? GridLayoutCalculator.CLASSNAMES.CONNECTOR_VERTICAL : GridLayoutCalculator.CLASSNAMES.CONNECTOR_HORIZONTAL;
};
GridLayoutCalculator.prototype.getConnectorPosition = function (startPoint, endPoint) {
return new Point_1.Point(Math.min(startPoint.x, endPoint.x), Math.min(startPoint.y, endPoint.y));
};
GridLayoutCalculator.prototype.getConnectorSize = function (startPoint, endPoint, isVertical, isEdgeLine) {
var result = new Size_1.Size();
var sizeCorrection = isEdgeLine ? 0 : 0;
if (isVertical)
result.height = Math.abs(endPoint.y - startPoint.y + sizeCorrection);
else
result.width = Math.abs(endPoint.x - startPoint.x + sizeCorrection);
return result;
};
GridLayoutCalculator.prototype.getArrowInfo = function (connectorPoints, connectorLines, predessorIndex, successorIndex) {
var result = new GridElementInfo_1.GridElementInfo();
var lineInfo = this.findArrowLineInfo(connectorLines, predessorIndex, successorIndex);
var arrowPosition = this.getArrowPosition(connectorPoints, predessorIndex, successorIndex);
result.className = this.getArrowClassName(arrowPosition);
result.setPosition(this.getArrowPoint(lineInfo, arrowPosition));
return result;
};
GridLayoutCalculator.prototype.findArrowLineInfo = function (connectorLines, predessorIndex, successorIndex) {
var arrowLineIndex = predessorIndex < successorIndex ? connectorLines.length - 1 : 0;
return connectorLines[arrowLineIndex];
};
GridLayoutCalculator.prototype.getArrowPosition = function (connectorPoints, predessorIndex, successorIndex) {
var prevLastPoint = connectorPoints[predessorIndex < successorIndex ? connectorPoints.length - 2 : 1];
var lastPoint = connectorPoints[predessorIndex < successorIndex ? connectorPoints.length - 1 : 0];
if (prevLastPoint.x == lastPoint.x)
return prevLastPoint.y > lastPoint.y ? Enums_1.Position.Top : Enums_1.Position.Bottom;
return prevLastPoint.x > lastPoint.x ? Enums_1.Position.Left : Enums_1.Position.Right;
};
GridLayoutCalculator.prototype.getArrowClassName = function (arrowPosition) {
var result = "dx-gantt-arrow";
switch (arrowPosition) {
case Enums_1.Position.Left:
result += " dx-gantt-LA";
break;
case Enums_1.Position.Top:
result += " dx-gantt-TA";
break;
case Enums_1.Position.Right:
result += " dx-gantt-RA";
break;
case Enums_1.Position.Bottom:
result += " dx-gantt-BA";
break;
}
return result;
};
GridLayoutCalculator.prototype.getArrowPoint = function (lineInfo, arrowPosition) {
return new Point_1.Point(this.getArrowX(lineInfo, arrowPosition), this.getArrowY(lineInfo, arrowPosition));
};
GridLayoutCalculator.prototype.getArrowX = function (lineInfo, arrowPosition) {
switch (arrowPosition) {
case Enums_1.Position.Left:
return lineInfo.position.x - this.arrowSize.width / 2;
case Enums_1.Position.Right:
return lineInfo.position.x + lineInfo.size.width - this.arrowSize.width / 2;
case Enums_1.Position.Top:
case Enums_1.Position.Bottom:
return lineInfo.position.x - (this.arrowSize.width - this.lineThickness) / 2;
}
};
GridLayoutCalculator.prototype.getArrowY = function (lineInfo, arrowPosition) {
switch (arrowPosition) {
case Enums_1.Position.Top:
return lineInfo.position.y - this.arrowSize.height / 2;
case Enums_1.Position.Bottom:
return lineInfo.position.y + lineInfo.size.height - this.arrowSize.height / 2;
case Enums_1.Position.Left:
case Enums_1.Position.Right:
return lineInfo.position.y - (this.arrowSize.height - this.lineThickness) / 2;
}
};
GridLayoutCalculator.prototype.getPosByDate = function (date) {
return this.getWidthByDateRange(this.range.start, date);
};
GridLayoutCalculator.prototype.getWidthByDateRange = function (start, end) {
var width = this.getRangeTickCount(start, end) * this.tickSize.width;
return Math.max(width, this.minTaskWidth);
};
GridLayoutCalculator.prototype.getRangeTickCount = function (start, end) {
if (this.viewType == Enums_1.ViewType.Months)
return this.getRangeTickCountInMonthsViewType(start, end);
if (this.viewType == Enums_1.ViewType.Quarter)
return this.getRangeTickCountInQuarterViewType(start, end);
return (end.getTime() - start.getTime()) / this.tickTimeSpan;
};
GridLayoutCalculator.prototype.getRangeTickCountInMonthsViewType = function (start, end) {
var startMonthStartDate = new Date(start.getFullYear(), start.getMonth(), 1);
var endMonthStartDate = new Date(end.getFullYear(), end.getMonth(), 1);
var monthOffset = Utils_1.DateUtils.getOffsetInMonths(startMonthStartDate, endMonthStartDate);
var endFromMonthStartDateOffset = end.getTime() - endMonthStartDate.getTime();
var startFromMonthStartDateOffset = start.getTime() - startMonthStartDate.getTime();
return monthOffset + (endFromMonthStartDateOffset - startFromMonthStartDateOffset) / Utils_1.DateUtils.msPerMonth;
};
GridLayoutCalculator.prototype.getRangeTickCountInQuarterViewType = function (start, end) {
var startQuarterStartDate = new Date(start.getFullYear(), Math.floor(start.getMonth() / 3) * 3, 1);
var endQuarterStartDate = new Date(end.getFullYear(), Math.floor(end.getMonth() / 3) * 3, 1);
var quarterOffset = Utils_1.DateUtils.getOffsetInQuarters(startQuarterStartDate, endQuarterStartDate);
var endFromQuarterStartDateOffset = end.getTime() - endQuarterStartDate.getTime();
var startFromQuarterStartDateOffset = start.getTime() - startQuarterStartDate.getTime();
return quarterOffset + (endFromQuarterStartDateOffset - startFromQuarterStartDateOffset) / (Utils_1.DateUtils.msPerMonth * 3);
};
GridLayoutCalculator.prototype.getDateByPos = function (position) {
var preResult = position / this.tickSize.width;
var start = new Date(this.range.start);
if (this.viewType == Enums_1.ViewType.Months || this.viewType == Enums_1.ViewType.Quarter) {
var monthFromStart = Math.floor(preResult);
start = new Date(start.setMonth(start.getMonth() + (this.viewType == Enums_1.ViewType.Months ? monthFromStart : monthFromStart * 3)));
preResult = (position - this.getPosByDate(start)) / this.tickSize.width;
}
var time = preResult * this.tickTimeSpan + start.getTime();
var result = new Date();
result.setTime(time);
return result;
};
GridLayoutCalculator.prototype.getTotalTickCount = function () {
return this.getRangeTickCount(this.range.start, this.range.end);
};
GridLayoutCalculator.prototype.getConnectorPoints = function (predessorIndex, successorIndex, connectorType) {
switch (connectorType) {
case (Dependency_1.DependencyType.FS):
return this.getFinishToStartConnectorPoints(predessorIndex, successorIndex);
case (Dependency_1.DependencyType.SF):
return this.getStartToFinishConnectorPoints(predessorIndex, successorIndex);
case (Dependency_1.DependencyType.SS):
return this.getStartToStartConnectorPoints(predessorIndex, successorIndex);
case (Dependency_1.DependencyType.FF):
return this.getFinishToFinishConnectorPoints(predessorIndex, successorIndex);
default:
return new Array();
}
};
GridLayoutCalculator.prototype.getFinishToStartConnectorPoints = function (predessorIndex, successorIndex) {
if (predessorIndex < successorIndex) {
if (this.getTask(predessorIndex).end <= this.getTask(successorIndex).start)
return this.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskTopSide(predessorIndex, successorIndex, false);
return this.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskLeftSide(predessorIndex, successorIndex, false);
}
else {
if (this.getTask(predessorIndex).end <= this.getTask(successorIndex).start)
return this.getConnectorPoints_FromTopTaskBottomSide_ToBottomTaskRightSide(successorIndex, predessorIndex, false);
return this.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskRightSide(successorIndex, predessorIndex, true);
}
};
GridLayoutCalculator.prototype.getFinishToFinishConnectorPoints = function (predessorIndex, successorIndex) {
if (predessorIndex < successorIndex) {
return this.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskRightSide(predessorIndex, successorIndex);
}
else {
return this.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskRightSide(successorIndex, predessorIndex);
}
};
GridLayoutCalculator.prototype.getStartToStartConnectorPoints = function (predessorIndex, successorIndex) {
if (predessorIndex < successorIndex) {
return this.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskLeftSide(predessorIndex, successorIndex);
}
else {
return this.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskLeftSide(successorIndex, predessorIndex);
}
};
GridLayoutCalculator.prototype.getStartToFinishConnectorPoints = function (predessorIndex, successorIndex) {
if (predessorIndex < successorIndex) {
if (this.getTask(predessorIndex).start >= this.getTask(successorIndex).end)
return this.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskTopSide(predessorIndex, successorIndex, true);
return this.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskRightSide(predessorIndex, successorIndex, false);
}
else {
if (this.getTask(predessorIndex).start >= this.getTask(successorIndex).end)
return this.getConnectorPoints_FromTopTaskBottomSide_ToBottomTaskLeftSide(successorIndex, predessorIndex, true);
return this.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskLeftSide(successorIndex, predessorIndex, true);
}
};
GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskTopSide = function (topTaskIndex, bottomTaskIndex, shiftEndPointToRight) {
var result = new Array();
var topTaskPoint = this.getTaskPoint(topTaskIndex);
var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);
var topTaskRightCenter = this.getTaskRightCenter(topTaskPoint, topTaskIndex);
var isBottomMilestone = this.getTask(bottomTaskIndex).isMilestone();
var bottomTaskTopCenter = this.getTaskTopCenter(bottomTaskPoint, bottomTaskIndex);
var endPointIndent = shiftEndPointToRight ? this.getTaskWidth(bottomTaskIndex) - this.minLineLength : this.minLineLength;
result.push(new Point_1.Point(topTaskRightCenter.x, topTaskRightCenter.y));
result.push(new Point_1.Point(isBottomMilestone ? bottomTaskTopCenter.x : bottomTaskPoint.x + endPointIndent, result[0].y));
result.push(new Point_1.Point(result[1].x, bottomTaskTopCenter.y));
return result;
};
GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskRightSide = function (topTaskIndex, bottomTaskIndex) {
var result = new Array();
var topTaskPoint = this.getTaskPoint(topTaskIndex);
var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);
var topTaskRightCenter = this.getTaskRightCenter(topTaskPoint, topTaskIndex);
var bottomTaskRightCenter = this.getTaskRightCenter(bottomTaskPoint, bottomTaskIndex);
result.push(new Point_1.Point(topTaskRightCenter.x, topTaskRightCenter.y));
result.push(new Point_1.Point(Math.max(topTaskRightCenter.x, bottomTaskRightCenter.x) + this.minLineLength, result[0].y));
result.push(new Point_1.Point(result[1].x, bottomTaskRightCenter.y));
result.push(new Point_1.Point(bottomTaskRightCenter.x, bottomTaskRightCenter.y));
return result;
};
GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskLeftSide = function (topTaskIndex, bottomTaskIndex, shiftToTop) {
var result = new Array();
var topTaskPoint = this.getTaskPoint(topTaskIndex);
var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);
var topTaskRightCenter = this.getTaskRightCenter(topTaskPoint, topTaskIndex);
var topTaskBottomCenter = this.getTaskBottomCenter(topTaskPoint, topTaskIndex);
var bottomTaskLeftCenter = this.getTaskLeftCenter(bottomTaskPoint, bottomTaskIndex);
var bottomTaskTopCenter = this.getTaskTopCenter(bottomTaskPoint, bottomTaskIndex);
result.push(new Point_1.Point(topTaskRightCenter.x, topTaskRightCenter.y));
result.push(new Point_1.Point(result[0].x + this.minLineLength, result[0].y));
result.push(new Point_1.Point(result[1].x, shiftToTop ?
topTaskBottomCenter.y + this.minConnectorSpaceFromTask
: bottomTaskTopCenter.y - this.minConnectorSpaceFromTask));
result.push(new Point_1.Point(bottomTaskLeftCenter.x - this.minLineLength, result[2].y));
result.push(new Point_1.Point(result[3].x, bottomTaskLeftCenter.y));
result.push(new Point_1.Point(bottomTaskLeftCenter.x, bottomTaskLeftCenter.y));
return result;
};
GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskBottomSide_ToBottomTaskRightSide = function (topTaskIndex, bottomTaskIndex, shiftStartPointToRight) {
var result = new Array();
var topTaskPoint = this.getTaskPoint(topTaskIndex);
var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);
var topTaskBottomCenter = this.getTaskBottomCenter(topTaskPoint, topTaskIndex);
var isTopMilestone = this.getTask(topTaskIndex).isMilestone();
var bottomTaskRightCenter = this.getTaskRightCenter(bottomTaskPoint, bottomTaskIndex);
var startPointIndent = shiftStartPointToRight ? this.getTaskWidth(topTaskIndex) - this.minLineLength : this.minLineLength;
result.push(new Point_1.Point(isTopMilestone ? topTaskBottomCenter.x : topTaskPoint.x + startPointIndent, topTaskBottomCenter.y));
result.push(new Point_1.Point(result[0].x, bottomTaskRightCenter.y));
result.push(new Point_1.Point(bottomTaskRightCenter.x, bottomTaskRightCenter.y));
return result;
};
GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskBottomSide_ToBottomTaskLeftSide = function (topTaskIndex, bottomTaskIndex, shiftStartPointToRight) {
var result = new Array();
var topTaskPoint = this.getTaskPoint(topTaskIndex);
var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);
var topTaskBottomCenter = this.getTaskBottomCenter(topTaskPoint, topTaskIndex);
var isTopMilestone = this.getTask(topTaskIndex).isMilestone();
var bottomTaskLeftCenter = this.getTaskLeftCenter(bottomTaskPoint, bottomTaskIndex);
var startPointIndent = shiftStartPointToRight ? this.getTaskWidth(topTaskIndex) - this.minLineLength : this.minLineLength;
result.push(new Point_1.Point(isTopMilestone ? topTaskBottomCenter.x : topTaskPoint.x + startPointIndent, topTaskBottomCenter.y));
result.push(new Point_1.Point(result[0].x, bottomTaskLeftCenter.y));
result.push(new Point_1.Point(bottomTaskLeftCenter.x, bottomTaskLeftCenter.y));
return result;
};
GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskTopSide = function (topTaskIndex, bottomTaskIndex, shiftEndPointToRight) {
var result = new Array();
var topTaskPoint = this.getTaskPoint(topTaskIndex);
var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);
var topTaskLeftCenter = this.getTaskLeftCenter(topTaskPoint, topTaskIndex);
var bottomTaskTopCenter = this.getTaskTopCenter(bottomTaskPoint, bottomTaskIndex);
var isBottomMilestone = this.getTask(bottomTaskIndex).isMilestone();
var endPointIndent = shiftEndPointToRight ? this.getTaskWidth(bottomTaskIndex) - this.minLineLength : this.minLineLength;
result.push(new Point_1.Point(topTaskLeftCenter.x, topTaskLeftCenter.y));
result.push(new Point_1.Point(isBottomMilestone ? bottomTaskTopCenter.x : bottomTaskPoint.x + endPointIndent, result[0].y));
result.push(new Point_1.Point(result[1].x, bottomTaskTopCenter.y));
return result;
};
GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskRightSide = function (topTaskIndex, bottomTaskIndex, shiftToTop) {
var result = new Array();
var topTaskPoint = this.getTaskPoint(topTaskIndex);
var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);
var topTaskLeftCenter = this.getTaskLeftCenter(topTaskPoint, topTaskIndex);
var topTaskBottomCenter = this.getTaskBottomCenter(topTaskPoint, topTaskIndex);
var bottomTaskRightCenter = this.getTaskRightCenter(bottomTaskPoint, bottomTaskIndex);
var bottomTaskTopCenter = this.getTaskTopCenter(bottomTaskPoint, bottomTaskIndex);
result.push(new Point_1.Point(topTaskLeftCenter.x, topTaskLeftCenter.y));
result.push(new Point_1.Point(result[0].x - this.minLineLength, result[0].y));
result.push(new Point_1.Point(result[1].x, shiftToTop ?
topTaskBottomCenter.y + this.minConnectorSpaceFromTask
: bottomTaskTopCenter.y - this.minConnectorSpaceFromTask));
result.push(new Point_1.Point(bottomTaskRightCenter.x + this.minLineLength, result[2].y));
result.push(new Point_1.Point(result[3].x, bottomTaskRightCenter.y));
result.push(new Point_1.Point(bottomTaskRightCenter.x, bottomTaskRightCenter.y));
return result;
};
GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskLeftSide = function (topTaskIndex, bottomTaskIndex) {
var result = new Array();
var topTaskPoint = this.getTaskPoint(topTaskIndex);
var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);
var topTaskLeftCenter = this.getTaskLeftCenter(topTaskPoint, topTaskIndex);
var bottomTaskLeftCenter = this.getTaskLeftCenter(bottomTaskPoint, bottomTaskIndex);
result.push(new Point_1.Point(topTaskLeftCenter.x, topTaskLeftCenter.y));
result.push(new Point_1.Point(Math.min(topTaskLeftCenter.x, bottomTaskLeftCenter.x) - this.minLineLength, result[0].y));
result.push(new Point_1.Point(result[1].x, bottomTaskLeftCenter.y));
result.push(new Point_1.Point(bottomTaskLeftCenter.x, bottomTaskLeftCenter.y));
return result;
};
GridLayoutCalculator.prototype.getTaskLeftCenter = function (taskPoint, index) {
return new Point_1.Point(taskPoint.x - this.getTaskEdgeCorrection(index), taskPoint.y + this.getTaskHeight(index) / 2);
};
GridLayoutCalculator.prototype.getTaskRightCenter = function (taskPoint, index) {
return new Point_1.Point(taskPoint.x + this.getTaskWidth(index) + this.getTaskEdgeCorrection(index), taskPoint.y + this.getTaskHeight(index) / 2);
};
GridLayoutCalculator.prototype.getTaskTopCenter = function (taskPoint, index) {
return new Point_1.Point(taskPoint.x + this.getTaskWidth(index) / 2, taskPoint.y - this.getTaskEdgeCorrection(index));
};
GridLayoutCalculator.prototype.getTaskBottomCenter = function (taskPoint, index) {
return new Point_1.Point(taskPoint.x + this.getTaskWidth(index) / 2, taskPoint.y + this.getTaskHeight(index) + this.getTaskEdgeCorrection(index));
};
GridLayoutCalculator.prototype.getTaskEdgeCorrection = function (index) {
var isMilestone = this.viewModel.items[index].task.isMilestone();
return isMilestone ? this.getTaskHeight(index) * (Math.sqrt(2) - 1) / 2 : 0;
};
GridLayoutCalculator.prototype.getRenderedRowColumnIndices = function (scrollPos, isVertical) {
var visibleAreaSizeValue = isVertical ? this.visibleTaskAreaSize.height : this.visibleTaskAreaSize.width;
var tickSizeValue = isVertical ? this.tickSize.height : this.tickSize.width;
var tickCount = isVertical ? this.verticalTickCount : this.horizontalTickCount;
var firstVisibleIndex = this.getFirstVisibleGridCellIndex(scrollPos, tickSizeValue);
var lastVisibleIndex = this.getLastVisibleGridCellIndex(scrollPos, tickSizeValue, visibleAreaSizeValue, tickCount);
var result = new Array();
for (var i = firstVisibleIndex; i <= lastVisibleIndex; i++)
result.push(i);
return result;
};
GridLayoutCalculator.prototype.getRenderedScaleItemIndices = function (scaleType, renderedColIndices) {
var scaleItemColSpan = this.getScaleItemColSpan(scaleType);
var firstVisibleIndex = Math.floor(renderedColIndices[0] / scaleItemColSpan);
var lastVisibleIndex = Math.floor(renderedColIndices[renderedColIndices.length - 1] / scaleItemColSpan);
var result = new Array();
for (var i = firstVisibleIndex; i <= lastVisibleIndex; i++)
result.push(i);
return result;
};
GridLayoutCalculator.prototype.getFirstVisibleGridCellIndex = function (scrollPos, tickSizeValue) {
var result = Math.floor(scrollPos / tickSizeValue);
result = Math.max(result - 10, 0);
return result;
};
GridLayoutCalculator.prototype.getLastVisibleGridCellIndex = function (scrollPos, tickSizeValue, visibleAreaSizeValue, tickCount) {
var result = Math.floor((scrollPos + visibleAreaSizeValue) / tickSizeValue);
result = Math.min(result + 10, tickCount - 1);
return result;
};
GridLayoutCalculator.prototype.createTileToConnectorLinesMap = function () {
var _this = this;
this.tileToDependencyMap = [];
for (var i = 0; i < this.viewModel.items.length; i++) {
for (var j = 0; j < this.viewModel.items[i].dependencies.length; j++) {
var predessorIndex = this.viewModel.items[i].dependencies[j].predecessor.visibleIndex;
var successorIndex = this.viewModel.items[i].visibleIndex;
var type = this.viewModel.items[i].dependencies[j].type;
var id = this.viewModel.items[i].dependencies[j].id;
var connectorInfo = this.getConnectorInfo(id, predessorIndex, successorIndex, type);
connectorInfo.forEach(function (connectorLine) {
_this.addElementInfoToTileMap(connectorLine, _this.tileToDependencyMap, true);
});
}
}
};
GridLayoutCalculator.prototype.createTileToNonWorkingIntervalsMap = function () {
this.tileToNoWorkingIntervalsMap = [];
for (var i = 0; i < this.viewModel.noWorkingIntervals.length; i++) {
var noWorkingDateRange = this.getAdjustedNoWorkingInterval(this.viewModel.noWorkingIntervals[i]);
if (!noWorkingDateRange)
continue;
var noWorkingIntervalInfo = this.getNoWorkingIntervalInfo(noWorkingDateRange);
this.addElementInfoToTileMap(noWorkingIntervalInfo, this.tileToNoWorkingIntervalsMap, false);
}
};
GridLayoutCalculator.prototype.getAdjustedNoWorkingInterval = function (modelInterval) {
if (modelInterval.end.getTime() - modelInterval.start.getTime() < this.tickTimeSpan - 1)
return null;
return new DateRange_1.DateRange(Utils_1.DateUtils.getNearestScaleTickDate(modelInterval.start, this.range, this.tickTimeSpan, this.viewType), Utils_1.DateUtils.getNearestScaleTickDate(modelInterval.end, this.range, this.tickTimeSpan, this.viewType));
};
GridLayoutCalculator.prototype.addElementInfoToTileMap = function (info, map, isVerticalTile) {
var infoPointValue = isVerticalTile ? info.position.y : info.position.x;
var infoSizeValue = isVerticalTile ? info.size.height : info.size.width;
var tileSizeValue = (isVerticalTile ? this.visibleTaskAreaSize.height : this.visibleTaskAreaSize.width) * 2;
var firstTileIndex = Math.floor(infoPointValue / tileSizeValue);
var lastTileIndex = Math.floor((infoPointValue + infoSizeValue) / tileSizeValue);
for (var i = firstTileIndex; i <= lastTileIndex; i++) {
if (!map[i])
map[i] = new Array();
map[i].push(info);
}
};
GridLayoutCalculator.prototype.getRenderedConnectorLines = function (scrollPos) {
return this.getElementsInRenderedTiles(this.tileToDependencyMap, true, scrollPos);
};
GridLayoutCalculator.prototype.getRenderedNoWorkingIntervals = function (scrollPos) {
return this.getElementsInRenderedTiles(this.tileToNoWorkingIntervalsMap, false, scrollPos);
};
GridLayoutCalculator.prototype.getElementsInRenderedTiles = function (map, isVerticalTile, scrollPos) {
var visibleAreaSizeValue = isVerticalTile ? this.visibleTaskAreaSize.height : this.visibleTaskAreaSize.width;
var firstVisibleTileIndex = Math.floor(scrollPos / (visibleAreaSizeValue * 2));
var lastVisibleTileIndex = Math.floor((scrollPos + visibleAreaSizeValue) / (visibleAreaSizeValue * 2));
var result = new Array();
for (var i = firstVisibleTileIndex; i <= lastVisibleTileIndex; i++) {
if (!map[i])
continue;
map[i].forEach(function (info) {
if (result.indexOf(info) == -1)
result.push(info);
});
}
return result;
};
GridLayoutCalculator.CLASSNAMES = {
CONNECTOR_VERTICAL: "dx-gantt-conn-v",
CONNECTOR_HORIZONTAL: "dx-gantt-conn-h"
};
return GridLayoutCalculator;
}());
exports.GridLayoutCalculator = GridLayoutCalculator;
/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var HistoryItemState_1 = __webpack_require__(58);
var BaseManipulator = (function () {
function BaseManipulator(viewModel, dispatcher) {
this.viewModel = viewModel;
this.dispatcher = dispatcher;
}
return BaseManipulator;
}());
exports.BaseManipulator = BaseManipulator;
var TaskPropertiesManipulator = (function (_super) {
__extends(TaskPropertiesManipulator, _super);
function TaskPropertiesManipulator(viewModel, dispatcher) {
var _this = _super.call(this, viewModel, dispatcher) || this;
_this.title = new TaskTitleManipulator(viewModel, dispatcher);
_this.description = new TaskDescriptionManipulator(viewModel, dispatcher);
_this.progress = new TaskProgressManipulator(viewModel, dispatcher);
_this.start = new TaskStartDateManipulator(viewModel, dispatcher);
_this.end = new TaskEndDateManipulator(viewModel, dispatcher);
return _this;
}
return TaskPropertiesManipulator;
}(BaseManipulator));
exports.TaskPropertiesManipulator = TaskPropertiesManipulator;
var TaskPropertyManipulator = (function (_super) {
__extends(TaskPropertyManipulator, _super);
function TaskPropertyManipulator() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskPropertyManipulator.prototype.setValue = function (id, newValue) {
var task = this.viewModel.tasks.getItemById(id);
var oldState = new HistoryItemState_1.HistoryItemState(id, this.getPropertyValue(task));
this.setPropertyValue(task, newValue);
this.viewModel.owner.resetAndUpdate();
return oldState;
};
TaskPropertyManipulator.prototype.restoreValue = function (state) {
if (!state)
return;
var stateValue = state.value;
var task = this.viewModel.tasks.getItemById(state.taskId);
this.setPropertyValue(task, stateValue);
this.viewModel.owner.resetAndUpdate();
};
return TaskPropertyManipulator;
}(BaseManipulator));
exports.TaskPropertyManipulator = TaskPropertyManipulator;
var TaskTitleManipulator = (function (_super) {
__extends(TaskTitleManipulator, _super);
function TaskTitleManipulator() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskTitleManipulator.prototype.getPropertyValue = function (task) {
return task.title;
};
TaskTitleManipulator.prototype.setPropertyValue = function (task, value) {
task.title = value;
this.dispatcher.notifyTaskTitleChanged(task.id, value);
};
return TaskTitleManipulator;
}(TaskPropertyManipulator));
var TaskDescriptionManipulator = (function (_super) {
__extends(TaskDescriptionManipulator, _super);
function TaskDescriptionManipulator() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskDescriptionManipulator.prototype.getPropertyValue = function (task) {
return task.description;
};
TaskDescriptionManipulator.prototype.setPropertyValue = function (task, value) {
task.description = value;
this.dispatcher.notifyTaskDescriptionChanged(task.id, value);
};
return TaskDescriptionManipulator;
}(TaskPropertyManipulator));
var TaskProgressManipulator = (function (_super) {
__extends(TaskProgressManipulator, _super);
function TaskProgressManipulator() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskProgressManipulator.prototype.getPropertyValue = function (task) {
return task.progress;
};
TaskProgressManipulator.prototype.setPropertyValue = function (task, value) {
value = value < 0 ? 0 : value > 100 ? 100 : value;
task.progress = value;
this.dispatcher.notifyTaskProgressChanged(task.id, value);
};
return TaskProgressManipulator;
}(TaskPropertyManipulator));
var TaskStartDateManipulator = (function (_super) {
__extends(TaskStartDateManipulator, _super);
function TaskStartDateManipulator() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskStartDateManipulator.prototype.getPropertyValue = function (task) {
return task.start;
};
TaskStartDateManipulator.prototype.setPropertyValue = function (task, value) {
task.start = value;
this.dispatcher.notifyTaskStartChanged(task.id, value);
};
return TaskStartDateManipulator;
}(TaskPropertyManipulator));
var TaskEndDateManipulator = (function (_super) {
__extends(TaskEndDateManipulator, _super);
function TaskEndDateManipulator() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskEndDateManipulator.prototype.getPropertyValue = function (task) {
return task.end;
};
TaskEndDateManipulator.prototype.setPropertyValue = function (task, value) {
task.end = value;
this.dispatcher.notifyTaskEndChanged(task.id, value);
};
return TaskEndDateManipulator;
}(TaskPropertyManipulator));
/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var HandlerStateBase_1 = __webpack_require__(66);
var Point_1 = __webpack_require__(3);
var DomUtils_1 = __webpack_require__(1);
var MouseHandlerStateBase = (function (_super) {
__extends(MouseHandlerStateBase, _super);
function MouseHandlerStateBase() {
return _super !== null && _super.apply(this, arguments) || this;
}
MouseHandlerStateBase.prototype.onMouseDoubleClick = function (_evt) { };
MouseHandlerStateBase.prototype.onMouseDown = function (_evt) { };
MouseHandlerStateBase.prototype.onMouseUp = function (_evt) { };
MouseHandlerStateBase.prototype.onMouseMove = function (_evt) { };
MouseHandlerStateBase.prototype.onMouseWheel = function (_evt) { };
MouseHandlerStateBase.prototype.getRelativePos = function (absolutePos) {
var taskAreaX = DomUtils_1.DomUtils.getAbsolutePositionX(this.handler.control.taskArea);
var taskAreaY = DomUtils_1.DomUtils.getAbsolutePositionY(this.handler.control.taskArea);
return new Point_1.Point(absolutePos.x - taskAreaX, absolutePos.y - taskAreaY);
};
return MouseHandlerStateBase;
}(HandlerStateBase_1.HandlerStateBase));
exports.MouseHandlerStateBase = MouseHandlerStateBase;
/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var Point_1 = __webpack_require__(3);
var DomUtils_1 = __webpack_require__(1);
var MouseHandlerStateBase_1 = __webpack_require__(18);
var MouseHandlerDragBaseState = (function (_super) {
__extends(MouseHandlerDragBaseState, _super);
function MouseHandlerDragBaseState() {
return _super !== null && _super.apply(this, arguments) || this;
}
MouseHandlerDragBaseState.prototype.onMouseDown = function (evt) {
this.currentPosition = new Point_1.Point(DomUtils_1.DomUtils.getEventX(evt), DomUtils_1.DomUtils.getEventY(evt));
};
MouseHandlerDragBaseState.prototype.onMouseUp = function (evt) {
this.onMouseUpInternal(evt);
this.handler.switchToDefaultState();
};
MouseHandlerDragBaseState.prototype.onMouseMove = function (evt) {
evt.preventDefault();
var position = new Point_1.Point(DomUtils_1.DomUtils.getEventX(evt), DomUtils_1.DomUtils.getEventY(evt));
this.onMouseMoveInternal(position);
this.currentPosition = position;
};
MouseHandlerDragBaseState.prototype.onMouseUpInternal = function (_evt) { };
MouseHandlerDragBaseState.prototype.onMouseMoveInternal = function (_position) { };
return MouseHandlerDragBaseState;
}(MouseHandlerStateBase_1.MouseHandlerStateBase));
exports.MouseHandlerDragBaseState = MouseHandlerDragBaseState;
/***/ }),
/* 20 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var HistoryItem_1 = __webpack_require__(9);
var InsertDependencyHistoryItem = (function (_super) {
__extends(InsertDependencyHistoryItem, _super);
function InsertDependencyHistoryItem(modelManipulator, predecessorId, successorId, type) {
var _this = _super.call(this, modelManipulator) || this;
_this.predecessorId = predecessorId;
_this.successorId = successorId;
_this.type = type;
return _this;
}
InsertDependencyHistoryItem.prototype.redo = function () {
this.dependency = this.modelManipulator.dependency.insertDependency(this.predecessorId, this.successorId, this.type, this.dependency ? this.dependency.internalId : null);
};
InsertDependencyHistoryItem.prototype.undo = function () {
this.modelManipulator.dependency.removeDependency(this.dependency.internalId);
};
return InsertDependencyHistoryItem;
}(HistoryItem_1.HistoryItem));
exports.InsertDependencyHistoryItem = InsertDependencyHistoryItem;
var RemoveDependencyHistoryItem = (function (_super) {
__extends(RemoveDependencyHistoryItem, _super);
function RemoveDependencyHistoryItem(modelManipulator, dependencyId) {
var _this = _super.call(this, modelManipulator) || this;
_this.dependencyId = dependencyId;
return _this;
}
RemoveDependencyHistoryItem.prototype.redo = function () {
this.dependency = this.modelManipulator.dependency.removeDependency(this.dependencyId);
};
RemoveDependencyHistoryItem.prototype.undo = function () {
this.modelManipulator.dependency.insertDependency(this.dependency.predecessorId, this.dependency.successorId, this.dependency.type, this.dependencyId);
};
return RemoveDependencyHistoryItem;
}(HistoryItem_1.HistoryItem));
exports.RemoveDependencyHistoryItem = RemoveDependencyHistoryItem;
/***/ }),
/* 21 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var HistoryItem_1 = __webpack_require__(9);
var CreateResourceHistoryItem = (function (_super) {
__extends(CreateResourceHistoryItem, _super);
function CreateResourceHistoryItem(modelManipulator, text) {
var _this = _super.call(this, modelManipulator) || this;
_this.text = text;
return _this;
}
CreateResourceHistoryItem.prototype.redo = function () {
this.resource = this.modelManipulator.resource.create(this.text, this.resource ? this.resource.internalId : null);
};
CreateResourceHistoryItem.prototype.undo = function () {
this.modelManipulator.resource.remove(this.resource.internalId);
};
return CreateResourceHistoryItem;
}(HistoryItem_1.HistoryItem));
exports.CreateResourceHistoryItem = CreateResourceHistoryItem;
var RemoveResourceHistoryItem = (function (_super) {
__extends(RemoveResourceHistoryItem, _super);
function RemoveResourceHistoryItem(modelManipulator, resourceId) {
var _this = _super.call(this, modelManipulator) || this;
_this.resourceId = resourceId;
return _this;
}
RemoveResourceHistoryItem.prototype.redo = function () {
this.resource = this.modelManipulator.resource.remove(this.resourceId);
};
RemoveResourceHistoryItem.prototype.undo = function () {
this.modelManipulator.resource.create(this.resource.text, this.resourceId);
};
return RemoveResourceHistoryItem;
}(HistoryItem_1.HistoryItem));
exports.RemoveResourceHistoryItem = RemoveResourceHistoryItem;
var AssignResourceHistoryItem = (function (_super) {
__extends(AssignResourceHistoryItem, _super);
function AssignResourceHistoryItem(modelManipulator, resourceId, taskId) {
var _this = _super.call(this, modelManipulator) || this;
_this.resourceId = resourceId;
_this.taskId = taskId;
return _this;
}
AssignResourceHistoryItem.prototype.redo = function () {
this.assignment = this.modelManipulator.resource.assign(this.resourceId, this.taskId, this.assignment ? this.assignment.internalId : null);
};
AssignResourceHistoryItem.prototype.undo = function () {
this.modelManipulator.resource.deassig(this.assignment.internalId);
};
return AssignResourceHistoryItem;
}(HistoryItem_1.HistoryItem));
exports.AssignResourceHistoryItem = AssignResourceHistoryItem;
var DeassignResourceHistoryItem = (function (_super) {
__extends(DeassignResourceHistoryItem, _super);
function DeassignResourceHistoryItem(modelManipulator, assignmentId) {
var _this = _super.call(this, modelManipulator) || this;
_this.assignmentId = assignmentId;
return _this;
}
DeassignResourceHistoryItem.prototype.redo = function () {
this.assignment = this.modelManipulator.resource.deassig(this.assignmentId);
};
DeassignResourceHistoryItem.prototype.undo = function () {
this.modelManipulator.resource.assign(this.assignment.resourceId, this.assignment.taskId, this.assignmentId);
};
return DeassignResourceHistoryItem;
}(HistoryItem_1.HistoryItem));
exports.DeassignResourceHistoryItem = DeassignResourceHistoryItem;
/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var CommandBase_1 = __webpack_require__(5);
var DialogBase = (function (_super) {
__extends(DialogBase, _super);
function DialogBase() {
return _super !== null && _super.apply(this, arguments) || this;
}
DialogBase.prototype.executeInternal = function (options) {
var _this = this;
var params = this.createParameters(options);
var initParams = params.clone();
this.control.ganttOwner.showDialog(this.getDialogName(), params, function (result) {
if (result)
_this.applyParameters(result, initParams);
}, function () {
_this.afterClosing();
});
return true;
};
DialogBase.prototype.applyParameters = function (_newParameters, _oldParameters) {
return false;
};
DialogBase.prototype.afterClosing = function () { };
DialogBase.prototype.getState = function () {
return new CommandBase_1.SimpleCommandState(this.isEnabled());
};
return DialogBase;
}(CommandBase_1.CommandBase));
exports.DialogBase = DialogBase;
var DialogParametersBase = (function () {
function DialogParametersBase() {
}
return DialogParametersBase;
}());
exports.DialogParametersBase = DialogParametersBase;
/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Time = (function () {
function Time(h, min, sec, msec) {
if (h === void 0) { h = 0; }
if (min === void 0) { min = 0; }
if (sec === void 0) { sec = 0; }
if (msec === void 0) { msec = 0; }
this._hour = 0;
this._min = 0;
this._sec = 0;
this._msec = 0;
this._fullmsec = 0;
this.hour = h;
this.min = min;
this.sec = sec;
this.msec = msec;
}
Object.defineProperty(Time.prototype, "hour", {
get: function () { return this._hour; },
set: function (h) {
if (h >= 0 && h < 24) {
this._hour = h;
this.updateFullMilleconds();
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(Time.prototype, "min", {
get: function () { return this._min; },
set: function (m) {
if (m >= 0 && m < 60) {
this._min = m;
this.updateFullMilleconds();
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(Time.prototype, "sec", {
get: function () { return this._sec; },
set: function (s) {
if (s >= 0 && s < 60) {
this._sec = s;
this.updateFullMilleconds();
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(Time.prototype, "msec", {
get: function () { return this._msec; },
set: function (ms) {
if (ms >= 0 && ms < 1000) {
this._msec = ms;
this.updateFullMilleconds();
}
},
enumerable: true,
configurable: true
});
Time.prototype.updateFullMilleconds = function () {
var minutes = this._hour * 60 + this._min;
var sec = minutes * 60 + this._sec;
this._fullmsec = sec * 1000 + this._msec;
};
Time.prototype.getTimeInMilleconds = function () {
return this._fullmsec;
};
return Time;
}());
exports.Time = Time;
/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DateTimeUtils_1 = __webpack_require__(2);
var TimeRange = (function () {
function TimeRange(start, end) {
var diff = DateTimeUtils_1.DateTimeUtils.caclTimeDifference(start, end);
if (diff >= 0) {
this._start = start;
this._end = end;
}
else {
this._start = end;
this._end = start;
}
}
;
Object.defineProperty(TimeRange.prototype, "start", {
get: function () { return this._start; },
set: function (time) {
if (time && DateTimeUtils_1.DateTimeUtils.caclTimeDifference(time, this._end) >= 0)
this._start = time;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TimeRange.prototype, "end", {
get: function () { return this._end; },
set: function (time) {
if (time && DateTimeUtils_1.DateTimeUtils.caclTimeDifference(this._start, time) >= 0)
this._end = time;
},
enumerable: true,
configurable: true
});
TimeRange.prototype.isTimeInRange = function (time) {
return DateTimeUtils_1.DateTimeUtils.caclTimeDifference(this._start, time) >= 0 && DateTimeUtils_1.DateTimeUtils.caclTimeDifference(time, this._end) >= 0;
};
TimeRange.prototype.hasIntersect = function (range) {
return this.isTimeInRange(range.start) || this.isTimeInRange(range.end) || range.isTimeInRange(this.start) || range.isTimeInRange(this.end);
};
TimeRange.prototype.concatWith = function (range) {
if (!this.hasIntersect(range))
return false;
;
this.start = DateTimeUtils_1.DateTimeUtils.getMinTime(this.start, range.start);
this.end = DateTimeUtils_1.DateTimeUtils.getMaxTime(this.end, range.end);
return true;
};
return TimeRange;
}());
exports.TimeRange = TimeRange;
/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DayOfWeekMonthlyOccurrence;
(function (DayOfWeekMonthlyOccurrence) {
DayOfWeekMonthlyOccurrence[DayOfWeekMonthlyOccurrence["First"] = 0] = "First";
DayOfWeekMonthlyOccurrence[DayOfWeekMonthlyOccurrence["Second"] = 1] = "Second";
DayOfWeekMonthlyOccurrence[DayOfWeekMonthlyOccurrence["Third"] = 2] = "Third";
DayOfWeekMonthlyOccurrence[DayOfWeekMonthlyOccurrence["Forth"] = 3] = "Forth";
DayOfWeekMonthlyOccurrence[DayOfWeekMonthlyOccurrence["Last"] = 4] = "Last";
})(DayOfWeekMonthlyOccurrence = exports.DayOfWeekMonthlyOccurrence || (exports.DayOfWeekMonthlyOccurrence = {}));
/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Utils_1 = __webpack_require__(0);
var Daily_1 = __webpack_require__(27);
var Weekly_1 = __webpack_require__(49);
var Monthly_1 = __webpack_require__(50);
var Yearly_1 = __webpack_require__(52);
var RecurrenceFactory = (function () {
function RecurrenceFactory() {
}
RecurrenceFactory.createRecurrenceByType = function (type) {
if (!type)
return null;
var correctedType = type.toLowerCase();
switch (correctedType) {
case "daily":
return new Daily_1.Daily();
case "weekly":
return new Weekly_1.Weekly();
case "monthly":
return new Monthly_1.Monthly();
case "yearly":
return new Yearly_1.Yearly();
}
return null;
};
RecurrenceFactory.createRecurrenceFromObject = function (sourceObj) {
if (!sourceObj)
return null;
var recurrence = this.createRecurrenceByType(sourceObj.type);
if (recurrence)
recurrence.assignFromObject(sourceObj);
return recurrence;
};
RecurrenceFactory.getEnumValue = function (type, value) {
if (!Utils_1.JsonUtils.isExists(type[value]))
return null;
var num = parseInt(value);
if (!isNaN(num))
return num;
return type[value];
};
return RecurrenceFactory;
}());
exports.RecurrenceFactory = RecurrenceFactory;
/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var RecurrenceBase_1 = __webpack_require__(11);
var DateTimeUtils_1 = __webpack_require__(2);
var Daily = (function (_super) {
__extends(Daily, _super);
function Daily() {
return _super !== null && _super.apply(this, arguments) || this;
}
Daily.prototype.checkDate = function (date) { return true; };
Daily.prototype.checkInterval = function (date) {
return DateTimeUtils_1.DateTimeUtils.getDaysBetween(this.start, date) % this.interval == 0;
};
Daily.prototype.calculatePointByInterval = function (date) {
var daysToAdd = this.interval;
if (!this.isRecurrencePoint(date))
daysToAdd -= DateTimeUtils_1.DateTimeUtils.getDaysBetween(this.start, date) % this.interval;
return DateTimeUtils_1.DateTimeUtils.addDays(date, daysToAdd);
};
Daily.prototype.calculateNearestPoint = function (date) {
return DateTimeUtils_1.DateTimeUtils.addDays(date, 1);
};
return Daily;
}(RecurrenceBase_1.RecurrenceBase));
exports.Daily = Daily;
/***/ }),
/* 28 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Enums_1 = __webpack_require__(7);
var DomUtils_1 = __webpack_require__(1);
var DateUtils = (function () {
function DateUtils() {
}
DateUtils.getDaysInMonth = function (month, year) {
var d = new Date(year, month + 1, 0);
return d.getDate();
};
DateUtils.getOffsetInMonths = function (start, end) {
return (end.getFullYear() - start.getFullYear()) * 12 + end.getMonth() - start.getMonth();
};
DateUtils.getOffsetInQuarters = function (start, end) {
return (end.getFullYear() - start.getFullYear()) * 4 + Math.floor(end.getMonth() / 3) - Math.floor(start.getMonth() / 3);
};
DateUtils.getNearestScaleTickDate = function (date, range, tickTimeSpan, viewType) {
var result = new Date();
var rangeStartTime = range.start.getTime();
var rangeEndTime = range.end.getTime();
result.setTime(date.getTime());
if (date.getTime() < rangeStartTime)
result.setTime(rangeStartTime);
else if (date.getTime() > rangeEndTime)
result.setTime(rangeEndTime);
else if (this.needCorrectDate(date, rangeStartTime, tickTimeSpan, viewType)) {
var nearestLeftTickTime = this.getNearestLeftTickTime(date, rangeStartTime, tickTimeSpan, viewType);
var nearestRightTickTime = this.getNextTickTime(nearestLeftTickTime, tickTimeSpan, viewType);
if (Math.abs(date.getTime() - nearestLeftTickTime) > Math.abs(date.getTime() - nearestRightTickTime))
result.setTime(nearestRightTickTime);
else
result.setTime(nearestLeftTickTime);
}
return result;
};
DateUtils.needCorrectDate = function (date, rangeStartTime, tickTimeSpan, viewType) {
if (viewType == Enums_1.ViewType.Months)
return date.getTime() !== new Date(date.getFullYear(), date.getMonth(), 1).getTime();
return (date.getTime() - rangeStartTime) % tickTimeSpan !== 0;
};
DateUtils.getNearestLeftTickTime = function (date, rangeStartTime, tickTimeSpan, viewType) {
if (viewType == Enums_1.ViewType.Months)
return new Date(date.getFullYear(), date.getMonth(), 1).getTime();
var tickCountAtLeft = Math.floor((date.getTime() - rangeStartTime) / tickTimeSpan);
return rangeStartTime + tickCountAtLeft * tickTimeSpan;
};
DateUtils.getNextTickTime = function (currentTickTime, tickTimeSpan, viewType) {
if (viewType == Enums_1.ViewType.Months) {
var nextTickDate = new Date();
nextTickDate.setTime(currentTickTime);
nextTickDate.setMonth(nextTickDate.getMonth() + 1);
return nextTickDate.getTime();
}
return currentTickTime + tickTimeSpan;
};
DateUtils.adjustStartEndDateByViewType = function (date, isStart, viewType) {
var result = new Date();
switch (viewType) {
case Enums_1.ViewType.TenMinutes:
result = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours());
if (date.getTime() !== result.getTime() && !isStart)
result = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours() + 1);
break;
case Enums_1.ViewType.SixHours:
case Enums_1.ViewType.Hours:
result = new Date(date.getFullYear(), date.getMonth(), date.getDate());
if (date.getTime() !== result.getTime() && !isStart)
result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);
break;
case Enums_1.ViewType.Days:
case Enums_1.ViewType.Weeks:
result = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay());
if (date.getTime() !== result.getTime() && !isStart)
result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 7 - date.getDay());
break;
case Enums_1.ViewType.Months:
case Enums_1.ViewType.Quarter:
case Enums_1.ViewType.Years:
result = new Date(date.getFullYear(), 0, 1);
if (date.getTime() !== result.getTime() && !isStart)
result = new Date(date.getFullYear() + 1, 0, 1);
break;
}
return result;
};
DateUtils.getTickTimeSpan = function (viewType) {
switch (viewType) {
case Enums_1.ViewType.TenMinutes:
return DateUtils.msPerHour / 6;
case Enums_1.ViewType.Hours:
return DateUtils.msPerHour;
case Enums_1.ViewType.SixHours:
return DateUtils.msPerHour * 6;
case Enums_1.ViewType.Days:
return DateUtils.msPerDay;
case Enums_1.ViewType.Weeks:
return DateUtils.msPerWeek;
case Enums_1.ViewType.Months:
return DateUtils.msPerMonth;
case Enums_1.ViewType.Quarter:
return DateUtils.msPerMonth * 3;
case Enums_1.ViewType.Years:
return DateUtils.msPerMonth * 12;
}
};
DateUtils.msPerHour = 3600000;
DateUtils.msPerDay = 24 * DateUtils.msPerHour;
DateUtils.msPerWeek = 7 * DateUtils.msPerDay;
DateUtils.msPerMonth = 30 * DateUtils.msPerDay;
DateUtils.ViewTypeToScaleMap = createViewTypeToScaleMap();
return DateUtils;
}());
exports.DateUtils = DateUtils;
var ElementTextHelper = (function () {
function ElementTextHelper() {
this.longestAbbrMonthName = null;
this.longestMonthName = null;
this.longestAbbrDayName = null;
var canvas = document.createElement("canvas");
this.textMeasureContext = canvas.getContext("2d");
}
ElementTextHelper.prototype.setFont = function (fontHolder) {
var computedStyle = DomUtils_1.DomUtils.getCurrentStyle(fontHolder);
var font = computedStyle.font ? computedStyle.font :
computedStyle.fontStyle + " " + computedStyle.fontVariant + " " + computedStyle.fontWeight + " "
+ computedStyle.fontSize + " / " + computedStyle.lineHeight + " " + computedStyle.fontFamily;
this.textMeasureContext.font = font;
};
ElementTextHelper.prototype.setSettings = function (startTime, viewType, modelItems) {
this.startTime = startTime;
this.viewType = viewType;
this.modelItems = modelItems;
};
ElementTextHelper.prototype.getScaleItemStartDate = function (index, scaleType) {
var result = new Date(this.startTime);
switch (scaleType) {
case Enums_1.ViewType.TenMinutes:
result.setTime(this.startTime + index * DateUtils.msPerHour / 6);
break;
case Enums_1.ViewType.Hours:
result.setTime(this.startTime + index * DateUtils.msPerHour);
break;
case Enums_1.ViewType.SixHours:
result.setTime(this.startTime + index * DateUtils.msPerHour * 6);
break;
case Enums_1.ViewType.Days:
result.setTime(this.startTime + index * DateUtils.msPerDay);
break;
case Enums_1.ViewType.Weeks:
result.setTime(this.startTime + index * DateUtils.msPerWeek);
break;
case Enums_1.ViewType.Months:
result.setMonth(result.getMonth() + index);
break;
case Enums_1.ViewType.Quarter:
result.setMonth(result.getMonth() + index * 3);
break;
case Enums_1.ViewType.Years:
result.setFullYear(result.getFullYear() + index);
break;
case Enums_1.ViewType.FiveYears:
result.setFullYear(result.getFullYear() + index * 5);
break;
}
return result;
};
ElementTextHelper.prototype.getScaleItemText = function (index, scaleType) {
var scaleItemStartDate = this.getScaleItemStartDate(index, scaleType);
var isViewTypeScale = this.viewType.valueOf() == scaleType.valueOf();
switch (scaleType) {
case Enums_1.ViewType.TenMinutes:
return this.getTenMinutesScaleItemText(scaleItemStartDate);
case Enums_1.ViewType.Hours:
case Enums_1.ViewType.SixHours:
return this.getHoursScaleItemText(scaleItemStartDate);
case Enums_1.ViewType.Days:
return this.getDaysScaleItemText(scaleItemStartDate, isViewTypeScale);
case Enums_1.ViewType.Weeks:
return this.getWeeksScaleItemText(scaleItemStartDate, isViewTypeScale);
case Enums_1.ViewType.Months:
return this.getMonthsScaleItemText(scaleItemStartDate, isViewTypeScale);
case Enums_1.ViewType.Quarter:
return this.getQuarterScaleItemText(scaleItemStartDate, isViewTypeScale);
case Enums_1.ViewType.Years:
return this.getYearsScaleItemText(scaleItemStartDate);
case Enums_1.ViewType.FiveYears:
return this.getFiveYearsScaleItemText(scaleItemStartDate);
}
};
ElementTextHelper.prototype.getTenMinutesScaleItemText = function (scaleItemDate) {
var minutes = scaleItemDate.getMinutes() + 1;
return (Math.ceil(minutes / 10) * 10).toString();
};
ElementTextHelper.prototype.getThirtyMinutesScaleItemText = function (scaleItemDate) {
var minutes = scaleItemDate.getMinutes();
return minutes < 30 ? "30" : "60";
};
ElementTextHelper.prototype.getHoursScaleItemText = function (scaleItemDate) {
var hours = scaleItemDate.getHours();
var hourDisplayText = this.getHourDisplayText(hours);
var amPmText = hours < 12 ? this.getAmText() : this.getPmText();
return this.getHoursScaleItemTextCore(hourDisplayText, amPmText);
};
ElementTextHelper.prototype.getDaysScaleItemText = function (scaleItemDate, isViewTypeScale) {
return this.getDayTotalText(scaleItemDate, true, isViewTypeScale, isViewTypeScale, !isViewTypeScale);
};
ElementTextHelper.prototype.getWeeksScaleItemText = function (scaleItemDate, isViewTypeScale) {
var weekLastDayDate = new Date(scaleItemDate.getTime() + DateUtils.msPerWeek - DateUtils.msPerDay);
return this.getWeeksScaleItemTextCore(this.getDayTotalText(scaleItemDate, isViewTypeScale, true, isViewTypeScale, !isViewTypeScale), this.getDayTotalText(weekLastDayDate, isViewTypeScale, true, isViewTypeScale, !isViewTypeScale));
};
ElementTextHelper.prototype.getMonthsScaleItemText = function (scaleItemDate, isViewTypeScale) {
var monthNames = this.getMonthNames();
var yearDisplayText = !isViewTypeScale ? scaleItemDate.getFullYear().toString() : "";
return this.getMonthsScaleItemTextCore(monthNames[scaleItemDate.getMonth()], yearDisplayText);
};
ElementTextHelper.prototype.getQuarterScaleItemText = function (scaleItemDate, isViewTypeScale) {
var quarterNames = this.getQuarterNames();
var yearDisplayText = !isViewTypeScale ? scaleItemDate.getFullYear().toString() : "";
return this.getMonthsScaleItemTextCore(quarterNames[Math.floor(scaleItemDate.getMonth() / 3)], yearDisplayText);
};
ElementTextHelper.prototype.getYearsScaleItemText = function (scaleItemDate) {
return scaleItemDate.getFullYear().toString();
};
ElementTextHelper.prototype.getFiveYearsScaleItemText = function (scaleItemDate) {
return scaleItemDate.getFullYear().toString() + " - " + (scaleItemDate.getFullYear() + 4).toString();
};
ElementTextHelper.prototype.getHourDisplayText = function (hours) {
if (this.hasAmPm())
return (hours == 0 ? 12 : (hours <= 12 ? hours : hours - 12)).toString();
return hours < 10 ? "0" + hours : hours.toString();
};
ElementTextHelper.prototype.getDayTotalText = function (scaleItemDate, displayDayName, useAbbrDayNames, useAbbrMonthNames, displayYear) {
var monthNames = useAbbrMonthNames ? this.getAbbrMonthNames() : this.getMonthNames();
var dayNames = useAbbrDayNames ? this.getAbbrDayNames() : this.getDayNames();
var dayNameDisplayText = displayDayName ? dayNames[scaleItemDate.getDay()] : "";
var day = scaleItemDate.getDate();
var monthName = monthNames[scaleItemDate.getMonth()];
var yearDisplayText = displayYear ? scaleItemDate.getFullYear().toString() : "";
return this.getDayTotalTextCore(dayNameDisplayText, day.toString(), monthName, yearDisplayText);
};
ElementTextHelper.prototype.getTaskText = function (index) {
var item = this.modelItems[index];
return item ? item.task.title : "";
};
ElementTextHelper.prototype.getTaskVisibility = function (index) {
var item = this.modelItems[index];
return !!item && item.getVisible();
};
ElementTextHelper.prototype.hasAmPm = function () {
return this.getAmText().length > 0 || this.getPmText().length > 0;
};
ElementTextHelper.prototype.getScaleItemTextTemplate = function (viewType) {
switch (viewType) {
case Enums_1.ViewType.TenMinutes:
return "00";
case Enums_1.ViewType.Hours:
case Enums_1.ViewType.SixHours:
return this.getHoursScaleItemTextCore("00", this.getAmText());
case Enums_1.ViewType.Days:
return this.getDayTextTemplate();
case Enums_1.ViewType.Weeks:
return this.getWeekTextTemplate();
case Enums_1.ViewType.Months:
return this.getMonthsScaleItemTextCore(this.getLongestMonthName(), "");
case Enums_1.ViewType.Quarter:
return "Q4";
case Enums_1.ViewType.Years:
return "0000";
}
};
ElementTextHelper.prototype.getDayTextTemplate = function () {
return this.getDayTotalTextCore(this.getLongestAbbrDayName(), "00", this.getLongestAbbrMonthName(), "");
};
ElementTextHelper.prototype.getWeekTextTemplate = function () {
var dayTextTemplate = this.getDayTextTemplate();
return this.getWeeksScaleItemTextCore(dayTextTemplate, dayTextTemplate);
};
ElementTextHelper.prototype.getHoursScaleItemTextCore = function (hourDisplayText, amPmText) {
return hourDisplayText + ":00" + (this.hasAmPm() ? " " + amPmText : "");
};
ElementTextHelper.prototype.getDayTotalTextCore = function (dayName, dayValueString, monthName, yearValueString) {
var result = dayName.length > 0 ? dayName + ", " : "";
result += dayValueString + " " + monthName;
result += (yearValueString.length > 0 ? " " + yearValueString : "");
return result;
};
ElementTextHelper.prototype.getWeeksScaleItemTextCore = function (firstDayOfWeekString, lastDayOfWeekString) {
return firstDayOfWeekString + " - " + lastDayOfWeekString;
};
ElementTextHelper.prototype.getMonthsScaleItemTextCore = function (monthName, yearValueString) {
var result = monthName;
if (yearValueString.length > 0)
result += " " + yearValueString;
return result;
};
ElementTextHelper.prototype.getLongestAbbrMonthName = function () {
if (this.longestAbbrMonthName == null)
this.longestAbbrMonthName = this.getLongestText(this.getAbbrMonthNames());
return this.longestAbbrMonthName;
};
ElementTextHelper.prototype.getLongestMonthName = function () {
if (this.longestMonthName == null)
this.longestMonthName = this.getLongestText(this.getMonthNames());
return this.longestMonthName;
};
ElementTextHelper.prototype.getLongestAbbrDayName = function () {
if (this.longestAbbrDayName == null)
this.longestAbbrDayName = this.getLongestText(this.getAbbrDayNames());
return this.longestAbbrDayName;
};
ElementTextHelper.prototype.getLongestText = function (texts) {
var _this = this;
var result = "";
var longestTextWidth = 0;
texts.forEach(function (text) {
var textWidth = _this.getTextWidth(text);
if (textWidth > longestTextWidth) {
longestTextWidth = textWidth;
result = text;
}
});
return result;
};
ElementTextHelper.prototype.getTextWidth = function (text) {
return Math.round(this.textMeasureContext.measureText(text).width);
};
ElementTextHelper.prototype.getAmText = function () {
return "AM";
};
ElementTextHelper.prototype.getPmText = function () {
return "PM";
};
ElementTextHelper.prototype.getQuarterNames = function () {
return ["Q1", "Q2", "Q3", "Q4"];
};
ElementTextHelper.prototype.getMonthNames = function () {
return ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ""];
};
ElementTextHelper.prototype.getDayNames = function () {
return ["Sunday", "Monday", "ASP", "Wednesday", "Thursday", "Friday", "Saturday"];
};
ElementTextHelper.prototype.getAbbrMonthNames = function () {
return ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ""];
};
ElementTextHelper.prototype.getAbbrDayNames = function () {
return ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
};
return ElementTextHelper;
}());
exports.ElementTextHelper = ElementTextHelper;
function createViewTypeToScaleMap() {
var result = {};
result[Enums_1.ViewType.TenMinutes] = Enums_1.ViewType.Hours;
result[Enums_1.ViewType.Hours] = Enums_1.ViewType.Days;
result[Enums_1.ViewType.SixHours] = Enums_1.ViewType.Days;
result[Enums_1.ViewType.Days] = Enums_1.ViewType.Weeks;
result[Enums_1.ViewType.Weeks] = Enums_1.ViewType.Months;
result[Enums_1.ViewType.Months] = Enums_1.ViewType.Years;
result[Enums_1.ViewType.Quarter] = Enums_1.ViewType.Years;
result[Enums_1.ViewType.Years] = Enums_1.ViewType.FiveYears;
return result;
}
/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Point_1 = __webpack_require__(3);
var Size_1 = __webpack_require__(15);
var Margins_1 = __webpack_require__(54);
var GridElementInfo = (function () {
function GridElementInfo(className, position, size) {
this.id = GridElementInfo.id++;
this.position = new Point_1.Point();
this.size = new Size_1.Size();
this.margins = new Margins_1.Margins();
this.attr = {};
if (className)
this.className = className;
if (position)
this.setPosition(position);
if (size)
this.setSize(size);
}
GridElementInfo.prototype.setSize = function (size) {
this.size.width = size.width;
this.size.height = size.height;
};
GridElementInfo.prototype.setPosition = function (position) {
this.position.x = position.x;
this.position.y = position.y;
};
GridElementInfo.prototype.assignToElement = function (element) {
this.assignPosition(element);
this.assignSize(element);
this.assignMargins(element);
if (this.className)
element.className = this.className;
};
GridElementInfo.prototype.assignPosition = function (element) {
if (this.position.x != null)
element.style.left = this.position.x + "px";
if (this.position.y != null)
element.style.top = this.position.y + "px";
};
GridElementInfo.prototype.assignSize = function (element) {
if (this.size.width)
element.style.width = this.size.width + "px";
if (this.size.height)
element.style.height = this.size.height + "px";
};
GridElementInfo.prototype.assignMargins = function (element) {
if (this.margins.marginLeft)
element.style.marginLeft = this.margins.marginLeft + "px";
if (this.margins.marginTop)
element.style.marginTop = this.margins.marginTop + "px";
if (this.margins.marginRight)
element.style.marginRight = this.margins.marginRight + "px";
if (this.margins.marginBottom)
element.style.marginBottom = this.margins.marginBottom + "px";
};
GridElementInfo.prototype.setAttribute = function (name, value) {
this.attr[name] = value;
};
GridElementInfo.id = 0;
return GridElementInfo;
}());
exports.GridElementInfo = GridElementInfo;
/***/ }),
/* 30 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var TaskAreaManager_1 = __webpack_require__(8);
var Enums_1 = __webpack_require__(7);
var DateRange_1 = __webpack_require__(10);
var DomUtils_1 = __webpack_require__(1);
var TaskEditController = (function () {
function TaskEditController(gantt) {
this.taskIndex = -1;
this.successorIndex = -1;
this.editing = false;
this.gantt = gantt;
this.createElements();
this.createClassToSourceMap();
}
Object.defineProperty(TaskEditController.prototype, "taskId", {
get: function () {
return this.gantt.viewModel.items[this.taskIndex].task.internalId;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TaskEditController.prototype, "successorId", {
get: function () {
return this.gantt.viewModel.items[this.successorIndex].task.internalId;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TaskEditController.prototype, "task", {
get: function () {
return this.gantt.viewModel.items[this.taskIndex].task;
},
enumerable: true,
configurable: true
});
TaskEditController.prototype.show = function (taskIndex) {
if (!this.editing && this.gantt.settings.editing.enabled) {
this.taskIndex = taskIndex;
this.updateWrapInfo();
this.wrapInfo.assignPosition(this.baseElement);
this.wrapInfo.assignSize(this.baseElement);
this.gantt.taskArea.appendChild(this.baseElement);
this.baseElement.className = TaskEditController.CLASSNAMES.TASK_EDIT_BOX;
if (this.task.isMilestone())
this.baseElement.className = this.baseElement.className + " milestone";
else {
if (!this.gantt.settings.editing.allowDependencyAdding)
this.baseElement.className = this.baseElement.className + " hide-dependency";
if (!this.gantt.settings.editing.allowTaskUpdating)
this.baseElement.className = this.baseElement.className + " hide-updating";
this.progressEdit.style.left = ((this.task.progress / 100) *
this.wrapInfo.size.width - (this.progressEdit.offsetWidth / 2)) + "px";
}
this.taskDateRange = new DateRange_1.DateRange(this.task.start, this.task.end);
}
};
TaskEditController.prototype.updateWrapInfo = function () {
this.wrapInfo = this.gantt.gridLayoutCalculator.getTaskWrapperElementInfo(this.taskIndex);
this.wrapInfo.size.width = this.gantt.gridLayoutCalculator.getTaskWidth(this.taskIndex);
this.wrapInfo.position.x--;
if (this.task.isMilestone())
this.wrapInfo.position.y = this.gantt.gridLayoutCalculator.getSelectionPosition(this.taskIndex).y;
};
TaskEditController.prototype.hide = function () {
var parentNode = this.baseElement.parentNode;
if (parentNode)
parentNode.removeChild(this.baseElement);
};
TaskEditController.prototype.showDependencySuccessor = function (taskIndex) {
if (this.successorIndex != taskIndex && this.taskIndex != taskIndex) {
this.successorIndex = taskIndex;
var wrapInfo = this.gantt.gridLayoutCalculator.getTaskWrapperElementInfo(taskIndex);
wrapInfo.size.width = this.gantt.gridLayoutCalculator.getTaskWidth(taskIndex) + 1;
wrapInfo.assignPosition(this.dependencySuccessorBaseElement);
wrapInfo.assignSize(this.dependencySuccessorBaseElement);
wrapInfo.assignSize(this.dependencySuccessorFrame);
this.gantt.taskArea.appendChild(this.dependencySuccessorBaseElement);
}
};
TaskEditController.prototype.hideDependencySuccessor = function () {
var parentNode = this.dependencySuccessorBaseElement.parentNode;
if (parentNode)
parentNode.removeChild(this.dependencySuccessorBaseElement);
this.successorIndex = -1;
};
TaskEditController.prototype.processProgress = function (position) {
this.editing = true;
var progressOffset = position.x - this.wrapInfo.position.x;
var progress = 0;
if (position.x > this.wrapInfo.position.x)
if (position.x < this.wrapInfo.position.x + this.wrapInfo.size.width)
progress = Math.round((progressOffset) / this.baseElement.clientWidth * 100);
else
progress = 100;
this.progressEdit.style.left = ((progress / 100) *
this.wrapInfo.size.width - (this.progressEdit.offsetWidth / 2)) + "px";
this.statusMsg.innerHTML = progress + "%";
this.showMessageBox(DomUtils_1.DomUtils.getAbsolutePositionX(this.progressEdit) - this.statusMsg.clientWidth / 2);
};
TaskEditController.prototype.confirmProgress = function () {
this.editing = false;
var progress = Math.round((this.progressEdit.offsetLeft + (this.progressEdit.offsetWidth / 2)) / this.wrapInfo.size.width * 100);
this.gantt.commandManager.changeTaskProgressCommand.execute(this.taskId, progress);
};
TaskEditController.prototype.isShouldProcessEnd = function (positionX) {
return positionX > this.wrapInfo.position.x - this.endEdit.clientWidth;
};
TaskEditController.prototype.processEnd = function (position) {
this.baseElement.className = this.baseElement.className + " move";
this.editing = true;
var positionX = position.x > this.wrapInfo.position.x ? position.x : this.wrapInfo.position.x;
var width = positionX - this.wrapInfo.position.x;
this.baseElement.style.width = (width < 1 ? 0 : width) + "px";
var startDate = this.task.start;
var date = this.gantt.gridLayoutCalculator.getDateByPos(positionX);
date.setSeconds(0);
if (date < startDate || width < 1)
this.taskDateRange.end.setTime(startDate.getTime());
else
this.taskDateRange.end = this.getNewDate(this.task.end, date);
this.showTimeMessage(startDate, this.taskDateRange.end, (DomUtils_1.DomUtils.getAbsolutePositionX(this.baseElement) + this.baseElement.clientWidth - this.statusMsg.clientWidth));
};
TaskEditController.prototype.confirmEnd = function () {
this.baseElement.className = TaskEditController.CLASSNAMES.TASK_EDIT_BOX;
this.editing = false;
this.gantt.commandManager.changeTaskEndCommand.execute(this.taskId, this.taskDateRange.end);
this.updateWrapInfo();
};
TaskEditController.prototype.processStart = function (position) {
this.baseElement.className = this.baseElement.className + " move";
this.editing = true;
var positionX = position.x < this.wrapInfo.position.x + this.wrapInfo.size.width ? position.x : this.wrapInfo.position.x + this.wrapInfo.size.width;
var width = this.wrapInfo.size.width - (positionX - this.wrapInfo.position.x);
this.baseElement.style.left = positionX + "px";
this.baseElement.style.width = (width < 1 ? 0 : width) + "px";
var endDate = this.task.end;
var date = this.gantt.gridLayoutCalculator.getDateByPos(positionX);
date.setSeconds(0);
if (date > endDate || width < 1)
this.taskDateRange.start.setTime(endDate.getTime());
else
this.taskDateRange.start = this.getNewDate(this.task.start, date);
this.showTimeMessage(this.taskDateRange.start, endDate, DomUtils_1.DomUtils.getAbsolutePositionX(this.baseElement));
};
TaskEditController.prototype.confirmStart = function () {
this.baseElement.className = TaskEditController.CLASSNAMES.TASK_EDIT_BOX;
this.editing = false;
this.gantt.commandManager.changeTaskStartCommand.execute(this.taskId, this.taskDateRange.start);
this.updateWrapInfo();
};
TaskEditController.prototype.processMove = function (delta) {
if (this.gantt.settings.editing.allowTaskUpdating) {
this.baseElement.className = this.baseElement.className + " move";
this.editing = true;
var left = this.baseElement.offsetLeft + delta;
this.baseElement.style.left = left + "px";
var date = this.gantt.gridLayoutCalculator.getDateByPos(left);
this.taskDateRange.start = this.getNewDate(this.task.start, date);
var dateDiff = this.task.start.getTime() - date.getTime();
var endDate = new Date(this.task.end.getTime() - dateDiff);
this.taskDateRange.end = this.getNewDate(this.task.end, endDate);
this.showTimeMessage(this.taskDateRange.start, this.taskDateRange.end, DomUtils_1.DomUtils.getAbsolutePositionX(this.baseElement));
}
};
TaskEditController.prototype.confirmMove = function () {
this.baseElement.className = TaskEditController.CLASSNAMES.TASK_EDIT_BOX;
if (this.editing) {
this.gantt.history.beginTransaction();
this.gantt.commandManager.changeTaskStartCommand.execute(this.taskId, this.taskDateRange.start);
this.gantt.commandManager.changeTaskEndCommand.execute(this.taskId, this.taskDateRange.end);
this.gantt.history.endTransaction();
}
this.updateWrapInfo();
this.editing = false;
};
TaskEditController.prototype.getNewDate = function (referenceDate, newDate) {
if (this.gantt.settings.viewType > Enums_1.ViewType.SixHours) {
var date = new Date(referenceDate.getTime());
date.setDate(newDate.getDate());
date.setMonth(newDate.getMonth());
date.setFullYear(newDate.getFullYear());
if (this.gantt.settings.viewType == Enums_1.ViewType.Days)
date.setHours(newDate.getHours());
return date;
}
else
return newDate;
};
TaskEditController.prototype.startDependency = function (pos) {
this.dependencyLine = document.createElement("DIV");
this.dependencyLine.className = TaskEditController.CLASSNAMES.TASK_EDIT_DEPENDENCY_LINE;
this.gantt.taskArea.appendChild(this.dependencyLine);
this.startPosition = pos;
};
TaskEditController.prototype.processDependency = function (pos) {
this.editing = true;
this.drawline(this.startPosition, pos);
};
TaskEditController.prototype.endDependency = function (type) {
this.editing = false;
if (type != null)
this.gantt.commandManager.createDependencyCommand.execute(this.task.internalId, this.successorId, type);
var parentNode = this.dependencyLine.parentNode;
if (parentNode)
parentNode.removeChild(this.dependencyLine);
this.dependencyLine = null;
this.hideDependencySuccessor();
this.hide();
};
TaskEditController.prototype.selectDependency = function (id) {
if (this.gantt.settings.editing.allowDependencyDeleting)
this.dependencyId = id;
};
TaskEditController.prototype.isDependencySelected = function (id) {
return this.dependencyId && this.dependencyId == id;
};
TaskEditController.prototype.deleteSelectedDependency = function () {
if (this.dependencyId)
this.gantt.commandManager.removeDependencyCommand.execute(this.dependencyId);
};
TaskEditController.prototype.showTimeMessage = function (start, end, posX) {
this.statusMsg.innerHTML = "";
var timeElement = document.createElement("DIV");
timeElement.className = TaskEditController.CLASSNAMES.TASK_EDIT_PROGRESS_STATUS_TIME;
var startEl = document.createElement("DIV");
var startTitle = document.createElement("SPAN");
startTitle.innerHTML = "Start: ";
var startValue = document.createElement("SPAN");
startValue.innerHTML = this.formatDate(start);
startEl.appendChild(startTitle);
startEl.appendChild(startValue);
var endEl = document.createElement("DIV");
var endTitle = document.createElement("SPAN");
endTitle.innerHTML = "End: ";
var endValue = document.createElement("SPAN");
endValue.innerHTML = this.formatDate(end);
endEl.appendChild(endTitle);
endEl.appendChild(endValue);
timeElement.appendChild(startEl);
timeElement.appendChild(endEl);
this.statusMsg.appendChild(timeElement);
this.showMessageBox(posX);
};
TaskEditController.prototype.showMessageBox = function (posX) {
var _this = this;
this.statusMsg.style.display = "block";
this.statusMsg.style.left = posX + "px";
this.statusMsg.style.top = (DomUtils_1.DomUtils.getAbsolutePositionY(this.baseElement) - this.statusMsg.clientHeight) + "px";
if (this.statusTimerId)
clearTimeout(this.statusTimerId);
this.statusTimerId = setTimeout(function () {
_this.statusMsg.style.display = "none";
}, 1500);
};
TaskEditController.prototype.formatDate = function (date) {
return ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + "/" +
date.getFullYear() + " " + ('0' + date.getHours()).slice(-2) + ":" + ('0' + date.getMinutes()).slice(-2);
};
TaskEditController.prototype.createElements = function () {
this.baseElement = document.createElement("DIV");
this.baseFrame = document.createElement("DIV");
this.baseFrame.className = TaskEditController.CLASSNAMES.TASK_EDIT_FRAME;
this.baseElement.appendChild(this.baseFrame);
this.progressEdit = document.createElement("DIV");
this.progressEdit.className = TaskEditController.CLASSNAMES.TASK_EDIT_PROGRESS;
this.baseFrame.appendChild(this.progressEdit);
this.statusMsg = document.createElement("DIV");
this.statusMsg.className = TaskEditController.CLASSNAMES.TASK_EDIT_PROGRESS_STATUS;
this.baseFrame.appendChild(this.statusMsg);
this.dependencyFinish = document.createElement("DIV");
this.dependencyFinish.className = TaskEditController.CLASSNAMES.TASK_EDIT_DEPENDENCY_RIGTH;
this.baseFrame.appendChild(this.dependencyFinish);
this.dependencyStart = document.createElement("DIV");
this.dependencyStart.className = TaskEditController.CLASSNAMES.TASK_EDIT_DEPENDENCY_LEFT;
this.baseFrame.appendChild(this.dependencyStart);
this.startEdit = document.createElement("DIV");
this.startEdit.className = TaskEditController.CLASSNAMES.TASK_EDIT_START;
this.baseFrame.appendChild(this.startEdit);
this.endEdit = document.createElement("DIV");
this.endEdit.className = TaskEditController.CLASSNAMES.TASK_EDIT_END;
this.baseFrame.appendChild(this.endEdit);
this.dependencySuccessorBaseElement = document.createElement("DIV");
this.dependencySuccessorBaseElement.className = TaskEditController.CLASSNAMES.TASK_EDIT_BOX_SUCCESSOR;
this.dependencySuccessorFrame = document.createElement("DIV");
this.dependencySuccessorFrame.className = TaskEditController.CLASSNAMES.TASK_EDIT_FRAME_SUCCESSOR;
this.dependencySuccessorBaseElement.appendChild(this.dependencySuccessorFrame);
this.dependencySuccessorStart = document.createElement("DIV");
this.dependencySuccessorStart.className = TaskEditController.CLASSNAMES.TASK_EDIT_SUCCESSOR_DEPENDENCY_RIGTH;
this.dependencySuccessorFrame.appendChild(this.dependencySuccessorStart);
this.dependencySuccessorFinish = document.createElement("DIV");
this.dependencySuccessorFinish.className = TaskEditController.CLASSNAMES.TASK_EDIT_SUCCESSOR_DEPENDENCY_LEFT;
this.dependencySuccessorFrame.appendChild(this.dependencySuccessorFinish);
this.attachEvents();
};
TaskEditController.prototype.attachEvents = function () {
this.baseElement.addEventListener("mouseleave", function (evt) {
if (!this.editing)
this.hide();
}.bind(this));
};
TaskEditController.prototype.drawline = function (start, end) {
if (start.x > end.x) {
var temp = end;
end = start;
start = temp;
}
var angle = Math.atan((start.y - end.y) / (end.x - start.x));
angle = (angle * 180 / Math.PI);
angle = -angle;
var length = Math.sqrt((start.x - end.x) * (start.x - end.x) + (start.y - end.y) * (start.y - end.y));
this.dependencyLine.style.left = start.x + "px";
this.dependencyLine.style.top = start.y + "px";
this.dependencyLine.style.width = length + "px";
this.dependencyLine.style.transform = "rotate(" + angle + "deg)";
};
TaskEditController.prototype.createClassToSourceMap = function () {
TaskEditController.classToSource[TaskEditController.CLASSNAMES.TASK_EDIT_PROGRESS] = TaskAreaManager_1.MouseEventSource.TaskEdit_Progress;
TaskEditController.classToSource[TaskEditController.CLASSNAMES.TASK_EDIT_START] = TaskAreaManager_1.MouseEventSource.TaskEdit_Start;
TaskEditController.classToSource[TaskEditController.CLASSNAMES.TASK_EDIT_END] = TaskAreaManager_1.MouseEventSource.TaskEdit_End;
TaskEditController.classToSource[TaskEditController.CLASSNAMES.TASK_EDIT_FRAME] = TaskAreaManager_1.MouseEventSource.TaskEdit_Frame;
TaskEditController.classToSource[TaskEditController.CLASSNAMES.TASK_EDIT_DEPENDENCY_RIGTH] = TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyStart;
TaskEditController.classToSource[TaskEditController.CLASSNAMES.TASK_EDIT_DEPENDENCY_LEFT] = TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyFinish;
TaskEditController.classToSource[TaskEditController.CLASSNAMES.TASK_EDIT_SUCCESSOR_DEPENDENCY_RIGTH] = TaskAreaManager_1.MouseEventSource.Successor_DependencyStart;
TaskEditController.classToSource[TaskEditController.CLASSNAMES.TASK_EDIT_SUCCESSOR_DEPENDENCY_LEFT] = TaskAreaManager_1.MouseEventSource.Successor_DependencyFinish;
};
TaskEditController.CLASSNAMES = {
TASK_EDIT_BOX: "dx-gantt-task-edit-wrapper",
TASK_EDIT_FRAME: "dx-gantt-task-edit-frame",
TASK_EDIT_PROGRESS: "dx-gantt-task-edit-progress",
TASK_EDIT_PROGRESS_STATUS: "dx-gantt-task-edit-progress-status",
TASK_EDIT_PROGRESS_STATUS_TIME: "dx-gantt-status-time",
TASK_EDIT_DEPENDENCY_RIGTH: "dx-gantt-task-edit-dependency-r",
TASK_EDIT_DEPENDENCY_LEFT: "dx-gantt-task-edit-dependency-l",
TASK_EDIT_START: "dx-gantt-task-edit-start",
TASK_EDIT_END: "dx-gantt-task-edit-end",
TASK_EDIT_DEPENDENCY_LINE: "dx-gantt-task-edit-dependency-line",
TASK_EDIT_BOX_SUCCESSOR: "dx-gantt-task-edit-wrapper-successor",
TASK_EDIT_FRAME_SUCCESSOR: "dx-gantt-task-edit-frame-successor",
TASK_EDIT_SUCCESSOR_DEPENDENCY_RIGTH: "dx-gantt-task-edit-successor-dependency-r",
TASK_EDIT_SUCCESSOR_DEPENDENCY_LEFT: "dx-gantt-task-edit-successor-dependency-l"
};
TaskEditController.classToSource = {};
return TaskEditController;
}());
exports.TaskEditController = TaskEditController;
/***/ }),
/* 31 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var HistoryItem_1 = __webpack_require__(9);
var TaskPropertiesHistoryItemBase = (function (_super) {
__extends(TaskPropertiesHistoryItemBase, _super);
function TaskPropertiesHistoryItemBase(modelManipulator, taskId, newValue) {
var _this = _super.call(this, modelManipulator) || this;
_this.taskId = taskId;
_this.newValue = newValue;
return _this;
}
TaskPropertiesHistoryItemBase.prototype.redo = function () {
this.oldState = this.getPropertiesManipulator().setValue(this.taskId, this.newValue);
};
TaskPropertiesHistoryItemBase.prototype.undo = function () {
this.getPropertiesManipulator().restoreValue(this.oldState);
};
TaskPropertiesHistoryItemBase.prototype.getPropertiesManipulator = function () {
throw new Error("Not Implemented");
};
return TaskPropertiesHistoryItemBase;
}(HistoryItem_1.HistoryItem));
exports.TaskPropertiesHistoryItemBase = TaskPropertiesHistoryItemBase;
var TaskTitleHistoryItem = (function (_super) {
__extends(TaskTitleHistoryItem, _super);
function TaskTitleHistoryItem() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskTitleHistoryItem.prototype.getPropertiesManipulator = function () {
return this.modelManipulator.task.properties.title;
};
return TaskTitleHistoryItem;
}(TaskPropertiesHistoryItemBase));
exports.TaskTitleHistoryItem = TaskTitleHistoryItem;
var TaskDesriptionHistoryItem = (function (_super) {
__extends(TaskDesriptionHistoryItem, _super);
function TaskDesriptionHistoryItem() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskDesriptionHistoryItem.prototype.getPropertiesManipulator = function () {
return this.modelManipulator.task.properties.description;
};
return TaskDesriptionHistoryItem;
}(TaskPropertiesHistoryItemBase));
exports.TaskDesriptionHistoryItem = TaskDesriptionHistoryItem;
var TaskProgressHistoryItem = (function (_super) {
__extends(TaskProgressHistoryItem, _super);
function TaskProgressHistoryItem() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskProgressHistoryItem.prototype.getPropertiesManipulator = function () {
return this.modelManipulator.task.properties.progress;
};
return TaskProgressHistoryItem;
}(TaskPropertiesHistoryItemBase));
exports.TaskProgressHistoryItem = TaskProgressHistoryItem;
var TaskStartHistoryItem = (function (_super) {
__extends(TaskStartHistoryItem, _super);
function TaskStartHistoryItem() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskStartHistoryItem.prototype.getPropertiesManipulator = function () {
return this.modelManipulator.task.properties.start;
};
return TaskStartHistoryItem;
}(TaskPropertiesHistoryItemBase));
exports.TaskStartHistoryItem = TaskStartHistoryItem;
var TaskEndHistoryItem = (function (_super) {
__extends(TaskEndHistoryItem, _super);
function TaskEndHistoryItem() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskEndHistoryItem.prototype.getPropertiesManipulator = function () {
return this.modelManipulator.task.properties.end;
};
return TaskEndHistoryItem;
}(TaskPropertiesHistoryItemBase));
exports.TaskEndHistoryItem = TaskEndHistoryItem;
/***/ }),
/* 32 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
__webpack_require__(33);
var GanttView_1 = __webpack_require__(34);
exports.GanttView = GanttView_1.GanttView;
/***/ }),
/* 33 */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/* 34 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var VisualModel_1 = __webpack_require__(35);
var Enums_1 = __webpack_require__(7);
var Utils_1 = __webpack_require__(28);
var DomUtils_1 = __webpack_require__(1);
var DateRange_1 = __webpack_require__(10);
var Size_1 = __webpack_require__(15);
var Point_1 = __webpack_require__(3);
var GridElementInfo_1 = __webpack_require__(29);
var GridLayoutCalculator_1 = __webpack_require__(16);
var EtalonSizeValues_1 = __webpack_require__(55);
var TaskEditController_1 = __webpack_require__(30);
var TaskAreaManager_1 = __webpack_require__(8);
var ModelManipulator_1 = __webpack_require__(56);
var History_1 = __webpack_require__(61);
var EventManager_1 = __webpack_require__(62);
var TaskAreaContainer_1 = __webpack_require__(72);
var Settings_1 = __webpack_require__(73);
var ModelChangesDispatcher_1 = __webpack_require__(74);
var CommandManager_1 = __webpack_require__(76);
var BarManager_1 = __webpack_require__(86);
var Browser_1 = __webpack_require__(12);
var GanttView = (function () {
function GanttView(element, ganttOwner, settings) {
this.timeScaleAreas = new Array();
this.horTaskAreaBorders = [];
this.vertTaskAreaBorders = [];
this.scaleBorders = [];
this.scaleElements = [];
this.taskElements = [];
this.selectionElements = [];
this.hlRowElements = [];
this.renderedRowIndices = [];
this.renderedColIndices = [];
this.renderedScaleItemIndices = [];
this.dependencyMap = [];
this.renderedConnectorLines = [];
this.connectorLinesToElementsMap = {};
this.noWorkingIntervalsToElementsMap = {};
this.renderedNoWorkingIntervals = [];
this.gridLayoutCalculator = new GridLayoutCalculator_1.GridLayoutCalculator();
this.elementTextHelper = new Utils_1.ElementTextHelper();
this.etalonSizeValues = new EtalonSizeValues_1.EtalonSizeValues();
this.tickSize = new Size_1.Size();
this.scaleCount = 2;
this.isFocus = false;
this.zoom = 1;
this.currentSelectedTaskID = "";
this.ganttOwner = ganttOwner;
this.settings = Settings_1.Settings.parse(settings);
this.createMainElement(element);
this.createHeader();
this.calculateEtalonSizeValues();
this.createTaskAreaContainer();
this.loadOptionsFromGanttOwner();
this.elementTextHelper.setFont(this.mainElement);
this.setupHelpers();
this.setSizeForTaskArea();
this.createTimeScaleContainer();
this.createTimeScaleAreas();
this.commandManager = new CommandManager_1.CommandManager(this);
this.barManager = new BarManager_1.BarManager(this, ganttOwner.bars);
this.eventManager = new EventManager_1.EventManager(this);
this.taskEditController = new TaskEditController_1.TaskEditController(this);
this.history = new History_1.History();
this.taskAreaManager = new TaskAreaManager_1.TaskAreaManager(this);
this.updateView();
}
GanttView.prototype.reset = function () {
this.timeScaleContainer.innerHTML = "";
this.taskArea.innerHTML = "";
this.horTaskAreaBorders = [];
this.vertTaskAreaBorders = [];
this.scaleBorders = [];
this.scaleElements = [];
this.taskElements = [];
this.selectionElements = [];
this.hlRowElements = [];
this.renderedRowIndices = [];
this.renderedColIndices = [];
this.renderedConnectorLines = [];
this.timeScaleAreas = [];
this.renderedScaleItemIndices = [];
this.connectorLinesToElementsMap = {};
this.renderedNoWorkingIntervals = [];
this.noWorkingIntervalsToElementsMap = {};
};
GanttView.prototype.setupHelpers = function () {
var size = new Size_1.Size(this.taskAreaContainer.getWidth(), this.taskAreaContainer.getHeight());
var scrollBarHeight = this.taskAreaContainer.getHeight() - this.taskAreaContainer.getElement().clientHeight;
this.gridLayoutCalculator.setSettings(size, this.tickSize, this.etalonSizeValues, this.range, this.viewModel, this.settings.viewType, scrollBarHeight);
this.elementTextHelper.setSettings(this.range.start.getTime(), this.settings.viewType, this.viewModel.items);
};
GanttView.prototype.getDateRange = function (modelStartDate, modelEndDate) {
var adjustedStartDate = Utils_1.DateUtils.adjustStartEndDateByViewType(modelStartDate, true, this.settings.viewType);
var adjustedEndDate = this.adjustEndDateByVisibleAreaWidth(adjustedStartDate, modelEndDate);
adjustedEndDate = Utils_1.DateUtils.adjustStartEndDateByViewType(adjustedEndDate, false, this.settings.viewType);
return new DateRange_1.DateRange(adjustedStartDate, adjustedEndDate);
};
GanttView.prototype.adjustEndDateByVisibleAreaWidth = function (adjustedStartDate, modelEndDate) {
var result = new Date();
var endTime = Math.max(modelEndDate.getTime(), this.getVisibleAreaEndDate(adjustedStartDate).getTime());
result.setTime(endTime);
return result;
};
GanttView.prototype.getVisibleAreaEndDate = function (visibleAreaStartDate) {
var result = new Date();
var visibleTickCount = Math.ceil(this.taskAreaContainer.getWidth() / this.tickSize.width);
if (this.settings.viewType == Enums_1.ViewType.Months) {
result.setTime(visibleAreaStartDate.getTime());
result.setMonth(result.getMonth() + visibleTickCount);
}
else
result.setTime(visibleAreaStartDate.getTime() + visibleTickCount * Utils_1.DateUtils.getTickTimeSpan(this.settings.viewType));
return result;
};
GanttView.prototype.calculateEtalonSizeValues = function () {
var etalonElementsContainer = this.createEtalonElementsContainer();
var etalonElements = this.createEtalonElements(etalonElementsContainer);
this.calculateEtalonSizeValuesCore(etalonElements);
this.mainElement.removeChild(etalonElementsContainer);
};
GanttView.prototype.calculateEtalonSizeValuesCore = function (etalonElements) {
this.etalonSizeValues.taskHeight = etalonElements[0].firstChild.offsetHeight;
this.etalonSizeValues.milestoneWidth = etalonElements[1].firstChild.offsetWidth;
this.etalonSizeValues.taskWrapperTopPadding = DomUtils_1.DomUtils.getTopPaddings(etalonElements[0]);
this.etalonSizeValues.connectorLineThickness = DomUtils_1.DomUtils.getVerticalBordersWidth(etalonElements[2]);
this.etalonSizeValues.connectorArrowWidth = DomUtils_1.DomUtils.getHorizontalBordersWidth(etalonElements[3]);
for (var i = 0; i <= Enums_1.ViewType.Years; i++) {
etalonElements[4].innerText = this.elementTextHelper.getScaleItemTextTemplate(i);
this.etalonSizeValues.scaleItemWidths[i] = etalonElements[4].offsetWidth;
}
this.etalonSizeValues.smallTaskWidth = DomUtils_1.DomUtils.getLeftPadding(etalonElements[0].firstChild.firstChild) * 2;
this.etalonSizeValues.outsideTaskTextDefaultWidth = DomUtils_1.DomUtils.pxToFloat(DomUtils_1.DomUtils.getCurrentStyle(etalonElements[5]).width);
this.etalonSizeValues.scaleItemHeight = this.ganttOwner.getHeaderHeight() / this.scaleCount;
};
GanttView.prototype.createEtalonElementsContainer = function () {
var result = document.createElement("DIV");
result.style.visibility = "hidden";
result.style.position = "absolute";
result.style.left = "-1000px";
this.mainElement.appendChild(result);
return result;
};
GanttView.prototype.createEtalonElements = function (parent) {
var etalonElements = [];
var wrapper = this.createElement(new GridElementInfo_1.GridElementInfo("dx-gantt-taskWrapper"), null, parent);
var task = this.createElement(new GridElementInfo_1.GridElementInfo("dx-gantt-task"), null, wrapper);
var taskTitle = this.createElement(new GridElementInfo_1.GridElementInfo("dx-gantt-taskTitle dx-gantt-titleIn"), null, task);
taskTitle.innerText = "WWW";
etalonElements.push(wrapper);
var milestoneWrapper = this.createElement(new GridElementInfo_1.GridElementInfo("dx-gantt-taskWrapper"), null, parent);
this.createElement(new GridElementInfo_1.GridElementInfo("dx-gantt-task dx-gantt-milestone"), null, milestoneWrapper);
etalonElements.push(milestoneWrapper);
var etalonElementClassNames = ["dx-gantt-conn-h", "dx-gantt-arrow", "dx-gantt-si", "dx-gantt-taskTitle dx-gantt-titleOut"];
for (var i = 0; i < etalonElementClassNames.length; i++) {
var etalonElementInfo = new GridElementInfo_1.GridElementInfo(etalonElementClassNames[i]);
etalonElements.push(this.createElement(etalonElementInfo, null, parent));
}
return etalonElements;
};
GanttView.prototype.zoomIn = function () {
if (this.zoom == 1) {
this.zoom++;
this.updateTickSizeWidth();
this.resetAndUpdate();
}
else if (this.settings.viewType > Enums_1.ViewType.TenMinutes) {
this.zoom--;
this.setViewType(this.settings.viewType - 1);
}
};
GanttView.prototype.zoomOut = function () {
if (this.zoom > 1) {
this.zoom--;
this.updateTickSizeWidth();
this.resetAndUpdate();
}
else if (this.settings.viewType < Enums_1.ViewType.Years) {
this.zoom++;
this.setViewType(this.settings.viewType + 1);
}
};
GanttView.prototype.onVisualModelChanged = function () {
this.resetAndUpdate();
};
GanttView.prototype.getGanttViewStartDate = function (tasks) {
if (!tasks)
return new Date();
var dates = tasks.map(function (t) { return typeof t.start == "string" ? new Date(t.start) : t.start; });
return dates.length > 0 ? dates.reduce(function (min, d) { return d < min ? d : min; }, dates[0]) : new Date();
};
GanttView.prototype.getGanttViewEndDate = function (tasks) {
if (!tasks)
return new Date();
var dates = tasks.map(function (t) { return typeof t.end == "string" ? new Date(t.end) : t.end; });
return dates.length > 0 ? dates.reduce(function (max, d) { return d > max ? d : max; }, dates[0]) : new Date();
};
GanttView.prototype.getTaskAreaWidth = function () {
return this.gridLayoutCalculator.horizontalTickCount * this.tickSize.width;
};
GanttView.prototype.getTaskAreaHeight = function () {
return this.gridLayoutCalculator.getVerticalGridLineHeight();
};
GanttView.prototype.getVisibleTaskCount = function () { return this.viewModel.itemCount; };
GanttView.prototype.getTask = function (index) {
var item = this.viewModel.items[index];
return item.task;
};
GanttView.prototype.createMainElement = function (parent) {
this.mainElement = document.createElement("DIV");
this.mainElement.style.width = parent.offsetWidth + "px";
this.mainElement.style.height = parent.offsetHeight + "px";
parent.appendChild(this.mainElement);
};
GanttView.prototype.createHeader = function () {
this.header = document.createElement("DIV");
this.header.className = "dx-gantt-header";
this.mainElement.appendChild(this.header);
};
GanttView.prototype.createTimeScaleContainer = function () {
this.timeScaleContainer = document.createElement("DIV");
this.timeScaleContainer.className = "dx-gantt-tsac";
this.timeScaleContainer.style.height = this.etalonSizeValues.scaleItemHeight * this.scaleCount + "px";
this.header.appendChild(this.timeScaleContainer);
};
GanttView.prototype.createTimeScaleArea = function () {
var timeScaleArea = document.createElement("DIV");
timeScaleArea.className = "dx-gantt-tsa";
timeScaleArea.style.width = this.getTaskAreaWidth() + "px";
timeScaleArea.style.height = this.etalonSizeValues.scaleItemHeight + "px";
this.timeScaleContainer.appendChild(timeScaleArea);
this.timeScaleAreas.unshift(timeScaleArea);
return timeScaleArea;
};
GanttView.prototype.createTimeScaleAreas = function () {
for (var i = 0; i < this.scaleCount; i++) {
var timeScaleArea = this.createTimeScaleArea();
if (i == 0 && this.settings.viewType == Enums_1.ViewType.Weeks)
this.createMonthsScale(timeScaleArea);
}
};
GanttView.prototype.createTaskAreaContainer = function () {
var element = document.createElement("DIV");
element.className = "dx-gantt-tac";
this.mainElement.appendChild(element);
this.createTaskArea(element);
this.taskAreaContainer = this.ganttOwner.getExternalTaskAreaContainer(element);
if (this.taskAreaContainer == null)
this.taskAreaContainer = new TaskAreaContainer_1.TaskAreaContainer(element, this);
this.prepareTaskAreaContainer();
};
GanttView.prototype.prepareTaskAreaContainer = function () {
var className = "dx-gantt-tac-hb";
var element = this.taskAreaContainer.getElement();
this.settings.areHorizontalBordersEnabled ?
DomUtils_1.DomUtils.addClassNameToElement(element, className) : DomUtils_1.DomUtils.removeClassNameFromElement(element, className);
var marginTop = parseInt(getComputedStyle(element).getPropertyValue("margin-top")) || 0;
element.style.height = "calc(100% - " + (this.etalonSizeValues.scaleItemHeight * this.scaleCount + marginTop) + "px)";
};
GanttView.prototype.createTaskArea = function (parent) {
this.taskArea = document.createElement("DIV");
this.taskArea.id = "dx-gantt-ta";
parent.appendChild(this.taskArea);
};
GanttView.prototype.setSizeForTaskArea = function () {
this.taskArea.style.width = this.getTaskAreaWidth() + "px";
this.taskArea.style.height = this.getTaskAreaHeight() + "px";
};
GanttView.prototype.updateTickSizeWidth = function () {
this.tickSize.width = this.etalonSizeValues.scaleItemWidths[this.settings.viewType] * this.zoom;
};
GanttView.prototype.createMonthsScale = function (parent) {
var currentDate = new Date();
currentDate.setTime(this.range.start.getTime());
var x = 0;
var index = 0;
while (currentDate.getTime() < this.range.end.getTime()) {
var dayInMonthCount = Utils_1.DateUtils.getDaysInMonth(currentDate.getMonth(), currentDate.getFullYear());
var dayCount = dayInMonthCount - currentDate.getDate() + 1;
var nextDate = new Date();
nextDate.setTime(currentDate.getTime() + Math.min(dayCount * Utils_1.DateUtils.msPerDay, this.range.end.getTime() - currentDate.getTime()));
var width = this.gridLayoutCalculator.getWidthByDateRange(currentDate, nextDate);
var scaleItemInfo = new GridElementInfo_1.GridElementInfo("dx-gantt-si", new Point_1.Point(x), new Size_1.Size(width, this.etalonSizeValues.scaleItemHeight));
var scaleItemElement = this.createElement(scaleItemInfo, null, parent);
scaleItemElement.innerText = this.elementTextHelper.getScaleItemText(index, Enums_1.ViewType.Months);
scaleItemElement.style.lineHeight = this.etalonSizeValues.scaleItemHeight + "px";
var scaleBorderInfo = new GridElementInfo_1.GridElementInfo("dx-gantt-vb", new Point_1.Point(x + width), new Size_1.Size(0, this.etalonSizeValues.scaleItemHeight));
this.createElement(scaleBorderInfo, null, parent);
x += width;
index++;
currentDate = nextDate;
}
};
GanttView.prototype.updateView = function () {
this.timeScaleContainer.scrollLeft = this.taskAreaContainer.scrollLeft;
this.processScroll(false);
this.processScroll(true);
this.ganttOwner.onGanttScroll(this.taskAreaContainer.scrollTop);
};
GanttView.prototype.processScroll = function (isVertical) {
this.recreateTaskAreaBordersAndTaskElements(isVertical);
if (isVertical)
this.recreateConnectorLineElements();
else {
this.recreateNoWorkingIntervalElements();
this.recreateScalesElements();
}
};
GanttView.prototype.recreateTaskAreaBordersAndTaskElements = function (isVertical) {
var _this = this;
var scrollPos = isVertical ? this.taskAreaContainer.scrollTop : this.taskAreaContainer.scrollLeft;
var newRenderedIndices = this.gridLayoutCalculator.getRenderedRowColumnIndices(scrollPos, isVertical);
var renderedIndices = isVertical ? this.renderedRowIndices : this.renderedColIndices;
this.recreateElements(renderedIndices, newRenderedIndices, function (index) { _this.removeTaskAreaBorderAndTaskElement(index, isVertical); }, function (index) { _this.createTaskAreaBorderAndTaskElement(index, isVertical); });
if (isVertical)
this.renderedRowIndices = newRenderedIndices;
else
this.renderedColIndices = newRenderedIndices;
};
GanttView.prototype.recreateNoWorkingIntervalElements = function () {
var _this = this;
var newRenderedNoWorkingIntervals = this.gridLayoutCalculator.getRenderedNoWorkingIntervals(this.taskAreaContainer.scrollLeft);
this.recreateElements(this.renderedNoWorkingIntervals, newRenderedNoWorkingIntervals, function (info) { _this.removeNoWorkingIntervalElement(info); }, function (info) { _this.createNoWorkingIntervalElement(info); });
this.renderedNoWorkingIntervals = newRenderedNoWorkingIntervals;
};
GanttView.prototype.recreateConnectorLineElements = function () {
var _this = this;
var newRenderedConnectorLines = this.gridLayoutCalculator.getRenderedConnectorLines(this.taskAreaContainer.scrollTop);
this.recreateElements(this.renderedConnectorLines, newRenderedConnectorLines, function (info) { _this.removeConnectorLineElement(info); }, function (info) { _this.createConnectorLineElement(info); });
this.renderedConnectorLines = newRenderedConnectorLines;
};
GanttView.prototype.recreateScalesElements = function () {
this.recreateScaleElements(this.settings.viewType, 0);
if (this.settings.viewType != Enums_1.ViewType.Weeks)
this.recreateScaleElements(Utils_1.DateUtils.ViewTypeToScaleMap[this.settings.viewType], 1);
};
GanttView.prototype.recreateScaleElements = function (scaleType, scaleIndex) {
var _this = this;
var newRenderedIndices = this.gridLayoutCalculator.getRenderedScaleItemIndices(scaleType, this.renderedColIndices);
var renderedIndices = this.renderedScaleItemIndices[scaleType - this.settings.viewType] || [];
this.recreateElements(renderedIndices, newRenderedIndices, function (index) { _this.removeScaleElementAndBorder(index, scaleIndex); }, function (index) { _this.createScaleElementAndBorder(index, scaleIndex, scaleType); });
this.renderedScaleItemIndices[scaleType - this.settings.viewType] = newRenderedIndices;
};
GanttView.prototype.recreateElements = function (oldRenderedElementsInfo, newRenderedelementsInfo, removeAction, createAction) {
oldRenderedElementsInfo
.filter(function (info) { return newRenderedelementsInfo.indexOf(info) === -1; })
.forEach(function (info) { removeAction(info); });
newRenderedelementsInfo
.filter(function (info) { return oldRenderedElementsInfo.indexOf(info) === -1; })
.forEach(function (info) { createAction(info); });
};
GanttView.prototype.allowTaskAreaBorders = function (isVerticalScroll) {
return isVerticalScroll ? this.settings.areHorizontalBordersEnabled : this.settings.areVerticalBordersEnabled;
};
GanttView.prototype.createTaskAreaBorderAndTaskElement = function (index, isVerticalScroll) {
if (this.allowTaskAreaBorders(isVerticalScroll))
this.createTaskAreaBorder(index, !isVerticalScroll);
if (isVerticalScroll)
this.createTaskElement(index);
};
GanttView.prototype.removeTaskAreaBorderAndTaskElement = function (index, isVerticalScroll) {
if (this.allowTaskAreaBorders(isVerticalScroll))
this.removeTaskAreaBorder(index, !isVerticalScroll);
if (isVerticalScroll)
this.removeTaskElement(index);
};
GanttView.prototype.getTaskAreaBordersDictionary = function (isVertical) {
return isVertical ? this.vertTaskAreaBorders : this.horTaskAreaBorders;
};
GanttView.prototype.createTaskAreaBorder = function (index, isVertical) {
var info = this.gridLayoutCalculator.getTaskAreaBorderInfo(index, isVertical);
this.createElement(info, index, this.taskArea, this.getTaskAreaBordersDictionary(isVertical));
};
GanttView.prototype.removeTaskAreaBorder = function (index, isVertical) {
this.removeElement(null, index, this.taskArea, this.getTaskAreaBordersDictionary(isVertical));
};
GanttView.prototype.createScaleElementAndBorder = function (index, scaleIndex, scaleType) {
this.createScaleElement(index, scaleIndex, scaleType);
this.createScaleBorder(index, scaleIndex, scaleType);
};
GanttView.prototype.createScaleElement = function (index, scaleIndex, scaleType) {
var info = this.gridLayoutCalculator.getScaleElementInfo(index, scaleType);
var scaleElement = this.createScaleElementCore(index, info, scaleIndex, this.scaleElements);
scaleElement.innerText = this.elementTextHelper.getScaleItemText(index, scaleType);
scaleElement.style.lineHeight = this.etalonSizeValues.scaleItemHeight + "px";
};
GanttView.prototype.createScaleBorder = function (index, scaleIndex, scaleType) {
var info = this.gridLayoutCalculator.getScaleBorderInfo(index, scaleType);
this.createScaleElementCore(index, info, scaleIndex, this.scaleBorders);
};
GanttView.prototype.createScaleElementCore = function (index, info, scaleIndex, dictionary) {
if (!dictionary[scaleIndex])
dictionary[scaleIndex] = [];
return this.createElement(info, index, this.timeScaleAreas[scaleIndex], dictionary[scaleIndex]);
};
GanttView.prototype.removeScaleElementAndBorder = function (index, scaleIndex) {
this.removeElement(null, index, this.timeScaleAreas[scaleIndex], this.scaleElements[scaleIndex]);
this.removeElement(null, index, this.timeScaleAreas[scaleIndex], this.scaleBorders[scaleIndex]);
};
GanttView.prototype.createTaskElement = function (index) {
this.createTaskWrapperElement(index);
if (this.settings.taskTitlePosition == Enums_1.TaskTitlePosition.Outside)
this.createTaskTextElement(index, this.taskElements[index]);
var taskVisualElement = this.createTaskVisualElement(index);
if (!this.viewModel.items[index].task.isMilestone()) {
if (this.settings.taskTitlePosition == Enums_1.TaskTitlePosition.Inside)
this.createTaskTextElement(index, taskVisualElement);
this.createTaskProgressElement(index, taskVisualElement);
}
if (this.settings.showResources)
this.createResources(index);
if (this.viewModel.items[index].selected)
this.createTaskSelectionElement(index);
if (this.isHighlightRowElementAllowed(index))
this.createHighlightRowElement(index);
};
GanttView.prototype.isHighlightRowElementAllowed = function (index) {
return index % 2 !== 0 && this.settings.areAlternateRowsEnabled || this.viewModel.items[index].children.length > 0;
};
GanttView.prototype.createResources = function (index) {
var resources = this.viewModel.items[index].resources.items;
for (var i = 0; i < resources.length; i++)
this.createResourceElement(index, resources[i]);
};
GanttView.prototype.createTaskWrapperElement = function (index) {
var taskWrapperInfo = this.gridLayoutCalculator.getTaskWrapperElementInfo(index);
this.createElement(taskWrapperInfo, index, this.taskArea, this.taskElements);
this.taskElements[index].style.display = this.elementTextHelper.getTaskVisibility(index) ? "" : "none";
};
GanttView.prototype.createTaskVisualElement = function (index) {
var taskElementInfo = this.gridLayoutCalculator.getTaskElementInfo(index);
var taskElement = this.createElement(taskElementInfo, index, this.taskElements[index]);
taskElement.addEventListener("mouseenter", function (evt) { this.taskAreaManager.onTaskElementHover(evt); }.bind(this));
return taskElement;
};
GanttView.prototype.createTaskProgressElement = function (index, parent) {
var taskProgressInfo = this.gridLayoutCalculator.getTaskProgressElementInfo(index);
this.createElement(taskProgressInfo, index, parent);
};
GanttView.prototype.createTaskTextElement = function (index, parent) {
var taskTextInfo = this.gridLayoutCalculator.getTaskTextElementInfo(index, this.settings.taskTitlePosition == Enums_1.TaskTitlePosition.Inside);
var taskTextElement = this.createElement(taskTextInfo, index, parent);
taskTextElement.innerText = this.elementTextHelper.getTaskText(index);
};
GanttView.prototype.createResourceElement = function (index, resource) {
var resourceElementInfo = this.gridLayoutCalculator.getTaskResourceElementInfo();
var resElement = this.createElement(resourceElementInfo, index, this.taskElements[index]);
resElement.innerText = resource.text;
};
GanttView.prototype.createTaskSelectionElement = function (index) {
var selectionInfo = this.gridLayoutCalculator.getSelectionElementInfo(index);
if (this.taskAreaContainer.isExternal && !this.settings.areHorizontalBordersEnabled)
selectionInfo.size.height++;
this.createElement(selectionInfo, index, this.taskArea, this.selectionElements);
};
GanttView.prototype.createHighlightRowElement = function (index) {
var hlRowInfo = this.gridLayoutCalculator.getHighlightRowInfo(index);
this.createElement(hlRowInfo, index, this.taskArea, this.hlRowElements);
};
GanttView.prototype.removeTaskElement = function (index) {
this.removeElement(null, index, this.taskArea, this.taskElements);
this.removeElement(null, index, this.taskArea, this.selectionElements);
if (this.isHighlightRowElementAllowed(index))
this.removeElement(null, index, this.taskArea, this.hlRowElements);
};
GanttView.prototype.createConnectorLineElement = function (info) {
if (this.taskEditController.isDependencySelected(info.attr["dependency-id"]))
info.className = info.className + " active";
return this.createElement(info, null, this.taskArea, this.connectorLinesToElementsMap);
};
GanttView.prototype.removeConnectorLineElement = function (info) {
this.removeElement(info, null, this.taskArea, this.connectorLinesToElementsMap);
};
GanttView.prototype.createNoWorkingIntervalElement = function (info) {
return this.createElement(info, null, this.taskArea, this.noWorkingIntervalsToElementsMap);
};
GanttView.prototype.removeNoWorkingIntervalElement = function (info) {
this.removeElement(info, null, this.taskArea, this.noWorkingIntervalsToElementsMap);
};
GanttView.prototype.createElement = function (info, index, parent, dictionary) {
var element = document.createElement("DIV");
info.assignToElement(element);
parent.appendChild(element);
if (dictionary) {
if (dictionary instanceof Array && index !== null)
dictionary[index] = element;
else
dictionary[info.id] = element;
}
for (var key in info.attr) {
if (info.attr.hasOwnProperty(key)) {
element.setAttribute(key, info.attr[key]);
}
}
return element;
};
GanttView.prototype.removeElement = function (info, index, parent, dictionary) {
var element;
if (dictionary instanceof Array && index !== null) {
element = dictionary[index];
delete dictionary[index];
}
else {
element = dictionary[info.id];
delete dictionary[info.id];
}
if (element)
parent.removeChild(element);
};
GanttView.prototype.calculateAutoViewType = function (startDate, endDate) {
var diffInHours = (endDate.getTime() - startDate.getTime()) / (1000 * 3600);
if (diffInHours > 24 * 365)
return Enums_1.ViewType.Years;
if (diffInHours > 24 * 30)
return Enums_1.ViewType.Months;
if (diffInHours > 24 * 7)
return Enums_1.ViewType.Weeks;
if (diffInHours > 24)
return Enums_1.ViewType.Days;
if (diffInHours > 6)
return Enums_1.ViewType.SixHours;
if (diffInHours > 1)
return Enums_1.ViewType.Hours;
return Enums_1.ViewType.TenMinutes;
};
GanttView.prototype.changeTaskExpanded = function (publicId, expanded) {
var task = this.getTaskByPublicId(publicId);
if (task)
this.viewModel.changeTaskExpanded(task.internalId, expanded);
};
GanttView.prototype.expandTask = function (id) { this.viewModel.changeTaskExpanded(id, true); };
GanttView.prototype.collapseTask = function (id) { this.viewModel.changeTaskExpanded(id, false); };
GanttView.prototype.showTask = function (id) { this.viewModel.changeTaskVisibility(id, true); };
GanttView.prototype.hideTask = function (id) { this.viewModel.changeTaskVisibility(id, false); };
GanttView.prototype.getTaskVisibility = function (id) { return this.viewModel.getTaskVisibility(id); };
GanttView.prototype.unselectCurrentSelectedTask = function () { this.unselectTask(this.currentSelectedTaskID); };
GanttView.prototype.getTaskSelected = function (id) { return this.viewModel.getTaskSelected(id); };
GanttView.prototype.setViewType = function (viewType) {
if (viewType == undefined) {
viewType = this.calculateAutoViewType(this.dataRange.start, this.dataRange.end);
}
if (this.settings.viewType !== viewType) {
this.settings.viewType = viewType;
this.updateTickSizeWidth();
this.resetAndUpdate();
}
};
GanttView.prototype.setTaskTitlePosition = function (taskTitlePosition) {
if (this.settings.taskTitlePosition !== taskTitlePosition) {
this.settings.taskTitlePosition = taskTitlePosition;
this.resetAndUpdate();
}
};
GanttView.prototype.setShowResources = function (showResources) {
if (this.settings.showResources !== showResources) {
this.settings.showResources = showResources;
this.resetAndUpdate();
}
};
GanttView.prototype.loadOptionsFromGanttOwner = function () {
this.tickSize.height = this.ganttOwner.getRowHeight();
var tasksData = this.ganttOwner.getGanttTasksData();
this.dataRange = new DateRange_1.DateRange(this.getGanttViewStartDate(tasksData), this.getGanttViewEndDate(tasksData));
if (this.settings.viewType == undefined)
this.settings.viewType = this.calculateAutoViewType(this.dataRange.start, this.dataRange.end);
this.updateTickSizeWidth();
this.range = this.getDateRange(this.dataRange.start, this.dataRange.end);
this.viewModel = new VisualModel_1.ViewVisualModel(this, tasksData, this.ganttOwner.getGanttDependenciesData(), this.ganttOwner.getGanttResourcesData(), this.ganttOwner.getGanttResourceAssignmentsData(), this.dataRange, this.ganttOwner.getGanttWorkTimeRules());
var dispatcher = new ModelChangesDispatcher_1.ModelChangesDispatcher();
var modelChangesListener = this.ganttOwner.getModelChangesListener();
if (modelChangesListener)
dispatcher.onModelChanged.add(modelChangesListener);
this.modelManipulator = new ModelManipulator_1.ModelManipulator(this.viewModel, dispatcher);
};
GanttView.prototype.resetAndUpdate = function () {
this.reset();
this.range = this.getDateRange(this.dataRange.start, this.dataRange.end);
this.setupHelpers();
this.createTimeScaleAreas();
this.setSizeForTaskArea();
if (Browser_1.Browser.IE)
this.taskEditController.createElements();
this.updateView();
};
GanttView.prototype.selectTask = function (id) {
this.viewModel.changeTaskSelected(id, true);
this.currentSelectedTaskID = id;
};
GanttView.prototype.unselectTask = function (id) {
this.viewModel.changeTaskSelected(id, false);
};
GanttView.prototype.selectTaskById = function (publicId) {
this.unselectCurrentSelectedTask();
var task = this.getTaskByPublicId(publicId);
if (task)
this.selectTask(task.internalId);
};
GanttView.prototype.getTaskAreaContainer = function () {
return this.taskAreaContainer;
};
GanttView.prototype.setWidth = function (value) {
this.mainElement.style.width = value + "px";
};
GanttView.prototype.setAllowSelection = function (value) {
this.settings.allowSelectTask = value;
};
GanttView.prototype.setEditingSettings = function (value) {
this.settings.editing = value;
};
GanttView.prototype.setRowLinesVisible = function (value) {
this.settings.areHorizontalBordersEnabled = value;
this.prepareTaskAreaContainer();
this.resetAndUpdate();
};
GanttView.prototype.setTaskTitle = function (taskId, newValue) {
var task = this.getTaskByPublicId(taskId);
if (task)
this.commandManager.changeTaskTitleCommand.execute(task.internalId, newValue);
};
GanttView.prototype.setTaskProgress = function (taskId, newValue) {
var task = this.getTaskByPublicId(taskId);
if (task)
this.commandManager.changeTaskProgressCommand.execute(task.internalId, newValue);
};
GanttView.prototype.setTaskStart = function (taskId, newValue) {
var task = this.getTaskByPublicId(taskId);
if (task)
this.commandManager.changeTaskStartCommand.execute(task.internalId, newValue);
};
GanttView.prototype.setTaskEnd = function (taskId, newValue) {
var task = this.getTaskByPublicId(taskId);
if (task)
this.commandManager.changeTaskEndCommand.execute(task.internalId, newValue);
};
GanttView.prototype.removeTask = function (taskId) {
var task = this.getTaskByPublicId(taskId);
if (task)
this.commandManager.removeTaskCommand.execute(task.internalId);
};
GanttView.prototype.createTask = function (parentId) {
var parent = this.getTaskByPublicId(parentId);
var id = parent ? parent.internalId : null;
this.commandManager.createTaskCommand.execute(null, null, "", id);
};
GanttView.prototype.getTaskByPublicId = function (id) {
return this.viewModel.tasks.getItemByPublicId(id);
};
GanttView.prototype.getPrevTask = function (taskId) {
var item = this.viewModel.findItem(taskId);
var index = item.parent.children.indexOf(item) - 1;
return index > -1 ? item.parent.children[index].task : item.parent.task;
};
GanttView.prototype.updateCreatedTaskIdAfterServerUpdate = function (internalId, id) {
var item = this.viewModel.findItem(internalId);
var task = item && item.task;
if (task)
task.id = id;
};
GanttView.prototype.getTaskIdByInternalId = function (internalId) {
var item = this.viewModel.findItem(internalId);
var task = item && item.task;
return task ? task.id : null;
};
GanttView.prototype.isTaskHasChildren = function (taskId) {
var item = this.viewModel.findItem(taskId);
return item && item.children.length > 0;
};
return GanttView;
}());
exports.GanttView = GanttView;
/***/ }),
/* 35 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ResourceCollection_1 = __webpack_require__(13);
var TaskCollection_1 = __webpack_require__(37);
var DependencyCollection_1 = __webpack_require__(39);
var ResourceAssignmentCollection_1 = __webpack_require__(40);
var ViewVisualModelItem_1 = __webpack_require__(42);
var ViewVisualModelDependencyInfo_1 = __webpack_require__(43);
var WorkingTimeCalculator_1 = __webpack_require__(44);
var ViewVisualModel = (function () {
function ViewVisualModel(owner, tasks, dependencies, resources, assignments, dateRange, workTimeRules) {
this._fLockCount = 0;
this.owner = owner;
this.tasks = new TaskCollection_1.TaskCollection();
this.tasks.importFromObject(tasks);
this.dependencies = new DependencyCollection_1.DependencyCollection();
this.dependencies.importFromObject(dependencies);
this.resources = new ResourceCollection_1.ResourceCollection();
this.resources.importFromObject(resources);
this.assignments = new ResourceAssignmentCollection_1.ResourceAssignmentCollection();
this.assignments.importFromObject(assignments);
this._itemList = new Array();
this._viewItemList = new Array();
this._workTimeCalculator = new WorkingTimeCalculator_1.WorkingTimeCalculator(dateRange, workTimeRules);
this.updateModel();
}
ViewVisualModel.prototype.updateModel = function () {
this._itemList.splice(0, this._itemList.length);
var tasks = this.tasks.items;
for (var i = 0; i < tasks.length; i++) {
var task = tasks[i];
if (task)
this._itemList.push(new ViewVisualModelItem_1.ViewVisualModelItem(task, this.getAssignedResources(task)));
}
this.createHierarchy();
this.populateItemsForView();
if (this.owner && this.owner.currentSelectedTaskID)
this.changeTaskSelected(this.owner.currentSelectedTaskID, true);
};
ViewVisualModel.prototype.createHierarchy = function () {
this.root = new ViewVisualModelItem_1.ViewVisualModelItem(null, null);
var list = this._itemList;
var _loop_1 = function () {
var item = list[i];
var parentId = item.task.parentId;
var parentItem = list.filter(function (value) { return value.task && value.task.internalId === parentId || value.task.internalId.toString() === parentId; })[0] || this_1.root;
item.parent = parentItem;
parentItem.addChild(item);
};
var this_1 = this;
for (var i = 0; i < list.length; i++) {
_loop_1();
}
};
ViewVisualModel.prototype.populateItemsForView = function () {
this._viewItemList.splice(0, this._viewItemList.length);
this.populateVisibleItems(this.root);
this.updateVisibleItemDependencies();
};
ViewVisualModel.prototype.populateVisibleItems = function (item) {
var _this = this;
var isRoot = item === this.root;
if (!item || (!item.task && !isRoot))
return;
if (!isRoot) {
this._viewItemList.push(item);
item.visibleIndex = this._viewItemList.length - 1;
}
if (item.getExpanded() || item === this.root)
item.children.forEach(function (n) { return _this.populateVisibleItems(n); });
};
ViewVisualModel.prototype.updateVisibleItemDependencies = function () {
var list = this._viewItemList;
for (var i = 0; i < list.length; i++) {
var item = list[i];
var visibleDependencies = this.getTasVisibleDependencies(item.task);
item.setDependencies(visibleDependencies);
}
};
ViewVisualModel.prototype.getAssignedResources = function (task) {
var _this = this;
var res = new ResourceCollection_1.ResourceCollection();
var assignments = this.assignments.items.filter(function (value) { return value.taskId == task.internalId; });
assignments.forEach(function (assignment) { res.add(_this.resources.getItemById(assignment.resourceId)); });
return res;
};
ViewVisualModel.prototype.getTasVisibleDependencies = function (task) {
var res = new Array();
var id = task.internalId;
var dependencies = this.dependencies.items.filter(function (value) { return value.successorId == id; });
for (var i = 0; i < dependencies.length; i++) {
var dependency = dependencies[i];
var item = this.findItem(dependency.predecessorId);
if (item && item.getVisible())
res.push(new ViewVisualModelDependencyInfo_1.ViewVisualModelDependencyInfo(dependency.internalId, item, dependency.type));
}
return res;
};
ViewVisualModel.prototype.changeTaskExpanded = function (id, expanded) {
var task = this.tasks.getItemById(String(id));
if (task) {
task.expanded = expanded;
this.changed();
}
};
ViewVisualModel.prototype.changeTaskVisibility = function (id, visible) {
var item = this.findItem(id);
if (item) {
item.visible = visible;
this.changed();
}
};
ViewVisualModel.prototype.changeTaskSelected = function (id, selected) {
var item = this._itemList.filter(function (value) { return value.task && value.task.internalId === id; })[0];
if (item) {
item.selected = selected;
this.changed();
}
};
ViewVisualModel.prototype.beginUpdate = function () {
this._fLockCount++;
};
ViewVisualModel.prototype.endUpdate = function () {
this._fLockCount--;
if (this._fLockCount == 0)
this.changed();
};
ViewVisualModel.prototype.changed = function () {
if (this._fLockCount !== 0)
return;
this.populateItemsForView();
if (this.owner && this.owner.onVisualModelChanged)
this.owner.onVisualModelChanged();
};
ViewVisualModel.prototype.findItem = function (taskId) {
return this._viewItemList.filter(function (value) { return value.task && value.task.internalId === taskId; })[0];
};
Object.defineProperty(ViewVisualModel.prototype, "items", {
get: function () { return this._viewItemList.slice(); },
enumerable: true,
configurable: true
});
Object.defineProperty(ViewVisualModel.prototype, "itemCount", {
get: function () { return this.items.length; },
enumerable: true,
configurable: true
});
ViewVisualModel.prototype.getTaskVisibility = function (id) {
var item = this.findItem(id);
return !!item && item.getVisible();
};
ViewVisualModel.prototype.getTaskSelected = function (id) {
var item = this.findItem(id);
return !!item && item.selected;
};
Object.defineProperty(ViewVisualModel.prototype, "noWorkingIntervals", {
get: function () { return this._workTimeCalculator.noWorkingIntervals; },
enumerable: true,
configurable: true
});
;
ViewVisualModel.prototype.updateRange = function (range) { this._workTimeCalculator.updateRange(range); };
;
return ViewVisualModel;
}());
exports.ViewVisualModel = ViewVisualModel;
/***/ }),
/* 36 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var Utils_1 = __webpack_require__(0);
var DataObject_1 = __webpack_require__(4);
var Resource = (function (_super) {
__extends(Resource, _super);
function Resource() {
var _this = _super.call(this) || this;
_this.text = "";
return _this;
}
Resource.prototype.assignFromObject = function (sourceObj) {
if (Utils_1.JsonUtils.isExists(sourceObj)) {
_super.prototype.assignFromObject.call(this, sourceObj);
this.text = sourceObj.text;
}
};
return Resource;
}(DataObject_1.DataObject));
exports.Resource = Resource;
/***/ }),
/* 37 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var Task_1 = __webpack_require__(38);
var CollectionBase_1 = __webpack_require__(6);
var TaskCollection = (function (_super) {
__extends(TaskCollection, _super);
function TaskCollection() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskCollection.prototype.createItem = function () { return new Task_1.Task(); };
return TaskCollection;
}(CollectionBase_1.CollectionBase));
exports.TaskCollection = TaskCollection;
/***/ }),
/* 38 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var Utils_1 = __webpack_require__(0);
var DataObject_1 = __webpack_require__(4);
var TaskType;
(function (TaskType) {
TaskType[TaskType["Regular"] = 0] = "Regular";
TaskType[TaskType["Summary"] = 1] = "Summary";
TaskType[TaskType["Milestone"] = 2] = "Milestone";
})(TaskType || (TaskType = {}));
var Task = (function (_super) {
__extends(Task, _super);
function Task() {
var _this = _super.call(this) || this;
_this.start = null;
_this.end = null;
_this.duration = null;
_this.description = "";
_this.parentId = "";
_this.title = "";
_this.owner = null;
_this.progress = 0;
_this.taskType = null;
_this.customFields = {};
_this.expanded = true;
return _this;
}
Task.prototype.assignFromObject = function (sourceObj) {
if (Utils_1.JsonUtils.isExists(sourceObj)) {
_super.prototype.assignFromObject.call(this, sourceObj);
this.owner = sourceObj.owner;
this.parentId = sourceObj.parentId != null ? String(sourceObj.parentId) : null;
this.description = sourceObj.description;
this.title = sourceObj.title;
this.start = sourceObj.start;
this.end = sourceObj.end;
this.start = typeof sourceObj.start == "string" ? new Date(sourceObj.start) : sourceObj.start;
this.end = typeof sourceObj.end == "string" ? new Date(sourceObj.end) : sourceObj.end;
this.duration = sourceObj.duration;
this.progress = sourceObj.progress;
this.taskType = sourceObj.taskType;
if (Utils_1.JsonUtils.isExists(sourceObj.expanded))
this.expanded = !!sourceObj.expanded;
this.assignCustomFields(sourceObj.customFields);
}
};
Task.prototype.assignCustomFields = function (sourceObj) {
if (!sourceObj)
return;
for (var property in sourceObj) {
if (!sourceObj.hasOwnProperty(property))
continue;
this.customFields[property] = sourceObj[property];
}
};
Task.prototype.isMilestone = function () {
return this.start.getTime() == this.end.getTime();
};
return Task;
}(DataObject_1.DataObject));
exports.Task = Task;
/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var CollectionBase_1 = __webpack_require__(6);
var Dependency_1 = __webpack_require__(14);
var DependencyCollection = (function (_super) {
__extends(DependencyCollection, _super);
function DependencyCollection() {
return _super !== null && _super.apply(this, arguments) || this;
}
DependencyCollection.prototype.createItem = function () { return new Dependency_1.Dependency(); };
return DependencyCollection;
}(CollectionBase_1.CollectionBase));
exports.DependencyCollection = DependencyCollection;
/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var CollectionBase_1 = __webpack_require__(6);
var ResourceAssignment_1 = __webpack_require__(41);
var ResourceAssignmentCollection = (function (_super) {
__extends(ResourceAssignmentCollection, _super);
function ResourceAssignmentCollection() {
return _super !== null && _super.apply(this, arguments) || this;
}
ResourceAssignmentCollection.prototype.createItem = function () { return new ResourceAssignment_1.ResourceAssignment(); };
return ResourceAssignmentCollection;
}(CollectionBase_1.CollectionBase));
exports.ResourceAssignmentCollection = ResourceAssignmentCollection;
/***/ }),
/* 41 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var DataObject_1 = __webpack_require__(4);
var Utils_1 = __webpack_require__(0);
var ResourceAssignment = (function (_super) {
__extends(ResourceAssignment, _super);
function ResourceAssignment() {
var _this = _super.call(this) || this;
_this.taskId = "";
_this.resourceId = "";
return _this;
}
ResourceAssignment.prototype.assignFromObject = function (sourceObj) {
if (Utils_1.JsonUtils.isExists(sourceObj)) {
_super.prototype.assignFromObject.call(this, sourceObj);
this.taskId = String(sourceObj.taskId);
this.resourceId = String(sourceObj.resourceId);
}
};
return ResourceAssignment;
}(DataObject_1.DataObject));
exports.ResourceAssignment = ResourceAssignment;
/***/ }),
/* 42 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Utils_1 = __webpack_require__(0);
var ViewVisualModelItem = (function () {
function ViewVisualModelItem(task, resources) {
this.dependencies = new Array();
this.parent = null;
this.visible = true;
this.selected = false;
this.visibleIndex = -1;
this.task = task;
this.resources = resources;
this.children = new Array();
}
Object.defineProperty(ViewVisualModelItem.prototype, "resourceText", {
get: function () {
var text = "";
this.resources.items.forEach(function (r) { return text += r.text + " "; });
return text;
},
enumerable: true,
configurable: true
});
ViewVisualModelItem.prototype.addChild = function (child) {
if (Utils_1.JsonUtils.isExists(child) && this.children.indexOf(child) < 0)
this.children.push(child);
};
ViewVisualModelItem.prototype.removeChild = function (child) {
var index = this.children.indexOf(child);
if (index > -1)
this.children.splice(index, 1);
};
ViewVisualModelItem.prototype.getExpanded = function () {
return !!this.task && this.task.expanded;
};
ViewVisualModelItem.prototype.getVisible = function () {
if (!this.visible)
return false;
var parentItem = this.parent;
while (parentItem) {
if (!parentItem.visible)
return false;
parentItem = parentItem.parent;
}
return true;
};
ViewVisualModelItem.prototype.changeVisibility = function (visible) {
this.visible = visible;
};
ViewVisualModelItem.prototype.changeSelection = function (selected) {
this.selected = selected;
};
ViewVisualModelItem.prototype.setDependencies = function (dependencies) {
if (dependencies)
this.dependencies = dependencies.slice();
};
return ViewVisualModelItem;
}());
exports.ViewVisualModelItem = ViewVisualModelItem;
/***/ }),
/* 43 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ViewVisualModelDependencyInfo = (function () {
function ViewVisualModelDependencyInfo(id, predecessor, type) {
this.id = id;
this.predecessor = predecessor;
this.type = type;
}
return ViewVisualModelDependencyInfo;
}());
exports.ViewVisualModelDependencyInfo = ViewVisualModelDependencyInfo;
/***/ }),
/* 44 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var GanttWorkingDayRuleCollection_1 = __webpack_require__(45);
var DayWorkingTimeInfo_1 = __webpack_require__(53);
var DateTimeUtils_1 = __webpack_require__(2);
var WorkingTimeCalculator = (function () {
function WorkingTimeCalculator(range, rules) {
this._workingRules = new GanttWorkingDayRuleCollection_1.WorkingDayRuleCollection();
this._workDayList = new Array();
this._calculationRange = range;
this._workingRules.importFromObject(rules);
}
WorkingTimeCalculator.prototype.calculateWorkDayList = function () {
if (!this._calculationRange)
return;
this.clearList();
var rules = this._workingRules.items;
for (var i = 0; i < rules.length; i++)
this.processRule(rules[i]);
this.sortList();
};
WorkingTimeCalculator.prototype.processRule = function (rule) {
var points = rule.recurrence.calculatePoints(this._calculationRange.start, this._calculationRange.end);
var _loop_1 = function (i) {
var point = points[i];
var dayNum = DateTimeUtils_1.DateTimeUtils.getDayNumber(point);
var dayInfo = this_1._workDayList.filter(function (i) { return i.dayNumber == dayNum; })[0];
if (dayInfo) {
dayInfo.isWorkDay = dayInfo.isWorkDay && rule.isWorkDay;
dayInfo.addWorkingIntervals(rule.workTimeRanges);
}
else
this_1._workDayList.push(new DayWorkingTimeInfo_1.DayWorkingTimeInfo(dayNum, rule.isWorkDay, rule.workTimeRanges));
};
var this_1 = this;
for (var i = 0; i < points.length; i++) {
_loop_1(i);
}
};
WorkingTimeCalculator.prototype.sortList = function () {
this._workDayList.sort(function (d1, d2) { return d1.dayNumber - d2.dayNumber; });
};
WorkingTimeCalculator.prototype.clearList = function () {
this._workDayList.splice(0, this._workDayList.length);
};
WorkingTimeCalculator.prototype.calculateNoWorkTimeIntervals = function () {
var _this = this;
var res = new Array();
if (this._workDayList.length == 0)
this.calculateWorkDayList();
this._workDayList.forEach(function (d) { return res = res.concat(_this.getNoWorkTimeRangesFromDay(d)); });
return this.concatJointedRanges(res);
};
WorkingTimeCalculator.prototype.concatJointedRanges = function (list) {
var res = new Array();
for (var i = 0; i < list.length; i++) {
var interval = list[i];
var needExpandPrevInterval = res.length > 0 && DateTimeUtils_1.DateTimeUtils.compareDates(res[res.length - 1].end, interval.start) < 2;
if (needExpandPrevInterval)
res[res.length - 1].end = interval.end;
else
res.push(interval);
}
return res;
};
WorkingTimeCalculator.prototype.getNoWorkTimeRangesFromDay = function (day) {
return day.noWorkingIntervals.map(function (i) { return DateTimeUtils_1.DateTimeUtils.convertTimeRangeToDateRange(i, day.dayNumber); });
};
Object.defineProperty(WorkingTimeCalculator.prototype, "noWorkingIntervals", {
get: function () {
if (!this._noWorkingIntervals)
this._noWorkingIntervals = this.calculateNoWorkTimeIntervals();
return this._noWorkingIntervals.slice();
},
enumerable: true,
configurable: true
});
WorkingTimeCalculator.prototype.updateRange = function (range) {
this._calculationRange = range;
this.invalidate();
};
WorkingTimeCalculator.prototype.invalidate = function () {
this._noWorkingIntervals = null;
this.clearList();
};
return WorkingTimeCalculator;
}());
exports.WorkingTimeCalculator = WorkingTimeCalculator;
/***/ }),
/* 45 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var CollectionBase_1 = __webpack_require__(6);
var WorkingTimeRule_1 = __webpack_require__(46);
var WorkingDayRuleCollection = (function (_super) {
__extends(WorkingDayRuleCollection, _super);
function WorkingDayRuleCollection() {
return _super !== null && _super.apply(this, arguments) || this;
}
WorkingDayRuleCollection.prototype.createItem = function () { return new WorkingTimeRule_1.WorkingTimeRule(); };
return WorkingDayRuleCollection;
}(CollectionBase_1.CollectionBase));
exports.WorkingDayRuleCollection = WorkingDayRuleCollection;
/***/ }),
/* 46 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var DataObject_1 = __webpack_require__(4);
var Utils_1 = __webpack_require__(0);
var DateTimeUtils_1 = __webpack_require__(2);
var RecurrenceFactory_1 = __webpack_require__(26);
var Daily_1 = __webpack_require__(27);
var WorkingTimeRule = (function (_super) {
__extends(WorkingTimeRule, _super);
function WorkingTimeRule(recurrence, isWorkDay, workTimeRanges) {
if (recurrence === void 0) { recurrence = null; }
if (isWorkDay === void 0) { isWorkDay = true; }
if (workTimeRanges === void 0) { workTimeRanges = null; }
var _this = _super.call(this) || this;
_this.isWorkDay = true;
_this.workTimeRanges = new Array();
_this.recurrence = recurrence;
_this.isWorkDay = isWorkDay;
if (workTimeRanges)
_this.workTimeRanges.concat(workTimeRanges);
return _this;
}
WorkingTimeRule.prototype.assignFromObject = function (sourceObj) {
if (Utils_1.JsonUtils.isExists(sourceObj)) {
_super.prototype.assignFromObject.call(this, sourceObj);
this.recurrence = RecurrenceFactory_1.RecurrenceFactory.createRecurrenceByType(sourceObj.recurrenceType) || new Daily_1.Daily();
if (Utils_1.JsonUtils.isExists(sourceObj.recurrence))
this.recurrence.assignFromObject(sourceObj.recurrence);
if (Utils_1.JsonUtils.isExists(sourceObj.isWorkDay))
this.isWorkDay = !!sourceObj.isWorkDay;
var ranges = DateTimeUtils_1.DateTimeUtils.convertToTimeRanges(sourceObj.workTimeRanges);
if (ranges)
this.workTimeRanges = ranges;
}
};
return WorkingTimeRule;
}(DataObject_1.DataObject));
exports.WorkingTimeRule = WorkingTimeRule;
/***/ }),
/* 47 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DayOfWeek;
(function (DayOfWeek) {
DayOfWeek[DayOfWeek["Sunday"] = 0] = "Sunday";
DayOfWeek[DayOfWeek["Monday"] = 1] = "Monday";
DayOfWeek[DayOfWeek["Tuesday"] = 2] = "Tuesday";
DayOfWeek[DayOfWeek["Wednesday"] = 3] = "Wednesday";
DayOfWeek[DayOfWeek["Thursday"] = 4] = "Thursday";
DayOfWeek[DayOfWeek["Friday"] = 5] = "Friday";
DayOfWeek[DayOfWeek["Saturday"] = 6] = "Saturday";
})(DayOfWeek = exports.DayOfWeek || (exports.DayOfWeek = {}));
/***/ }),
/* 48 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Month;
(function (Month) {
Month[Month["January"] = 0] = "January";
Month[Month["February"] = 1] = "February";
Month[Month["March"] = 2] = "March";
Month[Month["April"] = 3] = "April";
Month[Month["May"] = 4] = "May";
Month[Month["June"] = 5] = "June";
Month[Month["July"] = 6] = "July";
Month[Month["August"] = 7] = "August";
Month[Month["September"] = 8] = "September";
Month[Month["October"] = 9] = "October";
Month[Month["November"] = 10] = "November";
Month[Month["December"] = 11] = "December";
})(Month = exports.Month || (exports.Month = {}));
/***/ }),
/* 49 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var RecurrenceBase_1 = __webpack_require__(11);
var DateTimeUtils_1 = __webpack_require__(2);
var Weekly = (function (_super) {
__extends(Weekly, _super);
function Weekly() {
return _super !== null && _super.apply(this, arguments) || this;
}
Weekly.prototype.checkDate = function (date) {
return DateTimeUtils_1.DateTimeUtils.checkDayOfWeek(this.dayOfWeekInternal, date);
};
Weekly.prototype.checkInterval = function (date) {
return DateTimeUtils_1.DateTimeUtils.getWeeksBetween(this.start, date) % this.interval == 0;
};
Weekly.prototype.calculatePointByInterval = function (date) {
var weeksFromStart = DateTimeUtils_1.DateTimeUtils.getWeeksBetween(this.start, date);
var intervalCount = Math.floor(weeksFromStart / this.interval);
var remainder = weeksFromStart % this.interval;
var isPointOnNewWeek = remainder > 0 || date.getDay() >= this.dayOfWeekInternal;
if (isPointOnNewWeek)
intervalCount++;
var weeksToAdd = intervalCount * this.interval;
return this.calcNextPointWithWeekCount(this.start, weeksToAdd);
};
Weekly.prototype.calculateNearestPoint = function (date) {
var diff = this.dayOfWeekInternal - date.getDay();
if (diff > 0)
return DateTimeUtils_1.DateTimeUtils.addDays(new Date(date), diff);
return this.calcNextPointWithWeekCount(date, 1);
};
Weekly.prototype.calcNextPointWithWeekCount = function (date, weekCount) {
if (weekCount === void 0) { weekCount = 1; }
var daysToAdd = weekCount * 7 + this.dayOfWeekInternal - date.getDay();
return DateTimeUtils_1.DateTimeUtils.addDays(new Date(date), daysToAdd);
};
Object.defineProperty(Weekly.prototype, "dayOfWeek", {
get: function () { return this.dayOfWeekInternal; },
set: function (value) { this.dayOfWeekInternal = value; },
enumerable: true,
configurable: true
});
;
;
return Weekly;
}(RecurrenceBase_1.RecurrenceBase));
exports.Weekly = Weekly;
/***/ }),
/* 50 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var RecurrenceBase_1 = __webpack_require__(11);
var DateTimeUtils_1 = __webpack_require__(2);
var MonthInfo_1 = __webpack_require__(51);
var Monthly = (function (_super) {
__extends(Monthly, _super);
function Monthly() {
return _super !== null && _super.apply(this, arguments) || this;
}
Monthly.prototype.checkDate = function (date) {
if (this._calculateByDayOfWeek)
return DateTimeUtils_1.DateTimeUtils.checkDayOfWeekOccurrenceInMonth(date, this.dayOfWeekInternal, this.dayOfWeekOccurrenceInternal);
return DateTimeUtils_1.DateTimeUtils.checkDayOfMonth(this.dayInternal, date);
};
Monthly.prototype.checkInterval = function (date) {
return DateTimeUtils_1.DateTimeUtils.getMonthsDifference(this.start, date) % this.interval == 0;
};
Monthly.prototype.calculatePointByInterval = function (date) {
var start = this.start;
var monthFromStart = DateTimeUtils_1.DateTimeUtils.getMonthsDifference(start, date);
var monthToAdd = Math.floor(monthFromStart / this.interval) * this.interval;
var info = new MonthInfo_1.MonthInfo(start.getMonth(), start.getFullYear());
info.addMonths(monthToAdd);
var point = this.getSpecDayInMonth(info.year, info.month);
if (DateTimeUtils_1.DateTimeUtils.compareDates(point, date) >= 0) {
info.addMonths(this.interval);
point = this.getSpecDayInMonth(info.year, info.month);
}
return point;
};
Monthly.prototype.calculateNearestPoint = function (date) {
var month = date.getMonth();
var year = date.getFullYear();
var point = this.getSpecDayInMonth(year, month);
if (DateTimeUtils_1.DateTimeUtils.compareDates(point, date) >= 0) {
var info = new MonthInfo_1.MonthInfo(month, year);
info.addMonths(1);
point = this.getSpecDayInMonth(info.year, info.month);
}
return point;
};
Object.defineProperty(Monthly.prototype, "day", {
get: function () { return this.dayInternal; },
set: function (value) { this.dayInternal = value; },
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(Monthly.prototype, "dayOfWeek", {
get: function () { return this.dayOfWeekInternal; },
set: function (value) { this.dayOfWeekInternal = value; },
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(Monthly.prototype, "dayOfWeekOccurrence", {
get: function () { return this.dayOfWeekOccurrenceInternal; },
set: function (value) { this.dayOfWeekOccurrenceInternal = value; },
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(Monthly.prototype, "calculateByDayOfWeek", {
get: function () { return this._calculateByDayOfWeek; },
set: function (value) { this._calculateByDayOfWeek = value; },
enumerable: true,
configurable: true
});
;
;
return Monthly;
}(RecurrenceBase_1.RecurrenceBase));
exports.Monthly = Monthly;
/***/ }),
/* 51 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DateTimeUtils_1 = __webpack_require__(2);
var MonthInfo = (function () {
function MonthInfo(month, year) {
this.month = month;
this.year = year;
}
MonthInfo.prototype.addMonths = function (months) {
var nextMonth = DateTimeUtils_1.DateTimeUtils.getNextMonth(this.month, months);
var yearInc = Math.floor(months / 12);
if (nextMonth < this.month)
++yearInc;
this.month = nextMonth;
this.year += yearInc;
};
return MonthInfo;
}());
exports.MonthInfo = MonthInfo;
/***/ }),
/* 52 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var RecurrenceBase_1 = __webpack_require__(11);
var DateTimeUtils_1 = __webpack_require__(2);
var Yearly = (function (_super) {
__extends(Yearly, _super);
function Yearly() {
return _super !== null && _super.apply(this, arguments) || this;
}
Yearly.prototype.checkDate = function (date) {
if (!DateTimeUtils_1.DateTimeUtils.checkMonth(this.month, date))
return false;
if (this._calculateByDayOfWeek)
return DateTimeUtils_1.DateTimeUtils.checkDayOfWeekOccurrenceInMonth(date, this.dayOfWeekInternal, this.dayOfWeekOccurrenceInternal);
return DateTimeUtils_1.DateTimeUtils.checkDayOfMonth(this.dayInternal, date);
};
Yearly.prototype.checkInterval = function (date) {
return DateTimeUtils_1.DateTimeUtils.getYearsDifference(this.start, date) % this.interval == 0;
};
Yearly.prototype.calculatePointByInterval = function (date) {
var yearFromStart = DateTimeUtils_1.DateTimeUtils.getYearsDifference(this.start, date);
var yearInc = Math.floor(yearFromStart / this.interval) * this.interval;
var newYear = this.start.getFullYear() + yearInc;
var point = this.getSpecDayInMonth(newYear, this.monthInternal);
if (DateTimeUtils_1.DateTimeUtils.compareDates(point, date) >= 0) {
newYear += this.interval;
point = this.getSpecDayInMonth(newYear, this.monthInternal);
}
return point;
};
Yearly.prototype.calculateNearestPoint = function (date) {
var year = date.getFullYear();
var point = this.getSpecDayInMonth(year, this.monthInternal);
if (DateTimeUtils_1.DateTimeUtils.compareDates(point, date) >= 0)
point = this.getSpecDayInMonth(++year, this.monthInternal);
return point;
};
Object.defineProperty(Yearly.prototype, "month", {
get: function () { return this.monthInternal; },
set: function (value) { this.monthInternal = value; },
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(Yearly.prototype, "day", {
get: function () { return this.dayInternal; },
set: function (value) { this.dayInternal = value; },
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(Yearly.prototype, "dayOfWeek", {
get: function () { return this.dayOfWeekInternal; },
set: function (value) { this.dayOfWeekInternal = value; },
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(Yearly.prototype, "dayOfWeekOccurrence", {
get: function () { return this.dayOfWeekOccurrenceInternal; },
set: function (value) { this.dayOfWeekOccurrenceInternal = value; },
enumerable: true,
configurable: true
});
;
;
Object.defineProperty(Yearly.prototype, "calculateByDayOfWeek", {
get: function () { return this._calculateByDayOfWeek; },
set: function (value) { this._calculateByDayOfWeek = value; },
enumerable: true,
configurable: true
});
;
;
return Yearly;
}(RecurrenceBase_1.RecurrenceBase));
exports.Yearly = Yearly;
/***/ }),
/* 53 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var TimeRange_1 = __webpack_require__(24);
var DateTimeUtils_1 = __webpack_require__(2);
var Time_1 = __webpack_require__(23);
var DayWorkingTimeInfo = (function () {
function DayWorkingTimeInfo(dayNumber, isWorkDay, intervals) {
if (dayNumber === void 0) { dayNumber = 0; }
if (isWorkDay === void 0) { isWorkDay = true; }
if (intervals === void 0) { intervals = null; }
this._workingIntervals = new Array();
this.dayNumber = dayNumber;
this.isWorkDay = isWorkDay;
this.addWorkingIntervals(intervals);
}
DayWorkingTimeInfo.prototype.addWorkingIntervals = function (intervals) {
if (!intervals)
return;
this._workingIntervals = this._workingIntervals.concat(intervals.filter(function (r) { return !!r; }));
this.rearrangeWorkingIntervals();
};
DayWorkingTimeInfo.prototype.rearrangeWorkingIntervals = function () {
for (var i = 0; i < this._workingIntervals.length; i++) {
this.concatWithIntersectedRanges(this._workingIntervals[i]);
}
this.sortIntervals();
};
;
DayWorkingTimeInfo.prototype.concatWithIntersectedRanges = function (range) {
var _this = this;
var intersectedRanges = this.getIntersectedIntervals(range);
intersectedRanges.forEach(function (r) {
range.concatWith(r);
_this.removeInterval(r);
});
};
;
DayWorkingTimeInfo.prototype.getIntersectedIntervals = function (range) {
return this._workingIntervals.filter(function (r) { return r.hasIntersect(range) && r !== range; });
};
;
DayWorkingTimeInfo.prototype.sortIntervals = function () {
this._workingIntervals.sort(function (r1, r2) { return DateTimeUtils_1.DateTimeUtils.caclTimeDifference(r2.start, r1.start); });
};
;
DayWorkingTimeInfo.prototype.removeInterval = function (element) {
var index = this._workingIntervals.indexOf(element);
if (index > -1 && index < this._workingIntervals.length)
this._workingIntervals.splice(index, 1);
};
;
DayWorkingTimeInfo.prototype.clearIntervals = function () {
this._workingIntervals.splice(0, this._workingIntervals.length);
};
Object.defineProperty(DayWorkingTimeInfo.prototype, "workingIntervals", {
get: function () { return this._workingIntervals.slice(); },
enumerable: true,
configurable: true
});
;
Object.defineProperty(DayWorkingTimeInfo.prototype, "noWorkingIntervals", {
get: function () {
var res = new Array();
if (this.isWorkDay && this._workingIntervals.length == 0)
return res;
var starts = this._workingIntervals.map(function (r) { return r.end; });
starts.splice(0, 0, new Time_1.Time());
var ends = this._workingIntervals.map(function (r) { return r.start; });
ends.push(DateTimeUtils_1.DateTimeUtils.getLastTimeOfDay());
for (var i = 0; i < starts.length; i++) {
var start = starts[i];
var end = ends[i];
if (!DateTimeUtils_1.DateTimeUtils.areTimesEqual(start, end))
res.push(new TimeRange_1.TimeRange(start, end));
}
return res;
},
enumerable: true,
configurable: true
});
;
Object.defineProperty(DayWorkingTimeInfo.prototype, "isWorkDay", {
get: function () { return this._isWorkDay; },
set: function (value) {
this._isWorkDay = value;
if (!value)
this.clearIntervals();
},
enumerable: true,
configurable: true
});
;
return DayWorkingTimeInfo;
}());
exports.DayWorkingTimeInfo = DayWorkingTimeInfo;
/***/ }),
/* 54 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Margins = (function () {
function Margins() {
this.marginLeft = null;
this.marginTop = null;
this.marginRight = null;
this.marginBottom = null;
}
return Margins;
}());
exports.Margins = Margins;
/***/ }),
/* 55 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var EtalonSizeValues = (function () {
function EtalonSizeValues() {
this.scaleItemWidths = {};
}
return EtalonSizeValues;
}());
exports.EtalonSizeValues = EtalonSizeValues;
/***/ }),
/* 56 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DependencyManipulator_1 = __webpack_require__(57);
var ResourcesManipulator_1 = __webpack_require__(59);
var TaskManipulator_1 = __webpack_require__(60);
var ModelManipulator = (function () {
function ModelManipulator(viewModel, dispatcher) {
this.task = new TaskManipulator_1.TaskManipulator(viewModel, dispatcher);
this.dependency = new DependencyManipulator_1.TaskDependencyManipulator(viewModel, dispatcher);
this.resource = new ResourcesManipulator_1.ResourcesManipulator(viewModel, dispatcher);
}
return ModelManipulator;
}());
exports.ModelManipulator = ModelManipulator;
/***/ }),
/* 57 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var TaskPropertiesManipulator_1 = __webpack_require__(17);
var TaskDependencyManipulator = (function (_super) {
__extends(TaskDependencyManipulator, _super);
function TaskDependencyManipulator() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskDependencyManipulator.prototype.insertDependency = function (predecessorId, successorId, type, id) {
var dependency = this.viewModel.dependencies.createItem();
dependency.predecessorId = predecessorId;
dependency.successorId = successorId;
dependency.type = type;
if (id)
dependency.internalId = id;
this.viewModel.dependencies.add(dependency);
this.dispatcher.notifyDependencyInserted(this.getObjectForDataSource(dependency), function (id) { return dependency.id = id; });
this.viewModel.updateVisibleItemDependencies();
this.viewModel.owner.resetAndUpdate();
return dependency;
};
TaskDependencyManipulator.prototype.removeDependency = function (dependencyId) {
var dependency = this.viewModel.dependencies.getItemById(dependencyId);
this.viewModel.dependencies.remove(dependency);
this.dispatcher.notifyDependencyRemoved(dependency.id);
this.viewModel.updateVisibleItemDependencies();
this.viewModel.owner.resetAndUpdate();
return dependency;
};
TaskDependencyManipulator.prototype.getObjectForDataSource = function (dependency) {
return {
id: dependency.id,
predecessorId: this.viewModel.tasks.getItemById(dependency.predecessorId).id,
successorId: this.viewModel.tasks.getItemById(dependency.successorId).id,
type: dependency.type
};
};
return TaskDependencyManipulator;
}(TaskPropertiesManipulator_1.BaseManipulator));
exports.TaskDependencyManipulator = TaskDependencyManipulator;
/***/ }),
/* 58 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var HistoryItemState = (function () {
function HistoryItemState(taskId, value) {
this.taskId = taskId;
this.value = value;
}
return HistoryItemState;
}());
exports.HistoryItemState = HistoryItemState;
/***/ }),
/* 59 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var TaskPropertiesManipulator_1 = __webpack_require__(17);
var ResourcesManipulator = (function (_super) {
__extends(ResourcesManipulator, _super);
function ResourcesManipulator() {
return _super !== null && _super.apply(this, arguments) || this;
}
ResourcesManipulator.prototype.create = function (text, id) {
var resource = this.viewModel.resources.createItem();
resource.text = text;
if (id)
resource.internalId = id;
this.viewModel.resources.add(resource);
this.dispatcher.notifyResourceCreated(this.getResourceObjectForDataSource(resource), function (id) { return resource.id = id; });
return resource;
};
ResourcesManipulator.prototype.remove = function (resourceId) {
var resource = this.viewModel.resources.getItemById(resourceId);
if (!resource)
throw new Error("Invalid resource id");
var assignments = this.viewModel.assignments.items.filter(function (a) { return a.resourceId == resourceId; });
if (assignments.length)
throw new Error("Can't delete assigned resource");
this.viewModel.resources.remove(resource);
this.dispatcher.notifyResourceRemoved(resource.id);
return resource;
};
ResourcesManipulator.prototype.assign = function (resourceID, taskId, id) {
var assignment = this.viewModel.assignments.createItem();
assignment.resourceId = resourceID;
assignment.taskId = taskId;
if (id)
assignment.internalId = id;
this.viewModel.assignments.add(assignment);
this.dispatcher.notifyResourceAssigned(this.getResourceAssignmentObjectForDataSource(assignment), function (id) { return assignment.id = id; });
this.viewModel.updateModel();
this.viewModel.owner.resetAndUpdate();
return assignment;
};
ResourcesManipulator.prototype.deassig = function (assignmentId) {
var assignment = this.viewModel.assignments.getItemById(assignmentId);
this.viewModel.assignments.remove(assignment);
this.dispatcher.notifyResourceUnassigned(assignment);
this.viewModel.updateModel();
this.viewModel.owner.resetAndUpdate();
return assignment;
};
ResourcesManipulator.prototype.getResourceObjectForDataSource = function (resource) {
return {
id: resource.id,
text: resource.text
};
};
ResourcesManipulator.prototype.getResourceAssignmentObjectForDataSource = function (resourceAssignment) {
return {
id: resourceAssignment,
taskId: this.viewModel.tasks.getItemById(resourceAssignment.taskId).id,
resourceId: this.viewModel.resources.getItemById(resourceAssignment.resourceId).id
};
};
return ResourcesManipulator;
}(TaskPropertiesManipulator_1.BaseManipulator));
exports.ResourcesManipulator = ResourcesManipulator;
/***/ }),
/* 60 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var TaskPropertiesManipulator_1 = __webpack_require__(17);
var TaskManipulator = (function (_super) {
__extends(TaskManipulator, _super);
function TaskManipulator(viewModel, dispatcher) {
var _this = _super.call(this, viewModel, dispatcher) || this;
_this.properties = new TaskPropertiesManipulator_1.TaskPropertiesManipulator(viewModel, dispatcher);
return _this;
}
TaskManipulator.prototype.create = function (start, end, title, parentId, id) {
var task = this.viewModel.tasks.createItem();
task.start = start;
task.end = end;
task.title = title;
if (parentId) {
var parentItem = this.viewModel.tasks.getItemById(parentId);
parentItem.expanded = true;
task.parentId = parentId;
}
if (id) {
task.internalId = id;
}
task.id = task.internalId;
this.viewModel.tasks.add(task);
this.viewModel.updateModel();
this.dispatcher.notifyTaskCreated(this.getObjectForDataSource(task), function (id) { return task.id = id; });
this.viewModel.owner.resetAndUpdate();
return task;
};
TaskManipulator.prototype.remove = function (taskId) {
var task = this.viewModel.tasks.getItemById(taskId);
if (!task)
throw new Error("Invalid task id");
var dependencies = this.viewModel.dependencies.items.filter(function (d) { return d.predecessorId == taskId || d.successorId == taskId; });
if (dependencies.length)
throw new Error("Can't delete task with dependency");
var assignments = this.viewModel.assignments.items.filter(function (a) { return a.taskId == taskId; });
if (assignments.length)
throw new Error("Can't delete task with assigned resource");
this.viewModel.tasks.remove(task);
this.dispatcher.notifyTaskRemoved(task.id);
this.viewModel.updateModel();
this.viewModel.owner.resetAndUpdate();
return task;
};
TaskManipulator.prototype.getObjectForDataSource = function (task) {
return {
id: task.id,
start: task.start,
end: task.end,
duration: task.duration,
description: task.description,
parentId: task.parentId ? this.viewModel.tasks.getItemById(task.parentId).id : null,
progress: task.progress,
taskType: task.taskType,
title: task.title,
customFields: task.customFields,
expanded: task.expanded
};
};
return TaskManipulator;
}(TaskPropertiesManipulator_1.BaseManipulator));
exports.TaskManipulator = TaskManipulator;
/***/ }),
/* 61 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var HistoryItem_1 = __webpack_require__(9);
var History = (function () {
function History() {
this.historyItems = [];
this.currentIndex = -1;
this.transaction = null;
this.transactionLevel = -1;
}
History.prototype.undo = function () {
if (this.currentIndex < 0)
return;
this.historyItems[this.currentIndex].undo();
this.currentIndex--;
};
History.prototype.redo = function () {
if (this.currentIndex >= this.historyItems.length - 1)
return;
this.currentIndex++;
this.historyItems[this.currentIndex].redo();
};
History.prototype.beginTransaction = function () {
this.transactionLevel++;
if (this.transactionLevel == 0)
this.transaction = new HistoryItem_1.CompositionHistoryItem();
};
History.prototype.endTransaction = function () {
if (--this.transactionLevel >= 0)
return;
var transactionLength = this.transaction.historyItems.length;
if (transactionLength > 1)
this.addInternal(this.transaction);
else if (transactionLength == 1)
this.addInternal(this.transaction.historyItems.pop());
this.transaction = null;
};
History.prototype.addAndRedo = function (historyItem) {
this.add(historyItem);
historyItem.redo();
};
History.prototype.add = function (historyItem) {
if (this.transactionLevel >= 0)
this.transaction.add(historyItem);
else
this.addInternal(historyItem);
};
History.prototype.addInternal = function (historyItem) {
if (this.currentIndex < this.historyItems.length - 1)
this.historyItems.splice(this.currentIndex + 1);
this.historyItems.push(historyItem);
this.currentIndex++;
this.deleteOldItems();
};
History.prototype.deleteOldItems = function () {
var exceedItemsCount = this.historyItems.length - History.MAX_HISTORY_ITEM_COUNT;
if (exceedItemsCount > 0 && this.currentIndex > exceedItemsCount) {
this.historyItems.splice(0, exceedItemsCount);
this.currentIndex -= exceedItemsCount;
}
};
History.prototype.clear = function () {
this.currentIndex = -1;
this.historyItems = [];
};
History.MAX_HISTORY_ITEM_COUNT = 100;
return History;
}());
exports.History = History;
/***/ }),
/* 62 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var MouseHandler_1 = __webpack_require__(63);
var DomUtils_1 = __webpack_require__(1);
var KeyCode_1 = __webpack_require__(71);
var Browser_1 = __webpack_require__(12);
var EventManager = (function () {
function EventManager(control) {
this.control = control;
this.mouseHandler = new MouseHandler_1.MouseHandler(control);
}
EventManager.prototype.onMouseDown = function (evt) {
this.mouseHandler.onMouseDown(evt);
};
EventManager.prototype.onMouseMove = function (evt) {
this.mouseHandler.onMouseMove(evt);
};
EventManager.prototype.onMouseUp = function (evt) {
this.mouseHandler.onMouseUp(evt);
};
EventManager.prototype.onMouseDblClick = function (evt) {
this.mouseHandler.onMouseDoubleClick(evt);
};
EventManager.prototype.onMouseWheel = function (evt) {
this.mouseHandler.onMouseWheel(evt);
};
EventManager.prototype.onKeyDown = function (evt) {
if (this.control.isFocus) {
var code = this.getShortcutCode(evt);
if (code == (KeyCode_1.ModifierKey.Ctrl | KeyCode_1.KeyCode.Key_z))
this.control.history.undo();
if (code == (KeyCode_1.ModifierKey.Ctrl | KeyCode_1.KeyCode.Key_y))
this.control.history.redo();
if (code == KeyCode_1.KeyCode.Delete)
this.control.taskEditController.deleteSelectedDependency();
}
};
EventManager.prototype.getShortcutCode = function (evt) {
var keyCode = DomUtils_1.DomUtils.GetKeyCode(evt);
var modifiers = 0;
if (evt.altKey)
modifiers |= KeyCode_1.ModifierKey.Alt;
if (evt.ctrlKey)
modifiers |= KeyCode_1.ModifierKey.Ctrl;
if (evt.shiftKey)
modifiers |= KeyCode_1.ModifierKey.Shift;
if (evt.metaKey && Browser_1.Browser.MacOSPlatform)
modifiers |= KeyCode_1.ModifierKey.Meta;
return modifiers | keyCode;
};
return EventManager;
}());
exports.EventManager = EventManager;
/***/ }),
/* 63 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var HandlerBase_1 = __webpack_require__(64);
var TaskAreaManager_1 = __webpack_require__(8);
var TaskEditController_1 = __webpack_require__(30);
var MouseHandlerDefaultState_1 = __webpack_require__(65);
var DomUtils_1 = __webpack_require__(1);
var MouseHandlerMoveTaskState_1 = __webpack_require__(67);
var MouseHandlerProgressTaskState_1 = __webpack_require__(68);
var MouseHandlerTimestampTaskState_1 = __webpack_require__(69);
var MouseHandlerDependencyState_1 = __webpack_require__(70);
var MouseHandler = (function (_super) {
__extends(MouseHandler, _super);
function MouseHandler() {
return _super !== null && _super.apply(this, arguments) || this;
}
MouseHandler.prototype.onMouseDoubleClick = function (evt) {
this.state.onMouseDoubleClick(evt);
};
MouseHandler.prototype.onMouseDown = function (evt) {
var source = this.getMouseEventSource(DomUtils_1.DomUtils.getEventSource(evt));
switch (source) {
case TaskAreaManager_1.MouseEventSource.TaskEdit_Frame:
this.switchState(new MouseHandlerMoveTaskState_1.MouseHandlerMoveTaskState(this));
break;
case TaskAreaManager_1.MouseEventSource.TaskEdit_Progress:
this.switchState(new MouseHandlerProgressTaskState_1.MouseHandlerProgressTaskState(this));
break;
case TaskAreaManager_1.MouseEventSource.TaskEdit_Start:
case TaskAreaManager_1.MouseEventSource.TaskEdit_End:
this.switchState(new MouseHandlerTimestampTaskState_1.MouseHandlerTimestampTaskState(this));
break;
case TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyStart:
case TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyFinish:
this.switchState(new MouseHandlerDependencyState_1.MouseHandlerDependencyState(this));
break;
}
this.state.onMouseDown(evt);
};
MouseHandler.prototype.onMouseUp = function (evt) {
this.state.onMouseUp(evt);
};
MouseHandler.prototype.onMouseMove = function (evt) {
this.state.onMouseMove(evt);
};
MouseHandler.prototype.onMouseWheel = function (evt) {
this.state.onMouseWheel(evt);
};
MouseHandler.prototype.switchToDefaultState = function () {
this.state = new MouseHandlerDefaultState_1.MouseHandlerDefaultState(this);
};
MouseHandler.prototype.getMouseEventSource = function (initSource) {
var source = initSource.nodeType === Node.ELEMENT_NODE ? initSource : initSource.parentNode;
var className = source.className;
return TaskEditController_1.TaskEditController.classToSource[className] || TaskAreaManager_1.MouseEventSource.TaskArea;
};
return MouseHandler;
}(HandlerBase_1.HandlerBase));
exports.MouseHandler = MouseHandler;
/***/ }),
/* 64 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var HandlerBase = (function () {
function HandlerBase(control) {
this.control = control;
this.switchToDefaultState();
}
HandlerBase.prototype.switchState = function (state) {
if (this.state)
this.state.finish();
this.state = state;
this.state.start();
};
HandlerBase.prototype.switchToDefaultState = function () {
throw new Error("Not implemented");
};
return HandlerBase;
}());
exports.HandlerBase = HandlerBase;
/***/ }),
/* 65 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var DomUtils_1 = __webpack_require__(1);
var MouseHandlerStateBase_1 = __webpack_require__(18);
var Point_1 = __webpack_require__(3);
var GridLayoutCalculator_1 = __webpack_require__(16);
var MouseHandlerDefaultState = (function (_super) {
__extends(MouseHandlerDefaultState, _super);
function MouseHandlerDefaultState(handler) {
var _this = _super.call(this, handler) || this;
_this.ganttMovingHelper = new GanttMovingHelper(_this.handler.control);
return _this;
}
MouseHandlerDefaultState.prototype.onMouseDown = function (evt) {
evt.preventDefault();
var source = DomUtils_1.DomUtils.getEventSource(evt);
if (source.className == GridLayoutCalculator_1.GridLayoutCalculator.CLASSNAMES.CONNECTOR_HORIZONTAL ||
source.className == GridLayoutCalculator_1.GridLayoutCalculator.CLASSNAMES.CONNECTOR_VERTICAL) {
var id = source.getAttribute("dependency-id");
this.handler.control.taskEditController.selectDependency(id);
this.handler.control.resetAndUpdate();
}
else {
if (DomUtils_1.DomUtils.IsLeftButtonPressed(evt))
this.ganttMovingHelper.startMoving(evt);
if (this.handler.control.taskEditController.dependencyId != null) {
this.handler.control.taskEditController.selectDependency(null);
this.handler.control.resetAndUpdate();
}
}
};
MouseHandlerDefaultState.prototype.onMouseUp = function (evt) {
this.ganttMovingHelper.onMouseUp(evt);
};
MouseHandlerDefaultState.prototype.onMouseMove = function (evt) {
if (this.ganttMovingHelper.movingInfo) {
this.ganttMovingHelper.onMouseMove(evt);
evt.preventDefault();
}
};
MouseHandlerDefaultState.prototype.onMouseWheel = function (evt) {
if (evt.ctrlKey) {
evt.preventDefault();
evt.stopPropagation();
var increase = DomUtils_1.DomUtils.getWheelDelta(evt) > 0;
var absolutePos = new Point_1.Point(DomUtils_1.DomUtils.getEventX(evt), DomUtils_1.DomUtils.getEventY(evt));
var currentPos = this.getRelativePos(new Point_1.Point(DomUtils_1.DomUtils.getEventX(evt), DomUtils_1.DomUtils.getEventY(evt)));
var currentDate = this.handler.control.gridLayoutCalculator.getDateByPos(currentPos.x);
if (increase)
this.handler.control.zoomIn();
else
this.handler.control.zoomOut();
var scrollLeft = this.handler.control.gridLayoutCalculator.getPosByDate(currentDate);
this.handler.control.taskAreaContainer.scrollLeft = scrollLeft -
(absolutePos.x - DomUtils_1.DomUtils.getAbsolutePositionX(this.handler.control.taskAreaContainer.getElement()));
}
};
return MouseHandlerDefaultState;
}(MouseHandlerStateBase_1.MouseHandlerStateBase));
exports.MouseHandlerDefaultState = MouseHandlerDefaultState;
var GanttMovingHelper = (function () {
function GanttMovingHelper(gantt) {
this.gantt = gantt;
this.movingInfo = null;
}
GanttMovingHelper.prototype.startMoving = function (e) {
this.movingInfo = this.calcMovingInfo(e);
this.updateGanttAreaCursor(true);
};
GanttMovingHelper.prototype.cancelMoving = function () {
this.movingInfo = null;
};
GanttMovingHelper.prototype.onMouseMove = function (e) {
this.move(e);
};
GanttMovingHelper.prototype.onMouseUp = function (e) {
this.cancelMoving();
this.updateGanttAreaCursor(false);
};
GanttMovingHelper.prototype.move = function (e) {
this.updateScrollPosition(e);
};
GanttMovingHelper.prototype.updateScrollPosition = function (e) {
var newEventX = Math.round(DomUtils_1.DomUtils.getEventX(e));
var newEventY = Math.round(DomUtils_1.DomUtils.getEventY(e));
var deltaX = newEventX - this.movingInfo.eventX;
var deltaY = newEventY - this.movingInfo.eventY;
var dirX = deltaX < 0 ? -1 : 1;
var dirY = deltaY < 0 ? -1 : 1;
var maxDeltaX = dirX < 0 ? this.movingInfo.maxRightDelta : this.movingInfo.maxLeftDelta;
var maxDeltaY = dirY < 0 ? this.movingInfo.maxBottomDelta : this.movingInfo.maxTopDelta;
if (Math.abs(deltaX) > maxDeltaX)
deltaX = maxDeltaX * dirX;
if (Math.abs(deltaY) > maxDeltaY)
deltaY = maxDeltaY * dirY;
var newScrollLeft = this.movingInfo.scrollLeft - deltaX;
var newScrollTop = this.movingInfo.scrollTop - deltaY;
var taskAreaContainer = this.gantt.taskAreaContainer;
if (taskAreaContainer.scrollLeft !== newScrollLeft)
taskAreaContainer.scrollLeft = newScrollLeft;
if (taskAreaContainer.scrollTop !== newScrollTop)
taskAreaContainer.scrollTop = newScrollTop;
};
GanttMovingHelper.prototype.calcMovingInfo = function (e) {
var taskAreaContainer = this.gantt.taskAreaContainer;
return {
eventX: DomUtils_1.DomUtils.getEventX(e),
eventY: DomUtils_1.DomUtils.getEventY(e),
scrollLeft: taskAreaContainer.scrollLeft,
scrollTop: taskAreaContainer.scrollTop,
maxLeftDelta: taskAreaContainer.scrollLeft,
maxRightDelta: taskAreaContainer.scrollWidth - taskAreaContainer.scrollLeft - taskAreaContainer.getElement().offsetWidth,
maxTopDelta: taskAreaContainer.scrollTop,
maxBottomDelta: taskAreaContainer.scrollHeight - taskAreaContainer.scrollTop - taskAreaContainer.getElement().offsetHeight
};
};
GanttMovingHelper.prototype.updateGanttAreaCursor = function (drag) {
this.gantt.taskAreaContainer.getElement().style.cursor = drag ? "grabbing" : "default";
};
return GanttMovingHelper;
}());
exports.GanttMovingHelper = GanttMovingHelper;
/***/ }),
/* 66 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var HandlerStateBase = (function () {
function HandlerStateBase(handler) {
this.handler = handler;
}
HandlerStateBase.prototype.start = function () { };
HandlerStateBase.prototype.finish = function () { };
return HandlerStateBase;
}());
exports.HandlerStateBase = HandlerStateBase;
/***/ }),
/* 67 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var MouseHandlerDragTaskBaseState_1 = __webpack_require__(19);
var MouseHandlerMoveTaskState = (function (_super) {
__extends(MouseHandlerMoveTaskState, _super);
function MouseHandlerMoveTaskState() {
return _super !== null && _super.apply(this, arguments) || this;
}
MouseHandlerMoveTaskState.prototype.onMouseUpInternal = function (_evt) {
this.handler.control.taskEditController.confirmMove();
};
MouseHandlerMoveTaskState.prototype.onMouseMoveInternal = function (position) {
this.handler.control.taskEditController.processMove(position.x - this.currentPosition.x);
};
return MouseHandlerMoveTaskState;
}(MouseHandlerDragTaskBaseState_1.MouseHandlerDragBaseState));
exports.MouseHandlerMoveTaskState = MouseHandlerMoveTaskState;
/***/ }),
/* 68 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var MouseHandlerDragTaskBaseState_1 = __webpack_require__(19);
var MouseHandlerProgressTaskState = (function (_super) {
__extends(MouseHandlerProgressTaskState, _super);
function MouseHandlerProgressTaskState() {
return _super !== null && _super.apply(this, arguments) || this;
}
MouseHandlerProgressTaskState.prototype.onMouseUpInternal = function (_evt) {
this.handler.control.taskEditController.confirmProgress();
};
MouseHandlerProgressTaskState.prototype.onMouseMoveInternal = function (position) {
var relativePosition = this.getRelativePos(position);
this.handler.control.taskEditController.processProgress(relativePosition);
};
return MouseHandlerProgressTaskState;
}(MouseHandlerDragTaskBaseState_1.MouseHandlerDragBaseState));
exports.MouseHandlerProgressTaskState = MouseHandlerProgressTaskState;
/***/ }),
/* 69 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var TaskAreaManager_1 = __webpack_require__(8);
var DomUtils_1 = __webpack_require__(1);
var MouseHandlerDragTaskBaseState_1 = __webpack_require__(19);
var MouseHandlerTimestampTaskState = (function (_super) {
__extends(MouseHandlerTimestampTaskState, _super);
function MouseHandlerTimestampTaskState() {
return _super !== null && _super.apply(this, arguments) || this;
}
MouseHandlerTimestampTaskState.prototype.onMouseDown = function (evt) {
_super.prototype.onMouseDown.call(this, evt);
this.source = this.handler.getMouseEventSource(DomUtils_1.DomUtils.getEventSource(evt));
};
MouseHandlerTimestampTaskState.prototype.onMouseUpInternal = function (_evt) {
if (this.source == TaskAreaManager_1.MouseEventSource.TaskEdit_Start)
this.handler.control.taskEditController.confirmStart();
else
this.handler.control.taskEditController.confirmEnd();
};
MouseHandlerTimestampTaskState.prototype.onMouseMoveInternal = function (position) {
var relativePosition = this.getRelativePos(position);
if (this.source == TaskAreaManager_1.MouseEventSource.TaskEdit_Start)
this.handler.control.taskEditController.processStart(relativePosition);
if (this.source == TaskAreaManager_1.MouseEventSource.TaskEdit_End)
this.handler.control.taskEditController.processEnd(relativePosition);
};
return MouseHandlerTimestampTaskState;
}(MouseHandlerDragTaskBaseState_1.MouseHandlerDragBaseState));
exports.MouseHandlerTimestampTaskState = MouseHandlerTimestampTaskState;
/***/ }),
/* 70 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var Point_1 = __webpack_require__(3);
var DomUtils_1 = __webpack_require__(1);
var MouseHandlerStateBase_1 = __webpack_require__(18);
var TaskAreaManager_1 = __webpack_require__(8);
var Dependency_1 = __webpack_require__(14);
var dependencyMap = [];
dependencyMap[TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyStart] = [];
dependencyMap[TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyFinish] = [];
dependencyMap[TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyStart][TaskAreaManager_1.MouseEventSource.Successor_DependencyStart] = Dependency_1.DependencyType.SS;
dependencyMap[TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyStart][TaskAreaManager_1.MouseEventSource.Successor_DependencyFinish] = Dependency_1.DependencyType.SF;
dependencyMap[TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyFinish][TaskAreaManager_1.MouseEventSource.Successor_DependencyStart] = Dependency_1.DependencyType.FS;
dependencyMap[TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyFinish][TaskAreaManager_1.MouseEventSource.Successor_DependencyFinish] = Dependency_1.DependencyType.FF;
var MouseHandlerDependencyState = (function (_super) {
__extends(MouseHandlerDependencyState, _super);
function MouseHandlerDependencyState() {
return _super !== null && _super.apply(this, arguments) || this;
}
MouseHandlerDependencyState.prototype.onMouseDown = function (evt) {
var sourceElement = DomUtils_1.DomUtils.getEventSource(evt);
this.source = this.handler.getMouseEventSource(sourceElement);
var pos = this.getRelativePos(new Point_1.Point(DomUtils_1.DomUtils.getAbsolutePositionX(sourceElement) + sourceElement.clientWidth / 2, DomUtils_1.DomUtils.getAbsolutePositionY(sourceElement) + sourceElement.clientHeight / 2));
this.handler.control.taskEditController.startDependency(pos);
};
MouseHandlerDependencyState.prototype.onMouseUp = function (evt) {
var target = this.handler.getMouseEventSource(DomUtils_1.DomUtils.getEventSource(evt));
var type = target === TaskAreaManager_1.MouseEventSource.Successor_DependencyStart || target == TaskAreaManager_1.MouseEventSource.Successor_DependencyFinish ?
dependencyMap[this.source][target] : null;
this.handler.control.taskEditController.endDependency(type);
this.handler.switchToDefaultState();
};
MouseHandlerDependencyState.prototype.onMouseMove = function (evt) {
evt.preventDefault();
var relativePos = this.getRelativePos(new Point_1.Point(DomUtils_1.DomUtils.getEventX(evt), DomUtils_1.DomUtils.getEventY(evt)));
var hoverTaskIndex = Math.floor(relativePos.y / this.handler.control.tickSize.height);
this.handler.control.taskEditController.processDependency(relativePos);
if (this.handler.control.viewModel.tasks.items[hoverTaskIndex])
this.handler.control.taskEditController.showDependencySuccessor(hoverTaskIndex);
};
return MouseHandlerDependencyState;
}(MouseHandlerStateBase_1.MouseHandlerStateBase));
exports.MouseHandlerDependencyState = MouseHandlerDependencyState;
/***/ }),
/* 71 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ModifierKey;
(function (ModifierKey) {
ModifierKey[ModifierKey["None"] = 0] = "None";
ModifierKey[ModifierKey["Ctrl"] = 65536] = "Ctrl";
ModifierKey[ModifierKey["Shift"] = 262144] = "Shift";
ModifierKey[ModifierKey["Alt"] = 1048576] = "Alt";
ModifierKey[ModifierKey["Meta"] = 16777216] = "Meta";
})(ModifierKey = exports.ModifierKey || (exports.ModifierKey = {}));
var KeyCode;
(function (KeyCode) {
KeyCode[KeyCode["Backspace"] = 8] = "Backspace";
KeyCode[KeyCode["Tab"] = 9] = "Tab";
KeyCode[KeyCode["Enter"] = 13] = "Enter";
KeyCode[KeyCode["Pause"] = 19] = "Pause";
KeyCode[KeyCode["CapsLock"] = 20] = "CapsLock";
KeyCode[KeyCode["Esc"] = 27] = "Esc";
KeyCode[KeyCode["Space"] = 32] = "Space";
KeyCode[KeyCode["PageUp"] = 33] = "PageUp";
KeyCode[KeyCode["PageDown"] = 34] = "PageDown";
KeyCode[KeyCode["End"] = 35] = "End";
KeyCode[KeyCode["Home"] = 36] = "Home";
KeyCode[KeyCode["Left"] = 37] = "Left";
KeyCode[KeyCode["Up"] = 38] = "Up";
KeyCode[KeyCode["Right"] = 39] = "Right";
KeyCode[KeyCode["Down"] = 40] = "Down";
KeyCode[KeyCode["Insert"] = 45] = "Insert";
KeyCode[KeyCode["Delete"] = 46] = "Delete";
KeyCode[KeyCode["Key_0"] = 48] = "Key_0";
KeyCode[KeyCode["Key_1"] = 49] = "Key_1";
KeyCode[KeyCode["Key_2"] = 50] = "Key_2";
KeyCode[KeyCode["Key_3"] = 51] = "Key_3";
KeyCode[KeyCode["Key_4"] = 52] = "Key_4";
KeyCode[KeyCode["Key_5"] = 53] = "Key_5";
KeyCode[KeyCode["Key_6"] = 54] = "Key_6";
KeyCode[KeyCode["Key_7"] = 55] = "Key_7";
KeyCode[KeyCode["Key_8"] = 56] = "Key_8";
KeyCode[KeyCode["Key_9"] = 57] = "Key_9";
KeyCode[KeyCode["Key_a"] = 65] = "Key_a";
KeyCode[KeyCode["Key_b"] = 66] = "Key_b";
KeyCode[KeyCode["Key_c"] = 67] = "Key_c";
KeyCode[KeyCode["Key_d"] = 68] = "Key_d";
KeyCode[KeyCode["Key_e"] = 69] = "Key_e";
KeyCode[KeyCode["Key_f"] = 70] = "Key_f";
KeyCode[KeyCode["Key_g"] = 71] = "Key_g";
KeyCode[KeyCode["Key_h"] = 72] = "Key_h";
KeyCode[KeyCode["Key_i"] = 73] = "Key_i";
KeyCode[KeyCode["Key_j"] = 74] = "Key_j";
KeyCode[KeyCode["Key_k"] = 75] = "Key_k";
KeyCode[KeyCode["Key_l"] = 76] = "Key_l";
KeyCode[KeyCode["Key_m"] = 77] = "Key_m";
KeyCode[KeyCode["Key_n"] = 78] = "Key_n";
KeyCode[KeyCode["Key_o"] = 79] = "Key_o";
KeyCode[KeyCode["Key_p"] = 80] = "Key_p";
KeyCode[KeyCode["Key_q"] = 81] = "Key_q";
KeyCode[KeyCode["Key_r"] = 82] = "Key_r";
KeyCode[KeyCode["Key_s"] = 83] = "Key_s";
KeyCode[KeyCode["Key_t"] = 84] = "Key_t";
KeyCode[KeyCode["Key_u"] = 85] = "Key_u";
KeyCode[KeyCode["Key_v"] = 86] = "Key_v";
KeyCode[KeyCode["Key_w"] = 87] = "Key_w";
KeyCode[KeyCode["Key_x"] = 88] = "Key_x";
KeyCode[KeyCode["Key_y"] = 89] = "Key_y";
KeyCode[KeyCode["Key_z"] = 90] = "Key_z";
KeyCode[KeyCode["Windows"] = 91] = "Windows";
KeyCode[KeyCode["ContextMenu"] = 93] = "ContextMenu";
KeyCode[KeyCode["Numpad_0"] = 96] = "Numpad_0";
KeyCode[KeyCode["Numpad_1"] = 97] = "Numpad_1";
KeyCode[KeyCode["Numpad_2"] = 98] = "Numpad_2";
KeyCode[KeyCode["Numpad_3"] = 99] = "Numpad_3";
KeyCode[KeyCode["Numpad_4"] = 100] = "Numpad_4";
KeyCode[KeyCode["Numpad_5"] = 101] = "Numpad_5";
KeyCode[KeyCode["Numpad_6"] = 102] = "Numpad_6";
KeyCode[KeyCode["Numpad_7"] = 103] = "Numpad_7";
KeyCode[KeyCode["Numpad_8"] = 104] = "Numpad_8";
KeyCode[KeyCode["Numpad_9"] = 105] = "Numpad_9";
KeyCode[KeyCode["Multiply"] = 106] = "Multiply";
KeyCode[KeyCode["Add"] = 107] = "Add";
KeyCode[KeyCode["Subtract"] = 109] = "Subtract";
KeyCode[KeyCode["Decimal"] = 110] = "Decimal";
KeyCode[KeyCode["Divide"] = 111] = "Divide";
KeyCode[KeyCode["F1"] = 112] = "F1";
KeyCode[KeyCode["F2"] = 113] = "F2";
KeyCode[KeyCode["F3"] = 114] = "F3";
KeyCode[KeyCode["F4"] = 115] = "F4";
KeyCode[KeyCode["F5"] = 116] = "F5";
KeyCode[KeyCode["F6"] = 117] = "F6";
KeyCode[KeyCode["F7"] = 118] = "F7";
KeyCode[KeyCode["F8"] = 119] = "F8";
KeyCode[KeyCode["F9"] = 120] = "F9";
KeyCode[KeyCode["F10"] = 121] = "F10";
KeyCode[KeyCode["F11"] = 122] = "F11";
KeyCode[KeyCode["F12"] = 123] = "F12";
KeyCode[KeyCode["NumLock"] = 144] = "NumLock";
KeyCode[KeyCode["ScrollLock"] = 145] = "ScrollLock";
KeyCode[KeyCode["Semicolon"] = 186] = "Semicolon";
KeyCode[KeyCode["Equals"] = 187] = "Equals";
KeyCode[KeyCode["Comma"] = 188] = "Comma";
KeyCode[KeyCode["Dash"] = 189] = "Dash";
KeyCode[KeyCode["Period"] = 190] = "Period";
KeyCode[KeyCode["ForwardSlash"] = 191] = "ForwardSlash";
KeyCode[KeyCode["GraveAccent"] = 192] = "GraveAccent";
KeyCode[KeyCode["OpenBracket"] = 219] = "OpenBracket";
KeyCode[KeyCode["BackSlash"] = 220] = "BackSlash";
KeyCode[KeyCode["CloseBracket"] = 221] = "CloseBracket";
KeyCode[KeyCode["SingleQuote"] = 222] = "SingleQuote";
})(KeyCode = exports.KeyCode || (exports.KeyCode = {}));
/***/ }),
/* 72 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var TaskAreaContainer = (function () {
function TaskAreaContainer(element, ganttView) {
this.element = element;
this.element.addEventListener("scroll", function () { ganttView.updateView(); });
}
Object.defineProperty(TaskAreaContainer.prototype, "scrollTop", {
get: function () {
return this.element.scrollTop;
},
set: function (value) {
this.element.scrollTop = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TaskAreaContainer.prototype, "scrollLeft", {
get: function () {
return this.element.scrollLeft;
},
set: function (value) {
this.element.scrollLeft = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TaskAreaContainer.prototype, "scrollWidth", {
get: function () {
return this.element.scrollWidth;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TaskAreaContainer.prototype, "scrollHeight", {
get: function () {
return this.element.scrollHeight;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TaskAreaContainer.prototype, "isExternal", {
get: function () {
return false;
},
enumerable: true,
configurable: true
});
TaskAreaContainer.prototype.getWidth = function () {
return this.element.offsetWidth;
};
TaskAreaContainer.prototype.getHeight = function () {
return this.element.offsetHeight;
};
TaskAreaContainer.prototype.getElement = function () {
return this.element;
};
return TaskAreaContainer;
}());
exports.TaskAreaContainer = TaskAreaContainer;
/***/ }),
/* 73 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Enums_1 = __webpack_require__(7);
var Utils_1 = __webpack_require__(0);
var Settings = (function () {
function Settings() {
this.viewType = undefined;
this.taskTitlePosition = Enums_1.TaskTitlePosition.Inside;
this.showResources = true;
this.areHorizontalBordersEnabled = true;
this.areVerticalBordersEnabled = true;
this.areAlternateRowsEnabled = true;
this.allowSelectTask = true;
this.editing = new EditingSettings();
}
Settings.parse = function (settings) {
var result = new Settings();
if (settings) {
if (Utils_1.JsonUtils.isExists(settings.viewType))
result.viewType = settings.viewType;
if (Utils_1.JsonUtils.isExists(settings.taskTitlePosition))
result.taskTitlePosition = settings.taskTitlePosition;
if (Utils_1.JsonUtils.isExists(settings.showResources))
result.showResources = settings.showResources;
if (Utils_1.JsonUtils.isExists(settings.areHorizontalBordersEnabled))
result.areHorizontalBordersEnabled = settings.areHorizontalBordersEnabled;
if (Utils_1.JsonUtils.isExists(settings.areVerticalBordersEnabled))
result.areHorizontalBordersEnabled = settings.areHorizontalBordersEnabled;
if (Utils_1.JsonUtils.isExists(settings.areAlternateRowsEnabled))
result.areAlternateRowsEnabled = settings.areAlternateRowsEnabled;
if (Utils_1.JsonUtils.isExists(settings.allowSelectTask))
result.allowSelectTask = settings.allowSelectTask;
if (Utils_1.JsonUtils.isExists(settings.editing))
result.editing = EditingSettings.parse(settings.editing);
}
return result;
};
return Settings;
}());
exports.Settings = Settings;
var EditingSettings = (function () {
function EditingSettings() {
this.enabled = false;
this.allowDependencyDeleting = true;
this.allowDependencyAdding = true;
this.allowDependencyUpdating = true;
this.allowTaskDeleting = true;
this.allowTaskAdding = true;
this.allowTaskUpdating = true;
this.allowResourceDeleting = true;
this.allowResourceAdding = true;
this.allowResourceUpdating = true;
}
EditingSettings.parse = function (settings) {
var result = new EditingSettings();
if (settings) {
if (Utils_1.JsonUtils.isExists(settings.enabled))
result.enabled = settings.enabled;
if (Utils_1.JsonUtils.isExists(settings.allowDependencyDeleting))
result.allowDependencyDeleting = settings.allowDependencyDeleting;
if (Utils_1.JsonUtils.isExists(settings.allowDependencyAdding))
result.allowDependencyAdding = settings.allowDependencyAdding;
if (Utils_1.JsonUtils.isExists(settings.allowDependencyUpdating))
result.allowDependencyUpdating = settings.allowDependencyUpdating;
if (Utils_1.JsonUtils.isExists(settings.allowTaskDeleting))
result.allowTaskDeleting = settings.allowTaskDeleting;
if (Utils_1.JsonUtils.isExists(settings.allowTaskAdding))
result.allowTaskAdding = settings.allowTaskAdding;
if (Utils_1.JsonUtils.isExists(settings.allowTaskUpdating))
result.allowTaskUpdating = settings.allowTaskUpdating;
if (Utils_1.JsonUtils.isExists(settings.allowResourceDeleting))
result.allowResourceDeleting = settings.allowResourceDeleting;
if (Utils_1.JsonUtils.isExists(settings.allowResourceAdding))
result.allowResourceAdding = settings.allowResourceAdding;
if (Utils_1.JsonUtils.isExists(settings.allowResourceUpdating))
result.allowResourceUpdating = settings.allowResourceUpdating;
}
return result;
};
return EditingSettings;
}());
exports.EditingSettings = EditingSettings;
/***/ }),
/* 74 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var EventDispatcher_1 = __webpack_require__(75);
var ModelChangesDispatcher = (function () {
function ModelChangesDispatcher() {
this.onModelChanged = new EventDispatcher_1.EventDispatcher();
}
ModelChangesDispatcher.prototype.notifyTaskCreated = function (task, callback) {
this.onModelChanged.raise("NotifyTaskCreated", task, callback);
};
ModelChangesDispatcher.prototype.notifyTaskRemoved = function (taskID) {
this.onModelChanged.raise("NotifyTaskRemoved", taskID);
};
ModelChangesDispatcher.prototype.notifyTaskTitleChanged = function (taskID, newValue) {
this.onModelChanged.raise("NotifyTaskTitleChanged", taskID, newValue);
};
ModelChangesDispatcher.prototype.notifyTaskDescriptionChanged = function (taskID, newValue) {
this.onModelChanged.raise("NotifyTaskDescriptionChanged", taskID, newValue);
};
ModelChangesDispatcher.prototype.notifyTaskStartChanged = function (taskID, newValue) {
this.onModelChanged.raise("NotifyTaskStartChanged", taskID, newValue);
};
ModelChangesDispatcher.prototype.notifyTaskEndChanged = function (taskID, newValue) {
this.onModelChanged.raise("NotifyTaskEndChanged", taskID, newValue);
};
ModelChangesDispatcher.prototype.notifyTaskProgressChanged = function (taskID, newValue) {
this.onModelChanged.raise("NotifyTaskProgressChanged", taskID, newValue);
};
ModelChangesDispatcher.prototype.notifyDependencyInserted = function (dependency, callback) {
this.onModelChanged.raise("NotifyDependencyInserted", dependency, callback);
};
ModelChangesDispatcher.prototype.notifyDependencyRemoved = function (dependencyID) {
this.onModelChanged.raise("NotifyDependencyRemoved", dependencyID);
};
ModelChangesDispatcher.prototype.notifyResourceCreated = function (resource, callback) {
this.onModelChanged.raise("NotifyResourceCreated", resource, callback);
};
ModelChangesDispatcher.prototype.notifyResourceRemoved = function (resourceID) {
this.onModelChanged.raise("NotifyResourceRemoved", resourceID);
};
ModelChangesDispatcher.prototype.notifyResourceAssigned = function (assignment, callback) {
this.onModelChanged.raise("NotifyResourceAssigned", assignment, callback);
};
ModelChangesDispatcher.prototype.notifyResourceUnassigned = function (assignmentID) {
this.onModelChanged.raise("NotifyResourceUnassigned", assignmentID);
};
return ModelChangesDispatcher;
}());
exports.ModelChangesDispatcher = ModelChangesDispatcher;
/***/ }),
/* 75 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var EventDispatcher = (function () {
function EventDispatcher() {
this.listeners = [];
}
EventDispatcher.prototype.add = function (listener) {
if (!listener)
throw new Error("Error");
if (!this.hasEventListener(listener))
this.listeners.push(listener);
};
EventDispatcher.prototype.remove = function (listener) {
for (var i = 0, currentListener; currentListener = this.listeners[i]; i++) {
if (currentListener === listener) {
this.listeners.splice(i, 1);
break;
}
}
};
EventDispatcher.prototype.raise = function (funcName) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
for (var i = 0, listener; listener = this.listeners[i]; i++) {
listener[funcName].apply(listener, args);
}
};
EventDispatcher.prototype.hasEventListener = function (listener) {
for (var i = 0, l = this.listeners.length; i < l; i++)
if (this.listeners[i] === listener)
return true;
return false;
};
return EventDispatcher;
}());
exports.EventDispatcher = EventDispatcher;
/***/ }),
/* 76 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var TaskCommands_1 = __webpack_require__(77);
var TaskPropertiesCommands_1 = __webpack_require__(79);
var DependencyCommands_1 = __webpack_require__(80);
var ResourceCommands_1 = __webpack_require__(81);
var TaskEditDialog_1 = __webpack_require__(82);
var ConstraintViolationDialog_1 = __webpack_require__(83);
var ResourcesDialog_1 = __webpack_require__(84);
var ClientCommand_1 = __webpack_require__(85);
var CommandManager = (function () {
function CommandManager(control) {
this.control = control;
this.commands = {};
this.createCommand(ClientCommand_1.GanttClientCommand.CreateTask, this.createTaskCommand);
this.createCommand(ClientCommand_1.GanttClientCommand.CreateSubTask, this.createSubTaskCommand);
this.createCommand(ClientCommand_1.GanttClientCommand.RemoveTask, this.removeTaskCommand);
this.createCommand(ClientCommand_1.GanttClientCommand.RemoveDependency, this.removeDependencyCommand);
this.createCommand(ClientCommand_1.GanttClientCommand.TaskInformation, this.showTaskEditDialog);
this.createCommand(ClientCommand_1.GanttClientCommand.TaskAddContextItem, new TaskCommands_1.TaskAddContextItemCommand(this.control));
}
Object.defineProperty(CommandManager.prototype, "createTaskCommand", {
get: function () { return new TaskCommands_1.CreateTaskCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "createSubTaskCommand", {
get: function () { return new TaskCommands_1.CreateSubTaskCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "removeTaskCommand", {
get: function () { return new TaskCommands_1.RemoveTaskCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "changeTaskTitleCommand", {
get: function () { return new TaskPropertiesCommands_1.TaskTitleCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "changeTaskDescriptionCommand", {
get: function () { return new TaskPropertiesCommands_1.TaskDescriptionCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "changeTaskProgressCommand", {
get: function () { return new TaskPropertiesCommands_1.TaskProgressCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "changeTaskStartCommand", {
get: function () { return new TaskPropertiesCommands_1.TaskStartCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "changeTaskEndCommand", {
get: function () { return new TaskPropertiesCommands_1.TaskEndCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "createDependencyCommand", {
get: function () { return new DependencyCommands_1.CreateDependencyCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "removeDependencyCommand", {
get: function () { return new DependencyCommands_1.RemoveDependencyCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "createResourceCommand", {
get: function () { return new ResourceCommands_1.CreateResourceCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "removeResourceCommand", {
get: function () { return new ResourceCommands_1.RemoveResourceCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "assignResourceCommand", {
get: function () { return new ResourceCommands_1.AssignResourceCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "deassignResourceCommand", {
get: function () { return new ResourceCommands_1.DeassignResourceCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "showTaskEditDialog", {
get: function () { return new TaskEditDialog_1.TaskEditDialogCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "showConstraintViolationDialog", {
get: function () { return new ConstraintViolationDialog_1.ConstraintViolationDialogCommand(this.control); },
enumerable: true,
configurable: true
});
Object.defineProperty(CommandManager.prototype, "showResourcesDialog", {
get: function () { return new ResourcesDialog_1.ResourcesDialogCommand(this.control); },
enumerable: true,
configurable: true
});
CommandManager.prototype.getCommand = function (key) {
return this.commands[key];
};
CommandManager.prototype.createCommand = function (commandId, command) {
this.commands[commandId] = command;
};
return CommandManager;
}());
exports.CommandManager = CommandManager;
/***/ }),
/* 77 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var CommandBase_1 = __webpack_require__(5);
var TaskHistoryItem_1 = __webpack_require__(78);
var TaskDependencyHistoryItem_1 = __webpack_require__(20);
var ResourceHistoryItem_1 = __webpack_require__(21);
var TaskCommandBase = (function (_super) {
__extends(TaskCommandBase, _super);
function TaskCommandBase() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskCommandBase.prototype.getState = function () {
var state = new CommandBase_1.SimpleCommandState(this.isEnabled());
state.visible = state.enabled && !this.control.taskEditController.dependencyId;
return state;
};
return TaskCommandBase;
}(CommandBase_1.CommandBase));
exports.TaskCommandBase = TaskCommandBase;
var CreateTaskCommand = (function (_super) {
__extends(CreateTaskCommand, _super);
function CreateTaskCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
CreateTaskCommand.prototype.execute = function (start, end, title, parentId) {
return _super.prototype.execute.call(this, start, end, title, parentId);
};
CreateTaskCommand.prototype.executeInternal = function (start, end, title, parentId) {
if (!parentId) {
var selectedTask = this.control.viewModel.findItem(this.control.currentSelectedTaskID).task;
if (selectedTask)
parentId = selectedTask.parentId;
}
var referenceItem = this.control.viewModel.findItem(parentId) || this.control.viewModel.items[0];
var referenceTask = referenceItem.task;
start = start || new Date(referenceTask.start.getTime());
end = end || new Date(referenceTask.end.getTime());
title = title || "New task";
this.history.addAndRedo(new TaskHistoryItem_1.CreateTaskHistoryItem(this.modelManipulator, start, end, title, parentId));
return true;
};
CreateTaskCommand.prototype.isEnabled = function () {
return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowTaskAdding;
};
return CreateTaskCommand;
}(TaskCommandBase));
exports.CreateTaskCommand = CreateTaskCommand;
var CreateSubTaskCommand = (function (_super) {
__extends(CreateSubTaskCommand, _super);
function CreateSubTaskCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
CreateSubTaskCommand.prototype.execute = function (parentId) {
return _super.prototype.execute.call(this, parentId);
};
CreateSubTaskCommand.prototype.executeInternal = function (parentId) {
parentId = parentId || this.control.currentSelectedTaskID;
var selectedItem = this.control.viewModel.findItem(parentId);
if (selectedItem.selected) {
this.history.addAndRedo(new TaskHistoryItem_1.CreateTaskHistoryItem(this.modelManipulator, new Date(selectedItem.task.start.getTime()), new Date(selectedItem.task.end.getTime()), "New task", parentId));
return true;
}
return false;
};
CreateSubTaskCommand.prototype.isEnabled = function () {
return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowTaskAdding;
};
CreateSubTaskCommand.prototype.getState = function () {
var state = _super.prototype.getState.call(this);
var selectedItem = this.control.viewModel.findItem(this.control.currentSelectedTaskID);
state.visible = state.visible && selectedItem && selectedItem.selected;
return state;
};
return CreateSubTaskCommand;
}(TaskCommandBase));
exports.CreateSubTaskCommand = CreateSubTaskCommand;
var RemoveTaskCommand = (function (_super) {
__extends(RemoveTaskCommand, _super);
function RemoveTaskCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
RemoveTaskCommand.prototype.execute = function (id) {
return _super.prototype.execute.call(this, id);
};
RemoveTaskCommand.prototype.executeInternal = function (id) {
var _this = this;
id = id || this.control.currentSelectedTaskID;
this.control.viewModel.beginUpdate();
this.history.beginTransaction();
var childTasks = this.control.viewModel.tasks.items.filter(function (t) { return t.parentId == id; });
childTasks.forEach(function (t) { return new RemoveTaskCommand(_this.control).execute(t.internalId); });
var dependencies = this.control.viewModel.dependencies.items.filter(function (d) { return d.predecessorId == id || d.successorId == id; });
if (dependencies.length)
if (this.control.settings.editing.allowDependencyDeleting)
dependencies.forEach(function (d) { return _this.history.addAndRedo(new TaskDependencyHistoryItem_1.RemoveDependencyHistoryItem(_this.modelManipulator, d.internalId)); });
else
return false;
var assignments = this.control.viewModel.assignments.items.filter(function (a) { return a.taskId == id; });
assignments.forEach(function (a) { return _this.history.addAndRedo(new ResourceHistoryItem_1.DeassignResourceHistoryItem(_this.modelManipulator, a.internalId)); });
this.history.addAndRedo(new TaskHistoryItem_1.RemoveTaskHistoryItem(this.modelManipulator, id));
this.history.endTransaction();
this.control.viewModel.endUpdate();
return true;
};
RemoveTaskCommand.prototype.isEnabled = function () {
return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowTaskDeleting;
};
return RemoveTaskCommand;
}(TaskCommandBase));
exports.RemoveTaskCommand = RemoveTaskCommand;
var TaskAddContextItemCommand = (function (_super) {
__extends(TaskAddContextItemCommand, _super);
function TaskAddContextItemCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskAddContextItemCommand.prototype.getState = function () {
var state = _super.prototype.getState.call(this);
state.visible = state.visible && this.control.settings.editing.allowTaskAdding;
return state;
};
TaskAddContextItemCommand.prototype.execute = function () {
return false;
};
return TaskAddContextItemCommand;
}(TaskCommandBase));
exports.TaskAddContextItemCommand = TaskAddContextItemCommand;
/***/ }),
/* 78 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var HistoryItem_1 = __webpack_require__(9);
var CreateTaskHistoryItem = (function (_super) {
__extends(CreateTaskHistoryItem, _super);
function CreateTaskHistoryItem(modelManipulator, start, end, title, parentId) {
var _this = _super.call(this, modelManipulator) || this;
_this.start = start;
_this.end = end;
_this.title = title;
_this.parentId = parentId;
return _this;
}
CreateTaskHistoryItem.prototype.redo = function () {
this.taskId = this.modelManipulator.task.create(this.start, this.end, this.title, this.parentId, this.taskId ? this.taskId : null).internalId;
};
CreateTaskHistoryItem.prototype.undo = function () {
this.modelManipulator.task.remove(this.taskId);
};
return CreateTaskHistoryItem;
}(HistoryItem_1.HistoryItem));
exports.CreateTaskHistoryItem = CreateTaskHistoryItem;
var RemoveTaskHistoryItem = (function (_super) {
__extends(RemoveTaskHistoryItem, _super);
function RemoveTaskHistoryItem(modelManipulator, taskId) {
var _this = _super.call(this, modelManipulator) || this;
_this.taskId = taskId;
return _this;
}
RemoveTaskHistoryItem.prototype.redo = function () {
this.task = this.modelManipulator.task.remove(this.taskId);
};
RemoveTaskHistoryItem.prototype.undo = function () {
this.modelManipulator.task.create(this.task.start, this.task.end, this.task.title, this.task.parentId, this.task.internalId);
};
return RemoveTaskHistoryItem;
}(HistoryItem_1.HistoryItem));
exports.RemoveTaskHistoryItem = RemoveTaskHistoryItem;
/***/ }),
/* 79 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var CommandBase_1 = __webpack_require__(5);
var TaskPropertiesHistoryItem_1 = __webpack_require__(31);
var TaskPropertyCommandBase = (function (_super) {
__extends(TaskPropertyCommandBase, _super);
function TaskPropertyCommandBase() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskPropertyCommandBase.prototype.getState = function () {
return new CommandBase_1.SimpleCommandState(this.isEnabled());
};
TaskPropertyCommandBase.prototype.isEnabled = function () {
return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowTaskUpdating;
};
return TaskPropertyCommandBase;
}(CommandBase_1.CommandBase));
exports.TaskPropertyCommandBase = TaskPropertyCommandBase;
var TaskTitleCommand = (function (_super) {
__extends(TaskTitleCommand, _super);
function TaskTitleCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskTitleCommand.prototype.execute = function (id, value) {
return _super.prototype.execute.call(this, id, value);
};
TaskTitleCommand.prototype.executeInternal = function (id, value) {
var oldTitle = this.control.viewModel.tasks.getItemById(id).title;
if (oldTitle == value)
return false;
this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskTitleHistoryItem(this.modelManipulator, id, value));
return true;
};
return TaskTitleCommand;
}(TaskPropertyCommandBase));
exports.TaskTitleCommand = TaskTitleCommand;
var TaskDescriptionCommand = (function (_super) {
__extends(TaskDescriptionCommand, _super);
function TaskDescriptionCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskDescriptionCommand.prototype.execute = function (id, value) {
return _super.prototype.execute.call(this, id, value);
};
TaskDescriptionCommand.prototype.executeInternal = function (id, value) {
var oldDescription = this.control.viewModel.tasks.getItemById(id).description;
if (oldDescription == value)
return false;
this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskDesriptionHistoryItem(this.modelManipulator, id, value));
return true;
};
return TaskDescriptionCommand;
}(TaskPropertyCommandBase));
exports.TaskDescriptionCommand = TaskDescriptionCommand;
var TaskProgressCommand = (function (_super) {
__extends(TaskProgressCommand, _super);
function TaskProgressCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskProgressCommand.prototype.execute = function (id, value) {
return _super.prototype.execute.call(this, id, value);
};
TaskProgressCommand.prototype.executeInternal = function (id, value) {
var oldProgress = this.control.viewModel.tasks.getItemById(id).progress;
if (oldProgress == value)
return false;
this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskProgressHistoryItem(this.modelManipulator, id, value));
return true;
};
return TaskProgressCommand;
}(TaskPropertyCommandBase));
exports.TaskProgressCommand = TaskProgressCommand;
var TaskStartCommand = (function (_super) {
__extends(TaskStartCommand, _super);
function TaskStartCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskStartCommand.prototype.execute = function (id, value) {
return _super.prototype.execute.call(this, id, value);
};
TaskStartCommand.prototype.executeInternal = function (id, value) {
var oldStart = this.control.viewModel.tasks.getItemById(id).start;
if (oldStart.getTime() == value.getTime())
return false;
this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskStartHistoryItem(this.modelManipulator, id, value));
if (value < this.control.dataRange.start)
this.control.dataRange.start = value;
return true;
};
return TaskStartCommand;
}(TaskPropertyCommandBase));
exports.TaskStartCommand = TaskStartCommand;
var TaskEndCommand = (function (_super) {
__extends(TaskEndCommand, _super);
function TaskEndCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskEndCommand.prototype.execute = function (id, value) {
return _super.prototype.execute.call(this, id, value);
};
TaskEndCommand.prototype.executeInternal = function (id, value) {
var oldEnd = this.control.viewModel.tasks.getItemById(id).end;
if (oldEnd.getTime() == value.getTime())
return false;
this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskEndHistoryItem(this.modelManipulator, id, value));
if (value > this.control.dataRange.end)
this.control.dataRange.end = value;
return true;
};
return TaskEndCommand;
}(TaskPropertyCommandBase));
exports.TaskEndCommand = TaskEndCommand;
/***/ }),
/* 80 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var CommandBase_1 = __webpack_require__(5);
var TaskDependencyHistoryItem_1 = __webpack_require__(20);
var DependencyCommandBase = (function (_super) {
__extends(DependencyCommandBase, _super);
function DependencyCommandBase() {
return _super !== null && _super.apply(this, arguments) || this;
}
DependencyCommandBase.prototype.getState = function () {
return new CommandBase_1.SimpleCommandState(this.isEnabled());
};
return DependencyCommandBase;
}(CommandBase_1.CommandBase));
exports.DependencyCommandBase = DependencyCommandBase;
var CreateDependencyCommand = (function (_super) {
__extends(CreateDependencyCommand, _super);
function CreateDependencyCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
CreateDependencyCommand.prototype.execute = function (predecessorId, successorId, type) {
return _super.prototype.execute.call(this, predecessorId, successorId, type);
};
CreateDependencyCommand.prototype.executeInternal = function (predecessorId, successorId, type) {
if (this.control.viewModel.dependencies.items.filter(function (d) { return (d.predecessorId == predecessorId && d.successorId == successorId) ||
(d.successorId == predecessorId && d.predecessorId == successorId); }).length)
return false;
this.history.addAndRedo(new TaskDependencyHistoryItem_1.InsertDependencyHistoryItem(this.modelManipulator, predecessorId, successorId, type));
return true;
};
CreateDependencyCommand.prototype.isEnabled = function () {
return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowDependencyAdding;
};
return CreateDependencyCommand;
}(DependencyCommandBase));
exports.CreateDependencyCommand = CreateDependencyCommand;
var RemoveDependencyCommand = (function (_super) {
__extends(RemoveDependencyCommand, _super);
function RemoveDependencyCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
RemoveDependencyCommand.prototype.execute = function (id) {
return _super.prototype.execute.call(this, id);
};
RemoveDependencyCommand.prototype.executeInternal = function (id) {
id = id || this.control.taskEditController.dependencyId;
if (id != null) {
var dependency = this.control.viewModel.dependencies.items.filter(function (d) { return d.internalId == id; })[0];
if (dependency) {
this.history.addAndRedo(new TaskDependencyHistoryItem_1.RemoveDependencyHistoryItem(this.modelManipulator, id));
return true;
}
}
return false;
};
RemoveDependencyCommand.prototype.isEnabled = function () {
return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowDependencyDeleting;
};
RemoveDependencyCommand.prototype.getState = function () {
var state = _super.prototype.getState.call(this);
state.visible = state.enabled && this.control.taskEditController.dependencyId != null;
return state;
};
return RemoveDependencyCommand;
}(DependencyCommandBase));
exports.RemoveDependencyCommand = RemoveDependencyCommand;
/***/ }),
/* 81 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var CommandBase_1 = __webpack_require__(5);
var ResourceHistoryItem_1 = __webpack_require__(21);
var ResourceCommandBase = (function (_super) {
__extends(ResourceCommandBase, _super);
function ResourceCommandBase() {
return _super !== null && _super.apply(this, arguments) || this;
}
ResourceCommandBase.prototype.getState = function () {
return new CommandBase_1.SimpleCommandState(this.isEnabled());
};
return ResourceCommandBase;
}(CommandBase_1.CommandBase));
exports.ResourceCommandBase = ResourceCommandBase;
var CreateResourceCommand = (function (_super) {
__extends(CreateResourceCommand, _super);
function CreateResourceCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
CreateResourceCommand.prototype.execute = function (text) {
return _super.prototype.execute.call(this, text);
};
CreateResourceCommand.prototype.executeInternal = function (text) {
this.history.addAndRedo(new ResourceHistoryItem_1.CreateResourceHistoryItem(this.modelManipulator, text));
return true;
};
return CreateResourceCommand;
}(ResourceCommandBase));
exports.CreateResourceCommand = CreateResourceCommand;
var RemoveResourceCommand = (function (_super) {
__extends(RemoveResourceCommand, _super);
function RemoveResourceCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
RemoveResourceCommand.prototype.execute = function (id) {
return _super.prototype.execute.call(this, id);
};
RemoveResourceCommand.prototype.executeInternal = function (id) {
var _this = this;
var resource = this.control.viewModel.resources.items.filter(function (r) { return r.internalId == id; })[0];
if (resource) {
this.history.beginTransaction();
var assignments = this.control.viewModel.assignments.items.filter(function (a) { return a.resourceId == id; });
assignments.forEach(function (a) { return _this.history.addAndRedo(new ResourceHistoryItem_1.DeassignResourceHistoryItem(_this.modelManipulator, a.internalId)); });
this.history.addAndRedo(new ResourceHistoryItem_1.RemoveResourceHistoryItem(this.modelManipulator, id));
this.history.endTransaction();
return true;
}
return false;
};
return RemoveResourceCommand;
}(ResourceCommandBase));
exports.RemoveResourceCommand = RemoveResourceCommand;
var AssignResourceCommand = (function (_super) {
__extends(AssignResourceCommand, _super);
function AssignResourceCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
AssignResourceCommand.prototype.execute = function (resourceId, taskId) {
return _super.prototype.execute.call(this, resourceId, taskId);
};
AssignResourceCommand.prototype.executeInternal = function (resourceId, taskId) {
var assignment = this.control.viewModel.assignments.items.filter(function (r) { return r.resourceId == resourceId && r.taskId == taskId; })[0];
if (!assignment) {
this.history.addAndRedo(new ResourceHistoryItem_1.AssignResourceHistoryItem(this.modelManipulator, resourceId, taskId));
return true;
}
return false;
};
return AssignResourceCommand;
}(ResourceCommandBase));
exports.AssignResourceCommand = AssignResourceCommand;
var DeassignResourceCommand = (function (_super) {
__extends(DeassignResourceCommand, _super);
function DeassignResourceCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
DeassignResourceCommand.prototype.execute = function (assignmentId) {
return _super.prototype.execute.call(this, assignmentId);
};
DeassignResourceCommand.prototype.executeInternal = function (assignmentId) {
var assignment = this.control.viewModel.assignments.items.filter(function (r) { return r.internalId == assignmentId; })[0];
if (assignment) {
this.history.addAndRedo(new ResourceHistoryItem_1.DeassignResourceHistoryItem(this.modelManipulator, assignmentId));
return true;
}
return false;
};
return DeassignResourceCommand;
}(ResourceCommandBase));
exports.DeassignResourceCommand = DeassignResourceCommand;
/***/ }),
/* 82 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var DialogBase_1 = __webpack_require__(22);
var TaskPropertiesHistoryItem_1 = __webpack_require__(31);
var ResourceCollection_1 = __webpack_require__(13);
var ResourceHistoryItem_1 = __webpack_require__(21);
var CommandBase_1 = __webpack_require__(5);
var TaskEditDialogCommand = (function (_super) {
__extends(TaskEditDialogCommand, _super);
function TaskEditDialogCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskEditDialogCommand.prototype.applyParameters = function (newParameters, oldParameters) {
this.history.beginTransaction();
if (newParameters.title != oldParameters.title)
this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskTitleHistoryItem(this.modelManipulator, oldParameters.id, newParameters.title));
if (newParameters.progress != oldParameters.progress)
this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskProgressHistoryItem(this.modelManipulator, oldParameters.id, newParameters.progress));
if (newParameters.start != oldParameters.start)
this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskStartHistoryItem(this.modelManipulator, oldParameters.id, newParameters.start));
if (newParameters.end != oldParameters.end)
this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskEndHistoryItem(this.modelManipulator, oldParameters.id, newParameters.end));
for (var i = 0; i < newParameters.assigned.length; i++) {
var resource = oldParameters.assigned.getItemById(newParameters.assigned.getItem(i).internalId);
if (!resource)
this.history.addAndRedo(new ResourceHistoryItem_1.AssignResourceHistoryItem(this.modelManipulator, newParameters.assigned.getItem(i).internalId, oldParameters.id));
}
var _loop_1 = function (i) {
var assigned = oldParameters.assigned.getItem(i);
var resource = newParameters.assigned.getItemById(assigned.internalId);
if (!resource) {
var assignment = this_1.control.viewModel.assignments.items.filter(function (assignment) { return assignment.resourceId == assigned.internalId && assignment.taskId == oldParameters.id; })[0];
this_1.history.addAndRedo(new ResourceHistoryItem_1.DeassignResourceHistoryItem(this_1.modelManipulator, assignment.internalId));
}
};
var this_1 = this;
for (var i = 0; i < oldParameters.assigned.length; i++) {
_loop_1(i);
}
this.history.endTransaction();
return false;
};
TaskEditDialogCommand.prototype.createParameters = function (options) {
options = options || this.control.viewModel.tasks.getItemById(this.control.currentSelectedTaskID);
var param = new TaskEditParameters();
param.id = options.internalId;
param.title = options.title;
param.progress = options.progress;
param.start = options.start;
param.end = options.end;
param.assigned = this.control.viewModel.getAssignedResources(options);
param.resources = new ResourceCollection_1.ResourceCollection();
param.resources.addRange(this.control.viewModel.resources.items);
param.showResourcesDialogCommand = this.control.commandManager.showResourcesDialog;
return param;
};
TaskEditDialogCommand.prototype.isEnabled = function () {
return true;
};
TaskEditDialogCommand.prototype.getState = function () {
var state = new CommandBase_1.SimpleCommandState(this.isEnabled());
state.visible = !this.control.taskEditController.dependencyId;
return state;
};
TaskEditDialogCommand.prototype.getDialogName = function () {
return "TaskEdit";
};
return TaskEditDialogCommand;
}(DialogBase_1.DialogBase));
exports.TaskEditDialogCommand = TaskEditDialogCommand;
var TaskEditParameters = (function (_super) {
__extends(TaskEditParameters, _super);
function TaskEditParameters() {
return _super !== null && _super.apply(this, arguments) || this;
}
TaskEditParameters.prototype.clone = function () {
var clone = new TaskEditParameters();
clone.id = this.id;
clone.title = this.title;
clone.progress = this.progress;
clone.start = this.start;
clone.end = this.end;
clone.assigned = new ResourceCollection_1.ResourceCollection();
clone.assigned.addRange(this.assigned.items);
clone.resources = new ResourceCollection_1.ResourceCollection();
clone.resources.addRange(this.resources.items);
clone.showResourcesDialogCommand = this.showResourcesDialogCommand;
return clone;
};
return TaskEditParameters;
}(DialogBase_1.DialogParametersBase));
exports.TaskEditParameters = TaskEditParameters;
/***/ }),
/* 83 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var DialogBase_1 = __webpack_require__(22);
var TaskDependencyHistoryItem_1 = __webpack_require__(20);
var ConstraintViolationOption;
(function (ConstraintViolationOption) {
ConstraintViolationOption[ConstraintViolationOption["DoNothing"] = 0] = "DoNothing";
ConstraintViolationOption[ConstraintViolationOption["RemoveDependency"] = 1] = "RemoveDependency";
ConstraintViolationOption[ConstraintViolationOption["KeepDependency"] = 2] = "KeepDependency";
})(ConstraintViolationOption = exports.ConstraintViolationOption || (exports.ConstraintViolationOption = {}));
var ConstraintViolationDialogCommand = (function (_super) {
__extends(ConstraintViolationDialogCommand, _super);
function ConstraintViolationDialogCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
ConstraintViolationDialogCommand.prototype.applyParameters = function (newParameters, oldParameters) {
if (newParameters.option === ConstraintViolationOption.DoNothing)
return false;
if (newParameters.option === ConstraintViolationOption.RemoveDependency)
this.history.addAndRedo(new TaskDependencyHistoryItem_1.RemoveDependencyHistoryItem(this.modelManipulator, oldParameters.dependencyId));
return true;
};
ConstraintViolationDialogCommand.prototype.createParameters = function (options) {
var result = new ConstraintViolationDialogParameters();
result.dependencyId = options;
return result;
};
ConstraintViolationDialogCommand.prototype.getDialogName = function () {
return "ConstraintViolation";
};
return ConstraintViolationDialogCommand;
}(DialogBase_1.DialogBase));
exports.ConstraintViolationDialogCommand = ConstraintViolationDialogCommand;
var ConstraintViolationDialogParameters = (function (_super) {
__extends(ConstraintViolationDialogParameters, _super);
function ConstraintViolationDialogParameters() {
return _super !== null && _super.apply(this, arguments) || this;
}
ConstraintViolationDialogParameters.prototype.clone = function () {
var result = new ConstraintViolationDialogParameters();
result.dependencyId = this.dependencyId;
result.option = this.option;
return result;
};
return ConstraintViolationDialogParameters;
}(DialogBase_1.DialogParametersBase));
exports.ConstraintViolationDialogParameters = ConstraintViolationDialogParameters;
/***/ }),
/* 84 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var DialogBase_1 = __webpack_require__(22);
var ResourceCollection_1 = __webpack_require__(13);
var ResourcesDialogCommand = (function (_super) {
__extends(ResourcesDialogCommand, _super);
function ResourcesDialogCommand() {
return _super !== null && _super.apply(this, arguments) || this;
}
ResourcesDialogCommand.prototype.applyParameters = function (newParameters, oldParameters) {
this.history.beginTransaction();
for (var i = 0; i < newParameters.resources.length; i++) {
var resource = oldParameters.resources.getItemById(newParameters.resources.getItem(i).internalId);
if (!resource)
this.control.commandManager.createResourceCommand.execute(newParameters.resources.getItem(i).text);
}
for (var i = 0; i < oldParameters.resources.length; i++) {
var resource = newParameters.resources.getItemById(oldParameters.resources.getItem(i).internalId);
if (!resource)
this.control.commandManager.removeResourceCommand.execute(oldParameters.resources.getItem(i).internalId);
}
this.history.endTransaction();
return false;
};
ResourcesDialogCommand.prototype.createParameters = function () {
var param = new ResourcesDialogParameters();
param.resources = new ResourceCollection_1.ResourceCollection();
param.resources.addRange(this.control.viewModel.resources.items);
return param;
};
ResourcesDialogCommand.prototype.getDialogName = function () {
return "Resources";
};
return ResourcesDialogCommand;
}(DialogBase_1.DialogBase));
exports.ResourcesDialogCommand = ResourcesDialogCommand;
var ResourcesDialogParameters = (function (_super) {
__extends(ResourcesDialogParameters, _super);
function ResourcesDialogParameters() {
return _super !== null && _super.apply(this, arguments) || this;
}
ResourcesDialogParameters.prototype.clone = function () {
var clone = new ResourcesDialogParameters();
clone.resources = new ResourceCollection_1.ResourceCollection();
clone.resources.addRange(this.resources.items);
return clone;
};
return ResourcesDialogParameters;
}(DialogBase_1.DialogParametersBase));
exports.ResourcesDialogParameters = ResourcesDialogParameters;
/***/ }),
/* 85 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var GanttClientCommand;
(function (GanttClientCommand) {
GanttClientCommand[GanttClientCommand["CreateTask"] = 0] = "CreateTask";
GanttClientCommand[GanttClientCommand["CreateSubTask"] = 1] = "CreateSubTask";
GanttClientCommand[GanttClientCommand["RemoveTask"] = 2] = "RemoveTask";
GanttClientCommand[GanttClientCommand["RemoveDependency"] = 3] = "RemoveDependency";
GanttClientCommand[GanttClientCommand["TaskInformation"] = 4] = "TaskInformation";
GanttClientCommand[GanttClientCommand["TaskAddContextItem"] = 5] = "TaskAddContextItem";
})(GanttClientCommand = exports.GanttClientCommand || (exports.GanttClientCommand = {}));
/***/ }),
/* 86 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var BarManager = (function () {
function BarManager(control, bars) {
this.control = control;
this.bars = bars;
}
BarManager.prototype.updateContextMenu = function () {
for (var i = 0, bar; bar = this.bars[i]; i++) {
if (bar.isContextMenu()) {
bar.updateItemsList();
var commandKeys = bar.getCommandKeys();
for (var j = 0; j < commandKeys.length; j++) {
this.updateBarItem(bar, commandKeys[j]);
}
}
}
};
BarManager.prototype.updateItemsState = function (queryCommands) {
var anyQuerySended = !!queryCommands.length;
for (var i = 0, bar; bar = this.bars[i]; i++) {
if (bar.isVisible()) {
var commandKeys = bar.getCommandKeys();
var _loop_1 = function (j, commandKey) {
if (anyQuerySended && !queryCommands.filter(function (q) { return q == commandKey; }).length)
return "continue";
this_1.updateBarItem(bar, commandKey);
};
var this_1 = this;
for (var j = 0, commandKey = void 0; commandKey = commandKeys[j]; j++) {
_loop_1(j, commandKey);
}
}
}
};
BarManager.prototype.updateBarItem = function (bar, commandKey) {
var command = this.control.commandManager.getCommand(commandKey);
if (command) {
var commandState = command.getState();
bar.setItemVisible(commandKey, commandState.visible);
if (commandState.visible) {
bar.setItemEnabled(commandKey, commandState.enabled);
bar.setItemValue(commandKey, commandState.value);
}
}
};
return BarManager;
}());
exports.BarManager = BarManager;
/***/ })
/******/ ]);
});