Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Wed, Jul 23, 10:29 PM

in-portal

Index: branches/unlabeled/unlabeled-1.1.2/core/admin_templates/js/grid_scroller.js
===================================================================
--- branches/unlabeled/unlabeled-1.1.2/core/admin_templates/js/grid_scroller.js (revision 7062)
+++ branches/unlabeled/unlabeled-1.1.2/core/admin_templates/js/grid_scroller.js (revision 7063)
@@ -1,651 +1,794 @@
+var sheetRules; // all rules in stylesheet Set by initStyleChange()
+var currentRule; // which rule are we editing? Set by assignRule()
+var defaultStyles = new Array();
+
+
+function StyleManager() {}
+
+StyleManager.InitStyles = function() {
+ if (!document.styleSheets) return;
+ var sheets = document.styleSheets;
+
+ this.Map = new Object();
+// alert('total '+sheets.length+' sheets')
+ for (var i=0;i<sheets.length;i++) {
+ var currentSheet = sheets[i];
+ if (currentSheet.cssRules)
+ sheetRules = currentSheet.cssRules
+ else if (currentSheet.rules)
+ sheetRules = currentSheet.rules;
+ else {
+// alert('bad sheet '+currentSheet.href);
+ continue;
+ }
+
+// alert('sheet: '+currentSheet.href)
+
+ for (var ii=0;ii<sheetRules.length;ii++) {
+ var value = sheetRules[ii].selectorText;
+ if (value.match(',')) { // Mozilla does not break comma-separated selectors into separate rules...
+ var subselectors = value.split(',');
+ for (var sub in subselectors) {
+ var real_name = subselectors[sub].replace(/^[ \t]*(.*)[ \t]*/, '$1');
+ this.Map[real_name] = sheetRules[ii]
+ }
+ }
+ else {
+ this.Map[value.toLowerCase()] = sheetRules[ii];
+ }
+ }
+ }
+ this.Inited = true;
+// preg_print_pre(this.Map, /last/);
+}
+
+StyleManager.ChangeStyle = function(selector, style, value)
+{
+ if (!this.Inited) this.InitStyles()
+ rule = this.Map[selector.toLowerCase()];
+ if (!rule) {
+ alert('rule '+selector+' not found')
+ return;
+ }
+ rule.style[style] = value;
+}
+
function preg_print_pre(obj, reg)
{
if (!reg) reg = /.*/;
var p = ''
for (var prop in obj) {
if (prop.match(reg) ) {
p += prop + ': '+obj[prop] + '\n'
}
}
alert(p)
}
function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
curleft = obj.offsetLeft
curtop = obj.offsetTop
while (obj = obj.offsetParent) {
curleft += obj.offsetLeft
curtop += obj.offsetTop
}
}
return [curleft,curtop];
}
+var startTime,endTime;
+
function getDimensions(obj) {
var style,correction,height
if (obj.currentStyle) {
style = obj.currentStyle;
}
else {
style = getComputedStyle(obj,'');
}
padding = [parseInt(style.paddingTop), parseInt(style.paddingRight), parseInt(style.paddingBottom), parseInt(style.paddingLeft)]
border = [parseInt(style.borderTopWidth), parseInt(style.borderRightWidth), parseInt(style.borderBottomWidth), parseInt(style.borderLeftWidth)]
for (var i in padding) if ( isNaN( padding[i] ) ) padding[i] = 0
for (var i in border) if ( isNaN( border[i] ) ) border[i] = 0
correction = padding[0] + padding[2]; // + border[0] + border[2]
height = obj.clientHeight - correction
var result = new Object();
result.innerHeight = obj.clientHeight - padding[0] - padding[2];
result.innerWidth = obj.clientWidth - padding[1] - padding[3];
result.padding = padding;
result.borders = border;
return result;
}
+var profile = 0;
+var startTime = new Date().getTime();
+
+function Profile(message,force)
+{
+ if (profile || force) {
+ endTime = new Date().getTime();
+ alert(message+' took '+(endTime-startTime)+' ms?')
+ startTime = new Date().getTime();
+ }
+}
+
function GridScroller(grid_id, w, h)
{
this.GridId = grid_id
this.Footer = false;
this.LeftCells = 0;
this.LeftWidth = 0;
this.BottomOffset = 0;
this.Width = w;
this.Height = h;
this.AutoWidth = true;
this.ScrollerW = 0;
this.ScrollerH = 0;
this.MinWidths = [];
+ this.IDs = [];
+
+ this.Rendered = false;
}
GridScroller.prototype.Render = function(id)
{
+// alert('rendering '+( id ? id : 'defulat'))
+ startTime = new Date().getTime();
html = this.GetHTML();
if (id && id != '') {
- document.getElementById(id).innerHTML = html;
+ document.getElementById(id).innerHTML = '<div id="main_div_'+this.GridId+'">'+html+'</div>';
}
else {
- document.write(html);
+ if (this.Rendered) {
+ this.Render('main_div_'+this.GridId);
+ return;
+ }
+ document.write('<div id="main_div_'+this.GridId+'">'+html+'</div>');
}
+ this.Rendered = true;
+ Profile('Preparing HTML and writing it')
document.body.style.height = '100%';
document.body.style.overflow = 'hidden';
document.body.scroll = 'no'
this.SetReferences()
this.ScrollerW = this.MainInner.offsetWidth - this.MainInner.clientWidth
this.ScrollerH = this.MainInner.offsetHeight - this.MainInner.clientHeight
- this.UpdateColWidths();
+ if (!this.UpdateColWidths()) return;
+// Profile('UpdateColWidths');
+
if (this.Width == 'auto') {
this.Resize( this.GetAutoSize() );
}
else {
this.Resize();
}
+// Profile('Resizing');
+
this.TheGrid.style.visibility = 'visible'
this.MainScroller.style.visibility = 'visible'
var the_grid = this;
if (document.all) {
$status = window.attachEvent('onresize', function(ev) { the_grid.AutoResize() });
} else {
$status = window.addEventListener('resize', function(ev) { the_grid.AutoResize() }, true);
}
+ Profile('Finalizng', 0);
}
+
GridScroller.prototype.SetReferences = function() {
this.MainOuter = document.getElementById('outer_main_'+this.GridId );
this.MainInner = document.getElementById('inner_main_'+this.GridId)
this.MainScroller = document.getElementById('main_scroller_'+this.GridId)
this.TheGrid = document.getElementById(this.GridId );
this.HeadTable = document.getElementById('header_'+this.GridId);
this.HeadScroller = document.getElementById('inner_header_'+this.GridId);
this.HeadOuter = document.getElementById('outer_header_'+this.GridId);
this.DataTable = document.getElementById('data_'+this.GridId);
this.DataScroller = document.getElementById('inner_data_'+this.GridId);
this.DataOuter = document.getElementById('outer_data_'+this.GridId);
if (this.HasFooter) {
this.FooterTable = document.getElementById('footer_'+this.GridId);
this.FooterScroller = document.getElementById('inner_footer_'+this.GridId);
this.FooterOuter = document.getElementById('outer_footer_'+this.GridId);
}
if (this.LeftCells != 0) {
this.LeftHeaderTable = document.getElementById('left_header_'+this.GridId);
this.LeftHeaderScroller = document.getElementById('inner_left_header_'+this.GridId);
this.LeftHeaderOuter = document.getElementById('outer_left_header_'+this.GridId);
this.LeftDataTable = document.getElementById('left_data_'+this.GridId);
this.LeftDataScroller = document.getElementById('inner_left_data_'+this.GridId);
this.LeftDataOuter = document.getElementById('outer_left_data_'+this.GridId);
if (this.HasFooter) {
this.LeftFooterTable = document.getElementById('left_footer_'+this.GridId);
this.LeftFooterScroller = document.getElementById('inner_left_footer_'+this.GridId);
this.LeftFooterOuter = document.getElementById('outer_left_footer_'+this.GridId);
}
}
this.DataScroller.TheGrid = this;
this.MainInner.TheGrid = this;
this.Dot = document.getElementById('dot_'+this.GridId)
// this.MainOuter.style.border = '5px solid red';
// this.MainOuter.style.padding = '30px';
this.MainOuter.className = 'grid-scrollable'
+ if (!is.ie) {
+ this.MainOuter.style.marginLeft = '-1px';
+ }
+
}
GridScroller.prototype.UpdateColWidths = function() {
var data_cf = 1;
var count = 1;
- var header_cf = 0.2;
+ var header_cf = 0;
var footer_cf = 0.2;
+// alert('MinWidths: '+this.MinWidths.length + ' vs Data ' + this.Header[0].length)
+ if (this.MinWidths.length < this.Header[0].length) {
+ var widths = new Array();
+ var total = 0;
+
+ StyleManager.ChangeStyle('td.grid-header-last-cell', 'width', '123px')
+ StyleManager.ChangeStyle('td.grid-data-last-cell', 'width', 'auto')
+ if (this.HasFooter()) {
+ StyleManager.ChangeStyle('td.grid-footer-last-cell', 'width', 'auto')
+ }
- var header_widths = this.GetWidths('header_'+this.GridId);
- data_cf -= header_cf;
- count++;
+ if (this.LeftCells) {
+ widths.push(this.LeftHeaderTable.clientWidth)
+ }
- var data_widths = this.GetWidths('data_'+this.GridId);
+ var header_widths = this.GetWidths('header_'+this.GridId);
+ var data_widths = this.GetWidths('data_'+this.GridId);
- if (this.HasFooter()) {
- var footer_widths = this.GetWidths('footer_'+this.GridId);
- data_cf -= footer_cf;
- count++;
- }
+ /*if (this.HasFooter()) {
+ var footer_widths = this.GetWidths('footer_'+this.GridId);
+ data_cf -= footer_cf;
+ count++;
+ }*/
- var widths = new Array();
- var total = 0;
+ for (var i=0; i<header_widths.length; i++)
+ {
+ target = data_widths[i] ? data_widths[i] : header_widths[i];
+ if (target < header_widths[i]) target = header_widths[i];
+ widths.push(target);
+ total += target;
+ }
+
+ this.MinWidths = widths;
+
+ StyleManager.ChangeStyle('td.grid-header-last-cell', 'width', '100%')
+ StyleManager.ChangeStyle('td.grid-data-last-cell', 'width', '100%')
+ if (this.HasFooter()) {
+ StyleManager.ChangeStyle('td.grid-footer-last-cell', 'width', '100%')
+ }
+
+ this.Render();
+ return false;
+ }
- for (var i=0; i<header_widths.length; i++)
+ /*for (var i=0; i<header_widths.length; i++)
{
// target = Math.max( Math.max(header_widths[i], data_widths[i]), footer_widths[i]);
var sum = header_widths[i]*header_cf*count + (data_widths[i] ? data_widths[i]*data_cf*count : header_widths[i]*data_cf*count);
-// alert('sum ('+i+') = '+header_widths[i]+' * '+header_cf+' * '+count+' + '+data_widths[i]+' * '+data_cf+' * '+count+' = '+sum)
+ alert('sum ('+i+') = '+header_widths[i]+' * '+header_cf+' * '+count+' + '+data_widths[i]+' * '+data_cf+' * '+count+' = '+sum)
if (this.HasFooter()) {
sum += footer_widths[i]*footer_cf*count;
-// alert('sum + '+footer_widths[i]+' * '+footer_cf+' * '+count+' = '+sum)
+ alert('sum + '+footer_widths[i]+' * '+footer_cf+' * '+count+' = '+sum)
}
target = Math.round( sum / count )
widths.push(target);
// alert('target: '+target)
total += target;
}
- this.MinDataWidth = total;
- this.SetWidths('header_'+this.GridId, widths, 0, -1);
- this.SetWidths('data_'+this.GridId, widths, 0, -1);
+ */
+
+ Profile('Getting widths');
+
+// preg_print_pre(widths)
+// this.MinDataWidth = total;
+// this.SetWidths('header_'+this.GridId, widths, 0, -1);
+// this.SetWidths('data_'+this.GridId, widths, 0, -1);
if (this.LeftCells != 0) {
this.SetHeights('left_header_'+this.GridId, this.GetHeights('header_'+this.GridId));
this.SetHeights('left_data_'+this.GridId, this.GetHeights('data_'+this.GridId));
if (this.HasFooter()) {
this.SetHeights('left_footer_'+this.GridId, this.GetHeights('footer_'+this.GridId));
}
// alert('setting left widths')
- this.SetWidths('left_header_'+this.GridId, [10], 0, 1);
- this.SetWidths('left_data_'+this.GridId, [10], 0, 1);
+// this.SetWidths('left_header_'+this.GridId, [30], 0, 1);
+// this.SetWidths('left_data_'+this.GridId, [30], 0, 1);
}
- this.HeadTable.style.width = '100%'
+// this.HeadTable.style.width = '100%'
if (this.HasFooter()) {
this.SetRowWidths('footer_'+this.GridId, widths);
this.FooterTable.style.width = '100%'
this.FooterHeight = this.FooterTable.offsetHeight;
this.FooterOuter.style.height = this.FooterHeight + 'px'
}
else {
this.FooterHeight = 0;
}
this.HeadHeight = this.HeadTable.offsetHeight;
this.DataHeight = this.DataTable.offsetHeight;
this.HeadOuter.style.height = (this.HeadHeight) + 'px'
if (this.LeftCells != 0) {
this.LeftWidth = Math.max(this.LeftHeaderTable.offsetWidth, this.LeftDataTable.offsetWidth)
this.LeftHeaderOuter.style.height = (this.HeadHeight) + 'px'
if (this.HasFooter()) {
this.LeftFooterOuter.style.height = (this.FooterHeight) + 'px'
this.LeftWidth = Math.max(this.LeftWidth, this.LeftFooterTable.offsetWidth);
}
}
this.MainInner.onscroll = function() {
this.TheGrid.SyncScroll()
}
this.MainOuter.style.width = 'auto'
if (document.all) {
this.DataScroller.onmousewheel = function(ev) {
var e = document.all ? window.event : ev;
this.TheGrid.MainInner.scrollTop += -e.wheelDelta/2
this.TheGrid.SyncScroll();
}
}
else {
this.DataScroller.addEventListener("DOMMouseScroll", function(ev) {
var e = document.all ? window.event : ev;
this.TheGrid.MainInner.scrollTop += e.detail*10
this.TheGrid.SyncScroll();
}, false);
}
+
+ return true;
}
GridScroller.prototype.SetRowWidths = function(table_id, widths, row, from, to)
{
if (!row) row = 0;
table = document.getElementById(table_id);
var inner_width = 0;
var final_width;
if (!from) from = 0;
if (!to) {
to = table.rows[row].cells.length;
}
else {
if (to < 0) {
to = table.rows[row].cells.length + to; // + because to is negative!
}
}
var min_offset = 0;
if (!table_id.match(/^left_/)) {
min_offset = this.LeftCells;
}
// alert('table: '+table_id+' min_offset: '+min_offset)
// alert('from: '+from+' to '+to)
for (var col=from; col < to; col++)
{
final_width = widths[col];
// alert('col: '+col)
if ( this.MinWidths[col+min_offset] && (final_width < this.MinWidths[col+min_offset])) {
// alert('correcting minwidth of '+col+': '+this.MinWidths[col]+ ' / '+final_width)
final_width = this.MinWidths[col+min_offset]
}
- table.rows[row].cells[col].innerHTML = '<div style="width: '+(final_width) +'px; overflow: hidden; background-color: inherit;">' + table.rows[row].cells[col].innerHTML + '</div>'
+ table.rows[row].cells[col].innerHTML = '<div style="width: '+(final_width) +'px; overflow: hidden; background-color: yellow;">' + table.rows[row].cells[col].innerHTML + '</div>'
// alert('setting '+widths[col]+' for col '+col)
// if (isNaN(final_width)) {
// alert('set '+table_id+'col '+col+' '+table.rows[0].cells[col].innerHTML+' to '+widths[col])
// }
table.rows[row].cells[col].style.width = final_width+'px';
// alert('set ('+col+')'+table.rows[0].cells[col].innerHTML+' to '+widths[col])
}
}
GridScroller.prototype.SetHeights = function(table_id, heights)
{
var table = document.getElementById(table_id);
for (var row=0; row<table.rows.length; row++)
{
- table.rows[row].cells[0].innerHTML = '<div style="height: '+(heights[row]) +'px; overflow: hidden; background-color: inherit;">' + table.rows[row].cells[0].innerHTML + '</div>'
+ var width = this.MinWidths[0] ? this.MinWidths[0] + 'px' : 'auto';
+ table.rows[row].cells[0].innerHTML = '<div style="display: table-cell; line-height: '+(heights[row])+'px; height: '+(heights[row]) +'px; width: '+width+' overflow: hidden; background-color: inherit;">' + table.rows[row].cells[0].innerHTML + '</div>'
table.rows[row].cells[0].style.height = heights[row]+'px';
// heights.push( table.rows[0].cells[0].offsetHeight )
// alert('get ('+row+')'+table.rows[0].cells[0].innerHTML+' height '+table.rows[0].cells[0].offsetHeight)
}
// return heights;
}
GridScroller.prototype.SetWidths = function(table_id, widths, from, to)
{
var table = document.getElementById(table_id);
- for (var row=0; row<table.rows.length; row++)
+ table.style.layout = 'fixed'
+ for (var row=0; row<1; row++)
{
this.SetRowWidths(table_id, widths, row, from, to)
}
table.style.width = '100%'
}
GridScroller.prototype.GetHeights = function(table_id)
{
var table = document.getElementById(table_id);
var heights = new Array();
var style,height,correction;
for (var row=0; row<table.rows.length; row++)
{
height = getDimensions( table.rows[row].cells[0] ).innerHeight
heights.push( height )
// alert('get ('+row+')'+table.rows[row].cells[0].innerHTML+' height (offset/client/computed (coorection)): '+table.rows[row].cells[0].offsetHeight + '/' + table.rows[row].cells[0].clientHeight + '/ ' +height + ' ('+correction+')')
}
return heights;
}
GridScroller.prototype.GetWidths = function(table_id)
{
var table = document.getElementById(table_id);
table.style.width = 'auto'
if (table.offsetWidth < document.body.clientWidth * 0.8) {
table.style.width = Math.round( document.body.clientWidth * 0.8 ) + 'px'
}
var widths = new Array();
var style;
if (!table.rows[0]) return [];
for (var col=0; col<table.rows[0].cells.length; col++)
{
- widths.push( table.rows[0].cells[col].clientWidth )
+ widths.push( table.rows[0].cells[col].offsetWidth )
// alert('get ('+col+')'+table.rows[0].cells[col].innerHTML+' width '+table.rows[0].cells[col].offsetWidth)
}
return widths;
}
GridScroller.prototype.GetAutoSize = function()
{
this.MainOuter.style.width = 'auto'
var w = this.MainInner.offsetWidth;
var h = document.body.clientHeight;
var pos = findPos(this.MainOuter);
var dim = getDimensions(this.MainOuter);
h -= pos[1] + dim.padding[0] + dim.padding[2] + dim.borders[0] + dim.borders[2] + this.BottomOffset;
return [w,h]
}
GridScroller.prototype.AutoResize = function()
{
var obj = this;
if (this.ResizeHappening && this.ResizeTimer) {
window.clearTimeout(this.ResizeTimer);
this.ResizeTimer = false;
}
this.ResizeHappening = true;
this.ResizeTimer = window.setTimeout(function() {
obj.Resize( obj.GetAutoSize() );
obj.ResizeHappening = false;
// alert('resized')
}, 300)
}
GridScroller.prototype.Resize = function(w,h)
{
+ Profile('Resize 0')
if (typeof(w) == 'object') {
h = w[1];
w = w[0];
}
if (w) this.Width = w;
if (h) this.Height = h;
pos = findPos(this.Dot)
this.MainOuter.style.height = (this.Height)+'px'
this.MainOuter.style.width = (this.Width)+'px'
- var data_width = this.HeadTable.offsetWidth;
+ var data_width = this.DataTable.offsetWidth + this.LeftWidth;
var data_height = this.DataHeight + this.HeadHeight + this.FooterHeight;
scroller_height = data_width > this.Width ? this.ScrollerH : 0;
scroller_width = data_height > this.Height - scroller_height ? this.ScrollerW : 0;
scroller_height = data_width > this.Width - scroller_width ? this.ScrollerH : 0;
// alert('min: '+this.MinDataWidth+' pos: '+pos[0]+','+pos[1]+' scroller W x H: '+scroller_width+' x '+scroller_height+' will resize to '+this.Width+' x '+this.Height+' data: '+data_width+' x '+data_height)
- this.TheGrid.style.width = (this.Width - scroller_width) + 'px';
- this.TheGrid.style.height = (this.Height - scroller_height) + 'px';
-
this.TheGrid.style.left = (pos[0])+ 'px'
this.TheGrid.style.top = (pos[1]) + 'px'
this.HeadOuter.style.width = (this.Width -scroller_width -this.LeftWidth)+ 'px';
this.DataOuter.style.width = (this.Width -scroller_width -this.LeftWidth)+ 'px';
+ Profile('Resize 0.3')
+
if (this.LeftCells != 0) {
this.LeftHeaderOuter.style.width = (this.LeftWidth) + 'px'
this.LeftDataOuter.style.width = (this.LeftWidth) + 'px'
if (this.HasFooter()) {
this.LeftFooterOuter.style.width = (this.LeftWidth) + 'px'
}
}
+ Profile('Resize 1')
+
if (this.HasFooter()) {
this.FooterOuter.style.width = (this.Width -scroller_width -this.LeftWidth)+ 'px';
}
+ Profile('Resize 1.1')
+
if (data_height < this.Height - scroller_height) {
var adjusted_data_height = data_height - this.HeadHeight - this.FooterHeight
}
else {
var adjusted_data_height = this.Height - this.HeadHeight - this.FooterHeight - scroller_height
}
+
+ Profile('Resize 1.2')
+
this.DataOuter.style.height = adjusted_data_height + 'px'
if (this.LeftCells != 0) {
this.LeftDataOuter.style.height = adjusted_data_height + 'px'
}
+ Profile('Resize 2')
+
this.MainScroller.style.width = (this.HeadTable.offsetWidth + this.LeftWidth)+'px'
this.MainScroller.style.height = ( this.DataTable.offsetHeight + this.HeadHeight + this.FooterHeight)+'px'
+
+
+ Profile('Resize 0.1')
+
+ this.TheGrid.style.width = (this.Width - scroller_width) + 'px';
+ this.TheGrid.style.height = (this.Height - scroller_height) + 'px';
+
+ Profile('Resize 0.2')
+
+ Profile('Full resize')
}
GridScroller.prototype.SyncScroll = function()
{
this.HeadScroller.scrollLeft = this.MainInner.scrollLeft;
this.DataScroller.scrollLeft = this.MainInner.scrollLeft;
if (this.HasFooter()) {
this.FooterScroller.scrollLeft = this.MainInner.scrollLeft;
}
this.DataScroller.scrollTop = this.MainInner.scrollTop;
if (this.LeftCells != 0) {
this.LeftDataScroller.scrollTop = this.MainInner.scrollTop;
}
}
GridScroller.prototype.GetHTML = function()
{
w = this.Width;
h = this.Height;
var o = '';
o += this.CreateScroller( '<div id="main_scroller_'+this.GridId+'" style="background-color: inherit; position: relative; width: auto;"><img src="'+this.Spacer+'" id="dot_'+this.GridId+'" width="200" height="200"><br/><br/></div>', 100, 100, 'main_'+this.GridId, false, 1 );
o += '<div id="'+this.GridId+'" class="grid-container" style="background-color: inherit; top: 0px; visibility: hidden; z-index: 10; width: auto; height: '+300+'px; position: absolute; overflow: hidden;">';
var header = this.CreateScroller( this.CreateTable( this.GetHeaderCells(), 'header_'+this.GridId), 100, 10, 'header_'+this.GridId, true, 5 )
var data = this.CreateScroller( this.CreateTable( this.GetDataCells(), 'data_'+this.GridId ), 100, 10, 'data_'+this.GridId, true, 5 )
var footer = this.HasFooter() ? this.CreateScroller( this.CreateTable( this.GetFooterCells(), 'footer_'+this.GridId ), 100, 10, 'footer_'+this.GridId, true, 5 ) : '';
if (this.LeftCells != 0) {
var left_header = this.CreateScroller( this.CreateTable( this.GetLeftHeader(), 'left_header_'+this.GridId), 20, 10, 'left_header_'+this.GridId, true, 5 )
var left_data = this.CreateScroller( this.CreateTable( this.GetLeftData(), 'left_data_'+this.GridId), 20, 10, 'left_data_'+this.GridId, true, 5 )
var left_footer = this.CreateScroller( this.CreateTable( this.GetLeftFooter(), 'left_footer_'+this.GridId), 20, 10, 'left_footer_'+this.GridId, true, 5 )
o += '<table style="width: 100%; border-collapse: collapse;">'
- o += '<tr><td style="vertical-align: top; margin: 0px; padding: 0px">' + left_header + '</td>'
+ o += '<tr><td style="vertical-align: top; margin: 0px; padding: 0px;">' + left_header + '</td>'
o += '<td style="vertical-align: top; margin: 0px; padding: 0px;">' + header + '</td></tr>'
o += '<tr><td style="vertical-align: top; margin: 0px; padding: 0px">' + left_data + '</td>'
o += '<td style="vertical-align: top; margin: 0px; padding: 0px">' + data + '</td></tr>'
if (this.HasFooter()) {
o += '<tr><td style="vertical-align: top; margin: 0px; padding: 0px">' + left_footer + '</td>'
o += '<td style="vertical-align: top; margin: 0px; padding: 0px">' + footer + '</td></tr>'
}
o += '</table>'
}
else {
o += header + data + footer;
}
o += '</div>';
return o
}
GridScroller.prototype.HasFooter = function()
{
return (this.Footer != false)
}
GridScroller.prototype.CreateTable = function(content, id)
{
- return '<table style="width: 100%;" id="'+id+'">'+content+'</table>';
+ return '<table style="width: 100%" id="'+id+'">'+content+'</table>';
}
GridScroller.prototype.CreateScroller = function(content, w, h, id, hidden, z)
{
if (hidden) {
overflow = 'hidden'
}
else {
overflow = 'auto'
}
if (!z) {
z = 0;
}
if (id && id != '') {
outer_id = 'id="outer_'+id+'"';
inner_id = 'id="inner_'+id+'"';
}
else {
outer_id = '';
inner_id = '';
}
var o = '';
o += '<div '+outer_id+' class="scroller-outer" style="z-index: '+z+'; width: '+w+'px; height: '+h+'px;">'
o += '<div '+inner_id+' class="scroller-inner" style="z-index: '+z+'; width: 100%; height: 100%; overflow: '+overflow+'; position: relative">'
o += content
o += '</div></div>'
return o
}
GridScroller.prototype.GetLeftHeader = function()
{
var o = '';
for (var row in this.Header) {
o +='<tr class="grid-header-row grid-header-row-'+row+'">'
for (var col=0; col<this.LeftCells; col++) {
- o += '<td class="grid-header-'+col+'">'+this.Header[row][col]+'</td>'
+ width = this.MinWidths[col] ? this.MinWidths[col] + 'px' : 'auto';
+ o += '<td class="grid-header-col-'+col+'"><div class="grid-cell-div" style="width: '+width+';">'+this.Header[row][col]+'</div></td>'
}
- o += '<td class="grid-header-last-cell" style="width: auto"><img src="'+this.Spacer+'" width="1" height="1" alt=""/></td>'
o += '</tr>'
}
return o
-
- var o = '';
-
- o += '<tr class="grid-header-row">'
- for (var col=0; col<this.LeftCells; col++) {
- o += '<td class="grid-header-col-'+col+'">'+this.Header[col]+'</td>'
- }
- o += '</tr>'
-
- return o
}
GridScroller.prototype.GetLeftData = function()
{
var o = '';
var even = false;
for (var row in this.Data) {
var id = this.IDs[row] ? 'id="left_'+this.IDs[row]+'"' : '';
o += even ? '<tr class="grid-row grid-row-even grid-row-'+row+'" '+id+'>' : '<tr class="grid-row grid-row-'+row+'" '+id+'>'
even = !even;
for (var col=0; col<this.LeftCells; col++) {
- o += '<td class="grid-col-'+col+'">'+this.Data[row][col]+'</td>'
+ width = this.MinWidths[col] ? this.MinWidths[col] + 'px' : 'auto';
+ o += '<td class="grid-col-'+col+'"><div class="grid-cell-div" style="width: '+width+';">'+this.Data[row][col]+'</div></td>'
}
o += '</tr>'
}
return o
}
GridScroller.prototype.GetLeftFooter = function()
{
var o = '';
if (this.HasFooter()) {
o += '<tr class="grid-footer-row">'
for (var col=0; col<this.LeftCells; col++) {
- o += '<td class="grid-footer-col-'+col+'">'+this.Footer[col]+'</td>'
+ width = this.MinWidths[col] ? this.MinWidths[col] + 'px' : 'auto';
+ o += '<td class="grid-footer-col-'+col+'"><div class="grid-cell-div" style="width: '+width+';">'+this.Footer[col]+'</div></td>'
}
o += '</tr>'
}
return o
}
GridScroller.prototype.GetHeaderCells = function()
{
var o = '';
for (var row in this.Header) {
o +='<tr class="grid-header-row grid-header-row-'+row+'">'
for (var col=this.LeftCells; col<this.Header[row].length; col++) {
- o += '<td class="grid-header-'+col+'">'+this.Header[row][col]+'</td>'
+ width = this.MinWidths[col] ? this.MinWidths[col] + 'px' : 'auto';
+ o += '<td class="grid-header-col-'+col+'"><div class="grid-cell-div" style="width: '+width+';">'+this.Header[row][col]+'</div></td>'
}
- o += '<td class="grid-header-last-cell" style="width: auto"><img src="'+this.Spacer+'" width="1" height="1" alt=""/></td>'
+ o += '<td class="grid-header-last-cell"><img src="'+this.Spacer+'" width="1" height="1" alt=""/></td>'
o += '</tr>'
}
return o
/*var o = '<tr class="grid-header-row">'
for (var col=this.LeftCells; col<this.Header.length; col++) {
o += '<td class="grid-header-col-'+col+'">'+this.Header[col]+'</td>'
}
o += '<td class="grid-header-last-cell" style="width: auto"><img src="'+this.Spacer+'" width="1" height="1" alt=""/></td>'
o += '</tr>'
return o*/
}
GridScroller.prototype.GetDataCells = function()
{
var o = '';
var even = false;
+ var width;
+
for (var row in this.Data) {
var id = this.IDs[row] ? 'id="'+this.IDs[row]+'"' : '';
o += even ? '<tr class="grid-row grid-row-even grid-row-'+row+'" '+id+' sequence="'+(row+1)+'">' : '<tr class="grid-row grid-row-'+row+'" '+id+' sequence="'+(row+1)+'">'
even = !even;
for (var col=this.LeftCells; col<this.Data[row].length; col++) {
- o += '<td class="grid-col-'+col+'">'+this.Data[row][col]+'</td>'
+ width = this.MinWidths[col] ? this.MinWidths[col] + 'px' : 'auto';
+ o += '<td class="grid-col-'+col+'"><div class="grid-cell-div" style="width: '+width+';">'+this.Data[row][col]+'</div></td>'
}
- o += '<td class="grid-data-last-cell" style="width: auto"><img src="'+this.Spacer+'" width="1" height="1" alt=""/></td>'
+ o += '<td class="grid-data-last-cell"><img src="'+this.Spacer+'" width="1" height="1" alt=""/></td>'
o += '</tr>'
}
return o
}
GridScroller.prototype.GetFooterCells = function()
{
var o = '<tr class="grid-footer-row">'
for (var col=this.LeftCells; col<this.Footer.length; col++) {
+ width = this.MinWidths[col] ? this.MinWidths[col] + 'px' : 'auto';
o += '<td class="grid-footer-col-'+col+'">'+this.Footer[col]+'</td>'
}
- o += '<td class="grid-footer-last-cell" style="width: auto"><img src="'+this.Spacer+'" width="1" height="1" alt=""/></td>'
+ o += '<td class="grid-footer-last-cell" style="width: 100%"><img src="'+this.Spacer+'" width="1" height="1" alt=""/></td>'
o += '</tr>'
return o
}
GridScroller.prototype.SetData = function(a_data)
{
this.Data = a_data;
}
GridScroller.prototype.SetHeader = function(a_header)
{
this.Header = a_header;
}
GridScroller.prototype.SetFooter = function(a_footer)
{
this.Footer = a_footer;
}
\ No newline at end of file
Property changes on: branches/unlabeled/unlabeled-1.1.2/core/admin_templates/js/grid_scroller.js
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.1.2.8
\ No newline at end of property
+1.1.2.9
\ No newline at end of property

Event Timeline