var util = require('../../util');
|
|
var Group = require('./Group');
|
|
|
|
/**
|
|
* @constructor BackgroundGroup
|
|
* @param {Number | String} groupId
|
|
* @param {Object} data
|
|
* @param {ItemSet} itemSet
|
|
*/
|
|
function BackgroundGroup (groupId, data, itemSet) {
|
|
Group.call(this, groupId, data, itemSet);
|
|
|
|
this.width = 0;
|
|
this.height = 0;
|
|
this.top = 0;
|
|
this.left = 0;
|
|
}
|
|
|
|
BackgroundGroup.prototype = Object.create(Group.prototype);
|
|
|
|
/**
|
|
* Repaint this group
|
|
* @param {{start: number, end: number}} range
|
|
* @param {{item: {horizontal: number, vertical: number}, axis: number}} margin
|
|
* @param {boolean} [restack=false] Force restacking of all items
|
|
* @return {boolean} Returns true if the group is resized
|
|
*/
|
|
BackgroundGroup.prototype.redraw = function(range, margin, restack) {
|
|
var resized = false;
|
|
|
|
this.visibleItems = this._updateItemsInRange(this.orderedItems, this.visibleItems, range);
|
|
|
|
// calculate actual size
|
|
this.width = this.dom.background.offsetWidth;
|
|
|
|
// apply new height (just always zero for BackgroundGroup
|
|
this.dom.background.style.height = '0';
|
|
|
|
// update vertical position of items after they are re-stacked and the height of the group is calculated
|
|
for (var i = 0, ii = this.visibleItems.length; i < ii; i++) {
|
|
var item = this.visibleItems[i];
|
|
item.repositionY(margin);
|
|
}
|
|
|
|
return resized;
|
|
};
|
|
|
|
/**
|
|
* Show this group: attach to the DOM
|
|
*/
|
|
BackgroundGroup.prototype.show = function() {
|
|
if (!this.dom.background.parentNode) {
|
|
this.itemSet.dom.background.appendChild(this.dom.background);
|
|
}
|
|
};
|
|
|
|
module.exports = BackgroundGroup;
|