/**
* Родительский "класс" для таблиц
*/
var IrisGridController = IrisController.extend({
render: function () {},
events: {},
/**
* Отображает итоги внизу таблицы
* @param {string} [windowId=$(this.el.id)] Id таблицы.
*/
showTotal: function(windowId) {
var l_grid;
if (windowId == undefined) {
l_grid = $(this.el.id); // получаем грид
}
else {
l_grid = $(windowId);
}
// Обернем строку с итогами в table, чтобы добавить справа под скроллом колонку
var data = {
id: l_grid.getAttribute('id'),
scrollbar_width: g_vars.scrollbar_width,
items: []
}
// По всем колонкам таблицы
for (var i=0; i<l_grid.rows[0].cells.length; i++) {
// По всем переданным параметром колонкам
if ($(l_grid.rows[0].cells[i]).hasAttribute('total_value')) {
data.items.push({
width: $(l_grid.rows[0].cells[i]).getWidth(),
total: $(l_grid.rows[0].cells[i]).getAttribute('total_value')
});
}
}
if (data.items.length == 0) {
return;
}
if ($(l_grid.getAttribute('id')+'_summary')) {
jQuery('#' + l_grid.getAttribute('id')+'_summary').replaceWith(
_.template(jQuery('#grid-summary').html(), {data: data}));
}
else {
var parentContainer = l_grid.up('div[conttype="outer"]').up();
var old_height = $(parentContainer).getHeight();
var div_outer = l_grid.up('div[conttype="outer"]');
jQuery('#' + windowId).parents('div[conttype="outer"]').append(_.template(
jQuery('#grid-summary').html(), {data: data}));
var new_height = $(parentContainer).getHeight();
//После вставки обновим высоту грида
var elems_height = 0;
for (var i=0; i<$(parentContainer).children.length; i++) {
//try на тот случай, если попадется лишний перевод строки, который зачтется за childnode
try {
if ('outer' != parentContainer.children[i].getAttribute('conttype')) {
elems_height += $(parentContainer.children[i]).getHeight();
}
}
catch(e) {}
}
//Компенсируем высоту parentContainer, она меняется везде кроме chrome и firefox после добавления строки summary
elems_height += new_height-old_height;
div_outer.setAttribute('elems_height', elems_height);
updateGridHeight(l_grid);
updateGridWidth(l_grid);
}
}
});