Your IP : 18.216.147.121


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/js/tasks/kanban/timeline/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/js/tasks/kanban/timeline/grid.js

(function() {

"use strict";

BX.namespace("BX.Tasks.Timeline");

/**
 *
 * @param options
 * @extends {BX.Tasks.Kanban.Grid}
 * @constructor
 */
BX.Tasks.Timeline.Grid = function(options)
{
	BX.Tasks.Kanban.Grid.apply(this, arguments);
};

BX.Tasks.Timeline.Grid.prototype = {
	__proto__: BX.Tasks.Kanban.Grid.prototype,
	constructor: BX.Tasks.Timeline.Grid,

	onItemDragStart: function(item)
	{
		this.setDragMode(BX.Kanban.DragMode.ITEM);

		var errorMsg = "";

		var items = this.getItems();
		var taskData = item.getData();
		var taskColumnId = item.getColumnId();

		var isComplete = taskData.completed || taskData.completed_supposedly;
		var isAllowChange = taskData.allow_change_deadline;
		var overdueUntil = taskData.overdue_until ? taskData.overdue_until : 0;

		var columnIdComplete = this.getData().columnIdComplete;
		var columnIdOverdue = this.getData().columnIdOverdue;

		if (errorMsg === "")
		{
			for (var itemId in items)
			{
				var columnId = items[itemId].getColumnId();
				var columnData = items[itemId].getColumn().getData();
				var enable = false;

				// in same column, or make complete
				if (taskColumnId === columnId)
				{
					enable = true;
				}
				else if (columnId === columnIdComplete)
				{
					enable = true;
				}
				// generate errors
				if (!enable && isComplete)
				{
					errorMsg = BX.message("TASKS_KANBAN_ME_DISABLE_COMPLETE");
				}
				else if (!enable && (taskColumnId === columnIdOverdue))
				{
					errorMsg = BX.message("TASKS_KANBAN_ME_DISABLE_FROM_OVERDUE");
				}
				else if (!enable && !isAllowChange)
				{
					errorMsg = BX.message("TASKS_KANBAN_ME_DISABLE_DEADLINE");
				}
				else if (
					!enable && columnData.overdue_until &&
					overdueUntil && overdueUntil <= columnData.overdue_until
				)
				{
					errorMsg = BX.message("TASKS_KANBAN_ME_DISABLE_DEADLINE_PART");
				}
				// or enable drag
				else if (columnId !== columnIdOverdue)
				{
					enable = true;
				}

				if (enable)
				{
					items[itemId].enableDropping();
				}
			}

			this.getColumns().forEach(function(/*BX.Kanban.Column*/column) {
				var columnId = column.getId();
				var columnData = column.getData();
				var enable = false;

				// in same column, or make complete
				if (taskColumnId === columnId)
				{
					enable = true;
				}
				else if (columnId === columnIdComplete)
				{
					enable = true;
				}
				// generate errors
				if (!enable && isComplete)
				{
					errorMsg = BX.message("TASKS_KANBAN_ME_DISABLE_COMPLETE");
				}
				else if (!enable && (taskColumnId === columnIdOverdue))
				{
					errorMsg = BX.message("TASKS_KANBAN_ME_DISABLE_FROM_OVERDUE");
				}
				else if (!enable && !isAllowChange)
				{
					errorMsg = BX.message("TASKS_KANBAN_ME_DISABLE_DEADLINE");
				}
				else if (
					!enable && columnData.overdue_until &&
					overdueUntil && overdueUntil <= columnData.overdue_until
				)
				{
					errorMsg = BX.message("TASKS_KANBAN_ME_DISABLE_DEADLINE_PART");
				}
				// or enable drag
				else if (columnId !== columnIdOverdue)
				{
					enable = true;
				}

				if (enable)
				{
					column.enableDropping();
				}
			});
		}

		if (errorMsg !== "")
		{
			item.getDragElement().appendChild(this.createAlertBlock(errorMsg))
		}

	},

	createAlertBlock: function (message)
	{

		return BX.create("div", {
			props: {
				className: "tasks-kanban-item-alert"
			},
			text: message
		});

	}

};


})();