@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
1,232 lines (1,008 loc) • 44.3 kB
JavaScript
module.exports =
/******/ (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] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = 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;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ({
/***/ 0:
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(1194);
/***/ }),
/***/ 3:
/***/ (function(module, exports) {
module.exports = function() { throw new Error("define cannot be used indirect"); };
/***/ }),
/***/ 1003:
/***/ (function(module, exports) {
module.exports = require("./kendo.dom");
/***/ }),
/***/ 1061:
/***/ (function(module, exports) {
module.exports = require("./kendo.draganddrop");
/***/ }),
/***/ 1194:
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1003), __webpack_require__(1195), __webpack_require__(1061), __webpack_require__(1196), __webpack_require__(1197), __webpack_require__(1198) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
})(function() {
var __meta__ = { // jshint ignore:line
id: "gantt.list",
name: "Gantt List",
category: "web",
description: "The Gantt List",
depends: [ "dom", "touch", "draganddrop", "columnsorter", "datetimepicker", "editable" ],
hidden: true
};
(function($) {
var kendo = window.kendo;
var kendoDom = kendo.dom;
var kendoDomElement = kendoDom.element;
var kendoTextElement = kendoDom.text;
var browser = kendo.support.browser;
var mobileOS = kendo.support.mobileOS;
var ui = kendo.ui;
var Widget = ui.Widget;
var extend = $.extend;
var outerWidth = kendo._outerWidth;
var outerHeight = kendo._outerHeight;
var map = $.map;
var isFunction = $.isFunction;
var oldIE = browser.msie && browser.version < 9;
var keys = kendo.keys;
var titleFromField = {
"title": "Title",
"start": "Start Time",
"end": "End Time",
"percentComplete": "% Done",
"parentId": "Predecessor ID",
"id": "ID",
"orderId": "Order ID"
};
var STRING = "string";
var NS = ".kendoGanttList";
var CLICK = "click";
var DOT = ".";
var SIZE_CALCULATION_TEMPLATE = "<table style='visibility: hidden;'>" +
"<tbody>" +
"<tr style='height:{0}'>" +
"<td> </td>" +
"</tr>" +
"</tbody>" +
"</table>";
var listStyles = {
wrapper: "k-treelist k-grid k-widget",
header: "k-header",
alt: "k-alt",
rtl: "k-rtl",
editCell: "k-edit-cell",
group: "k-treelist-group",
gridHeader: "k-grid-header",
gridHeaderWrap: "k-grid-header-wrap",
gridContent: "k-grid-content",
gridContentWrap: "k-grid-content",
selected: "k-state-selected",
icon: "k-icon",
iconCollapse: "k-i-collapse",
iconExpand: "k-i-expand",
iconHidden: "k-i-none",
iconPlaceHolder: "k-icon k-i-none",
input: "k-input",
link: "k-link",
resizeHandle: "k-resize-handle",
resizeHandleInner: "k-resize-handle-inner",
dropPositions: "k-i-insert-up k-i-insert-down k-i-plus k-i-insert-middle",
dropTop: "k-i-insert-up",
dropBottom: "k-i-insert-down",
dropAdd: "k-i-plus",
dropMiddle: "k-i-insert-middle",
dropDenied: "k-i-cancel",
dragStatus: "k-drag-status",
dragClue: "k-drag-clue",
dragClueText: "k-clue-text"
};
function createPlaceholders(options) {
var spans = [];
var className = options.className;
for (var i = 0, level = options.level; i < level; i++) {
spans.push(kendoDomElement("span", { className: className }));
}
return spans;
}
function blurActiveElement() {
var activeElement = kendo._activeElement();
if (activeElement && activeElement.nodeName.toLowerCase() !== "body") {
$(activeElement).blur();
}
}
var GanttList = ui.GanttList = Widget.extend({
init: function(element, options) {
Widget.fn.init.call(this, element, options);
if (this.options.columns.length === 0) {
this.options.columns.push("title");
}
this.dataSource = this.options.dataSource;
this._columns();
this._layout();
this._domTrees();
this._header();
this._sortable();
this._editable();
this._selectable();
this._draggable();
this._resizable();
this._attachEvents();
this._adjustHeight();
this.bind("render", function() {
var headerCols;
var tableCols;
if (this.options.resizable) {
headerCols = this.header.find("col");
tableCols = this.content.find("col");
this.header.find("th").not(':last').each(function(index) {
var width = outerWidth($(this));
headerCols.eq(index).width(width);
tableCols.eq(index).width(width);
});
headerCols.last().css("width", "auto");
tableCols.last().css("width", "auto");
}
}, true);
},
_adjustHeight: function() {
if(this.content){
this.content.height(this.element.height() - outerHeight(this.header.parent()));
}
},
destroy: function() {
Widget.fn.destroy.call(this);
if (this._reorderDraggable) {
this._reorderDraggable.destroy();
}
if (this._tableDropArea) {
this._tableDropArea.destroy();
}
if (this._contentDropArea) {
this._contentDropArea.destroy();
}
if (this._columnResizable) {
this._columnResizable.destroy();
}
if (this.touch) {
this.touch.destroy();
}
if (this.timer) {
clearTimeout(this.timer);
}
this.content.off(NS);
this.header.find("thead").off(NS);
this.header.find(DOT + GanttList.link).off(NS);
this.header = null;
this.content = null;
this.levels = null;
kendo.destroy(this.element);
},
options: {
name: "GanttList",
selectable: true,
editable: true,
resizable: false
},
_attachEvents: function() {
var that = this;
var listStyles = GanttList.styles;
that.content
.on(CLICK + NS, "td > span." + listStyles.icon + ":not(." + listStyles.iconHidden + ")", function(e) {
var element = $(this);
var model = that._modelFromElement(element);
model.set("expanded", !model.get("expanded"));
e.stopPropagation();
});
},
_domTrees: function() {
this.headerTree = new kendoDom.Tree(this.header[0]);
this.contentTree = new kendoDom.Tree(this.content[0]);
},
_columns: function() {
var columns = this.options.columns;
var model = function() {
this.field = "";
this.title = "";
this.editable = false;
this.sortable = false;
};
this.columns = map(columns, function(column) {
column = typeof column === STRING ? {
field: column, title: titleFromField[column]
} : column;
return extend(new model(), column);
});
},
_layout: function () {
var that = this;
var options = this.options;
var element = this.element;
var listStyles = GanttList.styles;
var calculateRowHeight = function() {
var rowHeight = typeof options.rowHeight === STRING ? options.rowHeight :
options.rowHeight + "px";
var table = $(kendo.format(SIZE_CALCULATION_TEMPLATE, rowHeight));
var height;
that.content.append(table);
height = outerHeight(table.find("tr"));
table.remove();
return height;
};
element
.addClass(listStyles.wrapper)
.append("<div class='" + listStyles.gridHeader + "'><div class='" + listStyles.gridHeaderWrap + "'></div></div>")
.append("<div class='" + listStyles.gridContentWrap + "'></div>");
this.header = element.find(DOT + listStyles.gridHeaderWrap);
this.content = element.find(DOT + listStyles.gridContent);
if (options.rowHeight) {
this._rowHeight = calculateRowHeight();
}
},
_header: function() {
var domTree = this.headerTree;
var colgroup;
var thead;
var table;
colgroup = kendoDomElement("colgroup", null, this._cols());
thead = kendoDomElement("thead", { "role": "rowgroup" }, [kendoDomElement("tr", { "role": "row" }, this._ths())]);
table = kendoDomElement("table", {
"style": { "minWidth": this.options.listWidth + "px" },
"role": "grid"
}, [colgroup, thead]);
domTree.render([table]);
},
_render: function(tasks) {
var colgroup;
var tbody;
var table;
var tableAttr = {
"style": { "minWidth": this.options.listWidth + "px" },
"tabIndex": 0,
"role": "treegrid"
};
if (this._rowHeight) {
tableAttr.style.height = (tasks.length * this._rowHeight) + "px";
}
this.levels = [{ field: null, value: 0 }];
colgroup = kendoDomElement("colgroup", null, this._cols());
tbody = kendoDomElement("tbody", { "role": "rowgroup" }, this._trs(tasks));
table = kendoDomElement("table", tableAttr, [colgroup, tbody]);
this.contentTree.render([table]);
this.trigger("render");
},
_ths: function() {
var columns = this.columns;
var column;
var attr;
var ths = [];
for (var i = 0, length = columns.length; i < length; i++) {
column = columns[i];
attr = {
"data-field": column.field,
"data-title": column.title,
className: GanttList.styles.header,
"role": "columnheader"
};
ths.push(kendoDomElement("th", attr, [kendoTextElement(column.title)]));
}
if (this.options.resizable) {
ths.push(kendoDomElement("th", {
className: GanttList.styles.header,
"role": "columnheader"
}));
}
return ths;
},
_cols: function() {
var columns = this.columns;
var column;
var style;
var width;
var cols = [];
for (var i = 0, length = columns.length; i < length; i++) {
column = columns[i];
width = column.width;
if (width && parseInt(width, 10) !== 0) {
style = { style: { width: typeof width === STRING ? width : width + "px" } };
} else {
style = null;
}
cols.push(kendoDomElement("col", style, []));
}
if (this.options.resizable) {
cols.push(kendoDomElement("col", { style: { width: "1px" }}));
}
return cols;
},
_trs: function(tasks) {
var task;
var rows = [];
var attr;
var className = [];
var level;
var listStyles = GanttList.styles;
for (var i = 0, length = tasks.length; i < length; i++) {
task = tasks[i];
level = this._levels({
idx: task.parentId,
id: task.id,
summary: task.summary
});
attr = {
"data-uid": task.uid,
"data-level": level,
"role": "row"
};
if (task.summary) {
attr["aria-expanded"] = task.expanded;
}
if (i % 2 !== 0) {
className.push(listStyles.alt);
}
if (task.summary) {
className.push(listStyles.group);
}
if (className.length) {
attr.className = className.join(" ");
}
rows.push(this._tds({
task: task,
attr: attr,
level: level
}));
className = [];
}
return rows;
},
_tds: function(options) {
var children = [];
var columns = this.columns;
var column;
for (var i = 0, l = columns.length; i < l; i++) {
column = columns[i];
children.push(this._td({ task: options.task, column: column, level: options.level }));
}
if (this.options.resizable) {
children.push(kendoDomElement("td", { "role": "gridcell" }));
}
return kendoDomElement("tr", options.attr, children);
},
_td: function(options) {
var children = [];
var resourcesField = this.options.resourcesField;
var listStyles = GanttList.styles;
var task = options.task;
var column = options.column;
var value = task.get(column.field);
var formatedValue;
var label;
if (column.field == resourcesField) {
value = value || [];
formatedValue = [];
for (var i = 0; i < value.length; i++) {
formatedValue.push(kendo.format("{0} [{1}]", value[i].get("name"), value[i].get("formatedValue")));
}
formatedValue = formatedValue.join(", ");
} else {
formatedValue = column.format ? kendo.format(column.format, value) : value;
}
if (column.field === "title") {
children = createPlaceholders({ level: options.level, className: listStyles.iconPlaceHolder });
children.push(kendoDomElement("span", {
className: listStyles.icon + " " + (task.summary ? (task.expanded ? listStyles.iconCollapse : listStyles.iconExpand)
: listStyles.iconHidden)
}));
label = kendo.format("{0}, {1:P0}", formatedValue, task.percentComplete);
}
children.push(kendoDomElement("span", { "aria-label": label }, [kendoTextElement(formatedValue)]));
return kendoDomElement("td", { "role": "gridcell" }, children);
},
_levels: function(options) {
var levels = this.levels;
var level;
var summary = options.summary;
var idx = options.idx;
var id = options.id;
for (var i = 0, length = levels.length; i < length; i++) {
level = levels[i];
if (level.field == idx) {
if (summary) {
levels.push({ field: id, value: level.value + 1 });
}
return level.value;
}
}
},
_sortable: function() {
var that = this;
var resourcesField = this.options.resourcesField;
var columns = this.columns;
var column;
var sortableInstance;
var cells = this.header.find("th[" + kendo.attr("field") + "]");
var cell;
var changeHandler = function(e) {
if (that.dataSource.total() === 0 || that.editable && that.editable.trigger('validate')) {
e.preventDefault();
}
};
for (var idx = 0, length = cells.length; idx < length; idx++) {
column = columns[idx];
if (column.sortable && column.field !== resourcesField) {
cell = cells.eq(idx);
sortableInstance = cell.data("kendoColumnSorter");
if (sortableInstance) {
sortableInstance.destroy();
}
cell.attr("data-" + kendo.ns + "field", column.field)
.kendoColumnSorter({
dataSource: this.dataSource,
change: changeHandler
});
}
}
cells = null;
},
_selectable: function() {
var that = this;
var selectable = this.options.selectable;
if (selectable) {
this.content
.on(CLICK + NS, "tr", function(e) {
var element = $(this);
if (that.editable) {
that.editable.trigger("validate");
}
if (!e.ctrlKey) {
that.select(element);
} else {
that.clearSelection();
}
});
}
},
select: function(value) {
var element = this.content.find(value);
var selectedClassName = GanttList.styles.selected;
if (element.length) {
element
.siblings(DOT + selectedClassName)
.removeClass(selectedClassName)
.attr("aria-selected", false)
.end()
.addClass(selectedClassName)
.attr("aria-selected", true);
this.trigger("change");
return;
}
return this.content.find(DOT + selectedClassName);
},
clearSelection: function() {
var selected = this.select();
if (selected.length) {
selected.removeClass(GanttList.styles.selected);
this.trigger("change");
}
},
_setDataSource: function(dataSource) {
this.dataSource = dataSource;
// Re-initialize sortable columns
this._sortable();
},
_editable: function() {
var that = this;
var editable = this.options.editable;
var listStyles = GanttList.styles;
var iconSelector = "span." + listStyles.icon + ":not(" + listStyles.iconHidden +")";
var finishEdit = function() {
var editable = that.editable;
if (editable) {
if (editable.end()) {
that._closeCell();
} else {
editable.trigger("validate");
}
}
};
var mousedown = function(e) {
var currentTarget = $(e.currentTarget);
if (!currentTarget.hasClass(listStyles.editCell)) {
blurActiveElement();
}
};
if (!editable || editable.update === false) {
return;
}
this._startEditHandler = function(e) {
var td = e.currentTarget ? $(e.currentTarget) : e;
var column = that._columnFromElement(td);
if (that.editable) {
return;
}
if (column && column.editable) {
that._editCell({ cell: td, column: column });
}
};
that.content
.on("focusin" + NS, function() {
clearTimeout(that.timer);
that.timer = null;
})
.on("focusout" + NS, function() {
that.timer = setTimeout(finishEdit, 1);
})
.on("keydown" + NS, function(e) {
if (e.keyCode === keys.ENTER) {
e.preventDefault();
}
})
.on("keyup" + NS, function(e) {
var key = e.keyCode;
var cell;
var model;
switch (key) {
case keys.ENTER:
blurActiveElement();
finishEdit();
break;
case keys.ESC:
if (that.editable) {
cell = that._editableContainer;
model = that._modelFromElement(cell);
if (!that.trigger("cancel", { model: model, cell: cell })) {
that._closeCell(true);
}
}
break;
}
});
if (!mobileOS) {
that.content
.on("mousedown" + NS, "td", function(e) {
mousedown(e);
})
.on("dblclick" + NS, "td", function(e) {
if (!$(e.target).is(iconSelector)) {
that._startEditHandler(e);
}
});
} else {
that.touch = that.content
.kendoTouch({
filter: "td",
touchstart: function(e) {
mousedown(e.touch);
},
doubletap: function(e) {
if (!$(e.touch.initialTouch).is(iconSelector)) {
that._startEditHandler(e.touch);
}
}
}).data("kendoTouch");
}
},
_editCell: function(options) {
var resourcesField = this.options.resourcesField;
var listStyles = GanttList.styles;
var cell = options.cell;
var column = options.column;
var model = this._modelFromElement(cell);
var modelCopy = this.dataSource._createNewModel(model.toJSON());
var field = modelCopy.fields[column.field] || modelCopy[column.field];
var validation = field.validation;
var DATATYPE = kendo.attr("type");
var BINDING = kendo.attr("bind");
var FORMAT = kendo.attr("format");
var attr = {
"name": column.field,
"required": field.validation ?
field.validation.required === true : false
};
var editor;
if (column.field === resourcesField) {
column.editor(cell, modelCopy);
return;
}
this._editableContent = cell.children().detach();
this._editableContainer = cell;
cell.data("modelCopy", modelCopy);
if ((field.type === "date" || $.type(field) === "date") &&
(!column.format || /H|m|s|F|g|u/.test(column.format))) {
attr[BINDING] = "value:" + column.field;
attr[DATATYPE] = "date";
if (column.format) {
attr[FORMAT] = kendo._extractFormat(column.format);
}
editor = function(container, options) {
$('<input type="text"/>').attr(attr)
.appendTo(container).kendoDateTimePicker({ format: options.format });
};
}
this.editable = cell
.addClass(listStyles.editCell)
.kendoEditable({
fields: {
field: column.field,
format: column.format,
editor: column.editor || editor
},
model: modelCopy,
clearContainer: false
}).data("kendoEditable");
if (validation && validation.dateCompare &&
isFunction(validation.dateCompare) && validation.message) {
$('<span ' + kendo.attr("for") + '="' + column.field + '" class="k-invalid-msg"/>')
.hide()
.appendTo(cell);
cell.find('[name=' + column.field + ']')
.attr(kendo.attr("dateCompare-msg"), validation.message);
}
this.editable.bind("validate", function(e) {
var focusable = this.element.find(":kendoFocusable:first").focus();
if (oldIE) {
focusable.focus();
}
e.preventDefault();
});
if (this.trigger("edit", { model: model, cell: cell })) {
this._closeCell(true);
}
},
_closeCell: function(cancelUpdate) {
var listStyles = GanttList.styles;
var cell = this._editableContainer;
var model = this._modelFromElement(cell);
var column = this._columnFromElement(cell);
var field = column.field;
var copy = cell.data("modelCopy");
var taskInfo = {};
taskInfo[field] = copy.get(field);
cell.empty()
.removeData("modelCopy")
.removeClass(listStyles.editCell)
.append(this._editableContent);
this.editable.unbind();
this.editable.destroy();
this.editable = null;
this._editableContainer = null;
this._editableContent = null;
if (!cancelUpdate) {
if (field === "start") {
taskInfo.end = new Date(taskInfo.start.getTime() + model.duration());
}
this.trigger("update", { task: model, updateInfo: taskInfo });
}
},
_draggable: function() {
var that = this;
var draggedTask = null;
var dropAllowed = true;
var dropTarget;
var listStyles = GanttList.styles;
var isRtl = kendo.support.isRtl(this.element);
var selector = 'tr[' + kendo.attr("level") + ' = 0]:last';
var action = {};
var editable = this.options.editable;
var clear = function() {
draggedTask = null;
dropTarget = null;
dropAllowed = true;
action = {};
};
var allowDrop = function(task) {
var parent = task;
while (parent) {
if (draggedTask.get("id") === parent.get("id")) {
dropAllowed = false;
break;
}
parent = that.dataSource.taskParent(parent);
}
};
var defineLimits = function() {
var height = $(dropTarget).height();
var offsetTop = kendo.getOffset(dropTarget).top;
extend(dropTarget, {
beforeLimit: offsetTop + height * 0.25,
afterLimit: offsetTop + height * 0.75
});
};
var defineAction = function(coordinate) {
if (!dropTarget) {
return;
}
var location = coordinate.location;
var className = listStyles.dropAdd;
var command = "add";
var level = parseInt(dropTarget.attr(kendo.attr("level")), 10);
var sibling;
if (location <= dropTarget.beforeLimit) {
sibling = dropTarget.prev();
className = listStyles.dropTop;
command = "insert-before";
} else if (location >= dropTarget.afterLimit) {
sibling = dropTarget.next();
className = listStyles.dropBottom;
command = "insert-after";
}
if (sibling && parseInt(sibling.attr(kendo.attr("level")), 10) === level) {
className = listStyles.dropMiddle;
}
action.className = className;
action.command = command;
};
var status = function() {
return that._reorderDraggable
.hint
.children(DOT + listStyles.dragStatus)
.removeClass(listStyles.dropPositions);
};
if (!editable || editable.reorder === false || editable.update === false) {
return;
}
this._reorderDraggable = this.content
.kendoDraggable({
distance: 10,
holdToDrag: mobileOS,
group: "listGroup",
filter: "tr[data-uid]",
ignore: DOT + listStyles.input,
hint: function(target) {
return $('<div class="' + listStyles.header + " " + listStyles.dragClue + '"/>')
.css({
width: 300,
paddingLeft: target.css("paddingLeft"),
paddingRight: target.css("paddingRight"),
lineHeight: target.height() + "px",
paddingTop: target.css("paddingTop"),
paddingBottom: target.css("paddingBottom")
})
.append('<span class="' + listStyles.icon + " " + listStyles.dragStatus +'" /><span class="' + listStyles.dragClueText + '"/>');
},
cursorOffset: { top: -20, left: 0 },
container: this.content,
"dragstart": function(e) {
var editable = that.editable;
if (editable && editable.reorder !== false && editable.trigger("validate")) {
e.preventDefault();
return;
}
draggedTask = that._modelFromElement(e.currentTarget);
this.hint.children(DOT + listStyles.dragClueText)
.text(draggedTask.get("title"));
if (isRtl) {
this.hint.addClass(listStyles.rtl);
}
},
"drag": function(e) {
if (dropAllowed) {
defineAction(e.y);
status().addClass(action.className);
}
},
"dragend": function() {
clear();
},
"dragcancel": function() {
clear();
}
}).data("kendoDraggable");
this._tableDropArea = this.content
.kendoDropTargetArea({
distance: 0,
group: "listGroup",
filter: "tr[data-uid]",
"dragenter": function(e) {
dropTarget = e.dropTarget;
allowDrop(that._modelFromElement(dropTarget));
defineLimits();
status().toggleClass(listStyles.dropDenied, !dropAllowed);
},
"dragleave": function() {
dropAllowed = true;
status();
},
"drop": function() {
var target = that._modelFromElement(dropTarget);
var orderId = target.orderId;
var taskInfo = {
parentId: target.parentId
};
if (dropAllowed) {
switch (action.command) {
case "add":
taskInfo.parentId = target.id;
break;
case "insert-before":
if (target.parentId === draggedTask.parentId &&
target.orderId > draggedTask.orderId) {
taskInfo.orderId = orderId - 1;
} else {
taskInfo.orderId = orderId;
}
break;
case "insert-after":
if (target.parentId === draggedTask.parentId &&
target.orderId > draggedTask.orderId) {
taskInfo.orderId = orderId;
} else {
taskInfo.orderId = orderId + 1;
}
break;
}
that.trigger("update", {
task: draggedTask,
updateInfo: taskInfo
});
}
}
}).data("kendoDropTargetArea");
this._contentDropArea = this.element
.kendoDropTargetArea({
distance: 0,
group: "listGroup",
filter: DOT + listStyles.gridContent,
"drop": function() {
var target = that._modelFromElement(that.content.find(selector));
var orderId = target.orderId;
var taskInfo = {
parentId: null,
orderId: draggedTask.parentId !== null ?
orderId + 1 : orderId
};
that.trigger("update", {
task: draggedTask,
updateInfo: taskInfo
});
}
}).data("kendoDropTargetArea");
},
_resizable: function() {
var that = this;
var listStyles = GanttList.styles;
var positionResizeHandle = function(e) {
var th = $(e.currentTarget);
var resizeHandle = that.resizeHandle;
var position = th.position();
var left = position.left;
var cellWidth = outerWidth(th);
var container = th.closest("div");
var clientX = e.clientX + $(window).scrollLeft();
var indicatorWidth = that.options.columnResizeHandleWidth;
left += container.scrollLeft();
if (!resizeHandle) {
resizeHandle = that.resizeHandle = $(
'<div class="' + listStyles.resizeHandle + '"><div class="' + listStyles.resizeHandleInner + '" /></div>'
);
}
var cellOffset = th.offset().left + cellWidth;
var show = clientX > cellOffset - indicatorWidth && clientX < cellOffset + indicatorWidth;
if (!show) {
resizeHandle.hide();
return;
}
container.append(resizeHandle);
resizeHandle
.show()
.css({
top: position.top,
left: left + cellWidth - indicatorWidth - 1,
height: outerHeight(th),
width: indicatorWidth * 3
})
.data("th", th);
};
if (!this.options.resizable) {
return;
}
if (this._columnResizable) {
this._columnResizable.destroy();
}
this.header.find("thead")
.on("mousemove" + NS, "th", positionResizeHandle);
this._columnResizable = this.header.kendoResizable({
handle: DOT + listStyles.resizeHandle,
start: function(e) {
var th = $(e.currentTarget).data("th");
var colSelector = "col:eq(" + th.index() + ")";
var header = that.header.find("table");
var contentTable = that.content.find("table");
that.element.addClass("k-grid-column-resizing");
this.col = contentTable.children("colgroup").find(colSelector)
.add(header.find(colSelector));
this.th = th;
this.startLocation = e.x.location;
this.columnWidth = outerWidth(th);
this.table = header.add(contentTable);
this.totalWidth = (this.table.width() - outerWidth(header.find("th:last")));
},
resize: function(e) {
var minColumnWidth = 11;
var delta = e.x.location - this.startLocation;
if (this.columnWidth + delta < minColumnWidth) {
delta = minColumnWidth - this.columnWidth;
}
this.table.css({
"minWidth": (this.totalWidth + delta)
});
this.col.width(this.columnWidth + delta);
},
resizeend: function() {
that.element.removeClass("k-grid-column-resizing");
var oldWidth = Math.floor(this.columnWidth);
var newWidth = Math.floor(outerWidth(this.th));
var column = that.columns[this.th.index()];
that.trigger("columnResize", {
column: column,
oldWidth: oldWidth,
newWidth: newWidth
});
this.table = this.col = this.th = null;
}
}).data("kendoResizable");
},
_modelFromElement: function(element) {
var row = element.closest("tr");
var model = this.dataSource.getByUid(row.attr(kendo.attr("uid")));
return model;
},
_columnFromElement: function(element) {
var td = element.closest("td");
var tr = td.parent();
var idx = tr.children().index(td);
return this.columns[idx];
}
});
extend(true, ui.GanttList, { styles: listStyles });
})(window.kendo.jQuery);
return window.kendo;
}, __webpack_require__(3));
/***/ }),
/***/ 1195:
/***/ (function(module, exports) {
module.exports = require("./kendo.touch");
/***/ }),
/***/ 1196:
/***/ (function(module, exports) {
module.exports = require("./kendo.columnsorter");
/***/ }),
/***/ 1197:
/***/ (function(module, exports) {
module.exports = require("./kendo.datetimepicker");
/***/ }),
/***/ 1198:
/***/ (function(module, exports) {
module.exports = require("./kendo.editable");
/***/ })
/******/ });