403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/tilegrid/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/tilegrid/dragdrop.js
;(function() {

'use strict';

BX.namespace('BX.TileGrid');

BX.TileGrid.DragDrop = function(options)
{
	this.gridTile = options;
	this.draggableContainer = null;
	this.droppableItem = null;
	this.draggableItems = [];
};

BX.TileGrid.DragDrop.prototype =
{
	registerItem: function(object)
	{
		object.onbxdragstart = BX.proxy(this.onDragStart, this);
		object.onbxdrag = BX.proxy(this.onDrag, this);
		object.onbxdragstop = BX.proxy(this.onDragStop, this);
		object.onbxdraghover = BX.proxy(this.onDragOver, this );
		object.onbxdraghout = BX.proxy(this.onDragOut, this );
		jsDD.registerObject(object);
	},

	registerDrop: function(object)
	{
		jsDD.registerDest(object, 10);
	},

	onDragStart: function()
	{
		this.setDraggableItems();
		this.setDraggableContainer();

		var div = BX.proxy_context;
		var item = this.gridTile.getItem(div.dataset.id);

		if(!item.selected)
		{
			this.gridTile.resetSelectAllItems();
			this.draggableItems = [];
			this.draggableItems.push(item);
		}

		var itemBlock;
		var widthItem = this.draggableItems[0].layout.container.offsetWidth;

		for (var i = 0; i < this.draggableItems.length; i++)
		{
			itemBlock = this.draggableItems[i].layout.container.cloneNode(true);
			itemBlock.style.width = widthItem + 'px';

			this.draggableContainer.appendChild(itemBlock);
			this.toggleActiveClass(this.draggableItems[i].layout.container);
		}

		BX.onCustomEvent(this.gridTile, "TileGrid.Grid:onItemDragStart", [this]);

		document.body.appendChild(this.draggableContainer);
	},

	onDrag: function(x, y)
	{
		this.draggableContainer.style.left = x + 'px';
		this.draggableContainer.style.top = y + 'px';
	},

	onDragOver: function(destination)
	{
		this.handlerDroppableClass();

		var itemId = destination.dataset.id;
		this.droppableItem = this.gridTile.getItem(itemId);

		this.handlerDroppableClass();

		BX.onCustomEvent(this.gridTile, "TileGrid.Grid:onItemDragOver", [this]);
	},

	onDragOut: function(destination)
	{
		this.handlerDroppableClass();
		this.droppableItem = null;

		BX.onCustomEvent(this.gridTile, "TileGrid.Grid:onItemDragOut", [this]);
	},

	handlerDroppableClass: function()
	{
		if(!this.droppableItem)
			return;

		BX.toggleClass(this.droppableItem.layout.container, 'ui-grid-tile-item-droppable');
	},

	onDragStop: function()
	{
		this.gridTile.resetSelectAllItems();
		this.moveDraggableItems();
		this.handlerDroppableClass();

		for (var i = 0; i < this.draggableItems.length; i++)
		{
			this.toggleActiveClass(this.draggableItems[i].layout.container)
		}

		this.draggableContainer.parentNode.removeChild(this.draggableContainer);
		this.draggableItems = [];
		this.droppableItem = null;
		this.draggableContainer = null;

		BX.onCustomEvent(this.gridTile, "TileGrid.Grid:onItemDragStop", [this]);
	},

	moveDraggableItems: function()
	{
		for (var z = 0; z < this.draggableItems.length; z++)
		{
			if(this.draggableItems[z] === this.droppableItem)
				return
		}

		if(!this.droppableItem)
			return;

		if(this.droppableItem.isDroppable)
		{
			this.droppableItem.animateNode();

			for (var i = 0; i < this.draggableItems.length; i++)
			{
				this.gridTile.moveItem(this.draggableItems[i], this.droppableItem);
			}
		}
	},

	setDraggableItems: function()
	{
		for (var i = 0; i < this.gridTile.items.length; i++)
		{
			this.gridTile.items[i].selected ? this.draggableItems.push(this.gridTile.items[i]) : null
		}
	},

	setDraggableContainer: function()
	{
		this.draggableContainer = BX.create('div', {
			attrs: {
				className: this.draggableItems.length <= 1 ?
					'ui-grid-tile-item-draggable-single' :
					'ui-grid-tile-item-draggable'
			},
			style: {
				width: this.draggableItems.length > 1 ? this.draggableItems[0].layout.container.offsetWidth + 'px' : null,
				height: this.draggableItems.length > 1 ? this.draggableItems[0].layout.container.offsetHeight + 'px' : null
			}
		});
	},

	toggleActiveClass: function(itemBlock)
	{
		itemBlock.classList.contains('ui-grid-tile-item-active') ?
			itemBlock.classList.remove('ui-grid-tile-item-active') :
			itemBlock.classList.add('ui-grid-tile-item-active')
	}
}
})();

Youez - 2016 - github.com/yon3zu
LinuXploit