Your IP : 3.140.191.75
;(function() {
'use strict';
BX.namespace('BX.TileGrid');
BX.TileGrid.Item = function(options)
{
this.id = options.id;
this.isDraggable = options.isDraggable || false;
this.isDroppable = options.isDroppable || false;
this.name = options.name;
this.type = options.type;
this.layout = {
container: null,
checkbox: null
};
this.gridTile = null;
this.dblClickDelay = 180;
};
BX.TileGrid.Item.prototype =
{
bindEvents: function()
{
BX.addCustomEvent(window, 'BX.TileGrid.Grid:lastSelectedItem', function()
{
});
},
getId: function()
{
return this.id;
},
render: function()
{
var clickTimer = null;
var preventClick = false;
this.layout.container = BX.create('div', {
attrs: {
className: 'ui-grid-tile-item'
},
dataset: {
id: this.id
},
children: [
this.getCheckBox(),
this.layout.content = BX.create('div', {
attrs: {
className: 'ui-grid-tile-item-content'
},
children: [
this.getContent()
]
})
],
events: {
dblclick: function(event)
{
clickTimer && clearTimeout(clickTimer);
preventClick = true;
this.handleDblClick.call(this, event);
this.gridTile.resetSetMultiSelectMode();
this.gridTile.resetSelectAllItems();
this.gridTile.resetFromToItems();
}.bind(this),
click: function(event)
{
clickTimer = setTimeout(function () {
if(!preventClick)
{
this.handleClick.call(this, event);
}
preventClick = false;
}.bind(this), this.dblClickDelay);
}.bind(this)
}
});
if (this.isDraggable)
{
this.gridTile.dragger.registerItem(this.layout.container);
}
if (this.isDroppable)
{
this.gridTile.dragger.registerDrop(this.layout.container);
}
return this.layout.container
},
isVisibleItem: function()
{
var rect = this.layout.container.getBoundingClientRect();
var rectBody = document.body.getBoundingClientRect();
if (rect.top < 0 || rect.bottom < 0)
{
return false;
}
return rectBody.height > rect.top && rectBody.height >= rect.bottom;
},
afterRender: function()
{},
handleClick: function(event)
{
this.focusItem();
this.resetFocusItem();
var grid = this.gridTile;
if(grid.isKeyControlKey())
{
grid.setMultiSelectMode();
grid.checkItem(grid.getFirstCurrentItem())
}
if(!grid.isLastSelectedItem())
{
if(!grid.isMultiSelectMode())
{
grid.unSelectItem(grid.getCurrentItem())
}
}
if(!grid.getFirstCurrentItem())
{
grid.setFirstCurrentItem(this);
}
if(grid.isKeyPressedShift())
{
grid.selectFromToItems(grid.getFirstCurrentItem(), this);
return;
}
if(grid.isMultiSelectMode() || grid.isKeyPressedSelectAll())
{
if(!this.checked)
{
grid.checkItem(this);
grid.selectItem(this);
grid.setCurrentItem(this);
grid.setFirstCurrentItem(this);
}
else
{
grid.unCheckItem(this);
grid.unSelectItem(this);
if(grid.isLastSelectedItem())
grid.resetSetMultiSelectMode();
}
return;
}
if(this.selected)
{
grid.unSelectItem(this)
}
else
{
grid.selectItem(this);
grid.unCheckItem(this);
grid.setCurrentItem(this);
grid.setFirstCurrentItem(this);
if(grid.isLastSelectedItem())
grid.resetSetMultiSelectMode();
}
},
handleDblClick: function(event)
{},
handleEnter: function()
{},
getContainer: function()
{
return this.layout.container;
},
getCheckBox: function()
{
return this.layout.checkbox = BX.create('div', {
props: {
className: 'ui-grid-tile-item-checkbox'
},
events: {
click: function(event)
{
if(this !== this.gridTile.getCurrentItem())
{
this.gridTile.checkItem(this.gridTile.getCurrentItem());
}
this.gridTile.checkItem(this);
this.gridTile.selectItem(this);
this.gridTile.setCurrentItem(this);
this.gridTile.setFirstCurrentItem(this);
if(!this.gridTile.isLastSelectedItem())
{
if(this.gridTile.isMultiSelectMode())
this.gridTile.checkItem(this.gridTile.getFirstCurrentItem());
}
this.focusItem();
this.resetFocusItem();
event.stopPropagation();
}.bind(this)
}
})
},
getContent: function() {
return null
},
focusItem: function()
{
this.layout.container.setAttribute('tabindex', '1');
this.layout.container.focus();
},
resetFocusItem: function()
{
this.layout.container.removeAttribute('tabindex')
},
removeNode: function()
{
var itemContainer = this.layout.container;
itemContainer.classList.add('ui-grid-tile-item-to-fade');
itemContainer.style.width = itemContainer.offsetWidth + 'px';
BX.bind(itemContainer, 'transitionend', function()
{
itemContainer.classList.add('ui-grid-tile-item-to-remove');
});
setTimeout(function()
{
if(!itemContainer.parentNode)
return;
itemContainer.parentNode.removeChild(itemContainer);
}, 500);
},
animateNode: function()
{
var itemContainer = this.layout.container;
itemContainer.classList.add('ui-grid-tile-item-to-receive');
setTimeout(function()
{
itemContainer.classList.remove('ui-grid-tile-item-to-receive');
},500);
}
}
})();