allow explicit height for Table.

This commit is contained in:
Christopher Jeffrey 2015-04-04 02:57:35 -07:00
parent d13774814d
commit 85f8d4f4b7
1 changed files with 20 additions and 5 deletions

View File

@ -7146,7 +7146,7 @@ function Table(options) {
// Regular tables do not get custom height (this would
// require extra padding). Maybe add in the future.
delete options.height;
// delete options.height;
Box.call(this, options);
@ -7288,7 +7288,8 @@ Table.prototype.render = function() {
, yl = coords.yl
, rx
, ry
, i;
, i
, over;
var dattr = this.sattr(this.style)
, hattr = this.sattr(this.style.header)
@ -7382,13 +7383,15 @@ Table.prototype.render = function() {
}
// Draw internal borders.
for (ry = 1; ry < self.rows.length * 2; ry++) {
height = this.position.height != null ? this.height : this.rows.length * 2;
for (ry = 1; ry < height; ry++) {
if (!lines[yi + ry]) break;
over = this.position.height != null && ry >= this.rows.length * 2;
rx = 0;
self._maxes.slice(0, -1).forEach(function(max, i) {
rx += max;
if (!lines[yi + ry][xi + rx + 1]) return;
if (ry % 2 !== 0) {
if (ry % 2 !== 0 || over) {
if (self.options.fillCellBorders) {
var lbg = (ry <= 2 ? hattr : cattr) & 0x1ff;
lines[yi + ry][xi + ++rx][0] = (battr & ~0x1ff) | lbg;
@ -7403,7 +7406,7 @@ Table.prototype.render = function() {
rx = 1;
self._maxes.forEach(function(max, i) {
while (max--) {
if (ry % 2 === 0) {
if (ry % 2 === 0 && !over) {
if (!lines[yi + ry]) break;
if (!lines[yi + ry][xi + rx + 1]) break;
if (self.options.fillCellBorders) {
@ -7420,6 +7423,18 @@ Table.prototype.render = function() {
});
}
// Keep drawing if we have a higher height.
rx = 0;
if (over) {
ry = height - 1;
self._maxes.slice(0, -1).forEach(function(max, i) {
rx += max;
if (!lines[yi + ry][xi + rx + 1]) return;
lines[yi + ry][xi + ++rx][0] = battr;
lines[yi + ry][xi + rx][1] = '\u2534'; // '┴'
});
}
return coords;
};