var resizeFreez = function (tableId, scope) {
//var start = new Date();
//console.log('cell resizing started ' + start);
var t = $("#" + tableId);
var thsWidthI = 0;
var tr = t.find("tr:eq(1)");
var ths = tr.find("th");
var thNameWidth = ths.eq(1).width();
var dateThs = ths.filter(":gt(2):visible");
if (dateThs.length == 0)
return;
var visibleColumns = 0;
ths.filter(":visible").each(function (i, o) {
thsWidthI += $(o).innerWidth();
visibleColumns++;
});
var divWidthI = t.parent().parent().innerWidth();
var longestCategory = 0;
t.find("td:nth-child(2)").each(function (i, td) {
var text = $(td).html();
var txtElement = $("
| ").html(text).css({
'class': "headcol"
}).prependTo($(td).parent());
longestCategory = Math.max(longestCategory, txtElement.width());
txtElement.remove();
});
var delta = 0;
if (thsWidthI > divWidthI) {
// if width of all columns > visible table then we need to shrink name column to the width of smallest category name
delta = -Math.min(thNameWidth - longestCategory, thsWidthI - divWidthI + visibleColumns + 1);
} else if (thsWidthI < divWidthI) {
delta = divWidthI - thsWidthI - visibleColumns - 1;
}
if (delta == 0)
return;
t.find("tbody tr td:nth-child(2)").each(rszObj, [delta, null, null]);
t.find("th:nth-child(2)").each(rszObj, [delta, null, null]);
t.find("tfoot td:first").each(rszObj, [delta, null, null]);
t.find("tbody tr td:nth-child(3)").each(rszObj, [null, delta, null]);
t.find("th:nth-child(3)").each(rszObj, [null, delta, null]);
t.find("tfoot td:eq(1)").each(rszObj, [null, delta, null]);
var total3Width = ths.eq(0).outerWidth() + ths.eq(1).outerWidth() + ths.eq(2).outerWidth();
t.parent().each(rszObj, [null, null, total3Width - 1]);
//var end = new Date();
//console.log("## cell resizing took: " + (end - start) + " ms");
return;
};
function rszObj(deltaWidth, deltaLeft, padLeft) {
if (deltaWidth != null && deltaWidth != 0) {
var oldWidth = $(this).width();
$(this).css('width', oldWidth + deltaWidth);
}
if (deltaLeft != null && deltaLeft != 0) {
var oldLeft = $(this).css('left');
if (oldLeft != null && oldLeft.length > 0) {
var l = parseInt(oldLeft.substr(0, oldLeft.length - 1));
if (!isNaN(l))
$(this).css('left', l + deltaLeft);
}
}
if (padLeft != null && !isNaN(padLeft)) {
$(this).css('padding-left', padLeft);
}
}