Skip to content

Commit

Permalink
fix height calculation in basic renderer
Browse files Browse the repository at this point in the history
  • Loading branch information
olifolkerd committed Jul 23, 2023
1 parent 87980d5 commit 191b2a9
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 51 deletions.
68 changes: 43 additions & 25 deletions dist/js/tabulator_esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -21932,82 +21932,100 @@ class ColumnManager extends CoreFeature {
class BasicVertical extends Renderer{
constructor(table){
super(table);

this.verticalFillMode = "fill";

this.scrollTop = 0;
this.scrollLeft = 0;

this.scrollTop = 0;
this.scrollLeft = 0;
}

clearRows(){
var element = this.tableElement;

// element.children.detach();
while(element.firstChild) element.removeChild(element.firstChild);

element.scrollTop = 0;
element.scrollLeft = 0;

element.style.minWidth = "";
element.style.minHeight = "";
element.style.display = "";
element.style.visibility = "";
}

renderRows() {
var element = this.tableElement,
onlyGroupHeaders = true,
tableFrag = document.createDocumentFragment();

this.rows().forEach((row, index) => {
tableFrag = document.createDocumentFragment(),
rows = this.rows();

rows.forEach((row, index) => {
this.styleRow(row, index);
row.initialize(true);

row.initialize(false, true);
if (row.type !== "group") {
onlyGroupHeaders = false;
}

tableFrag.appendChild(row.getElement());
});

element.appendChild(tableFrag);


rows.forEach((row) => {
row.rendered();

if(!row.heightInitialized) {
row.calcHeight(true);
}
});

rows.forEach((row) => {
if(!row.heightInitialized) {
row.setCellHeight();
}
});



if(onlyGroupHeaders){
element.style.minWidth = this.table.columnManager.getWidth() + "px";
}else {
element.style.minWidth = "";
}
}


rerenderRows(callback){
this.clearRows();

if(callback){
callback();
}

this.renderRows();
}

scrollToRowNearestTop(row){
var rowTop = Helpers.elOffset(row.getElement()).top;

return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));
}

scrollToRow(row){
var rowEl = row.getElement();

this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;
}

visibleRows(includingBuffer){
return this.rows();
}

}

class VirtualDomVertical extends Renderer{
Expand Down
2 changes: 1 addition & 1 deletion dist/js/tabulator_esm.js.map

Large diffs are not rendered by default.

68 changes: 43 additions & 25 deletions src/js/core/rendering/renderers/BasicVertical.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,80 +4,98 @@ import Helpers from '../../tools/Helpers.js';
export default class BasicVertical extends Renderer{
constructor(table){
super(table);

this.verticalFillMode = "fill";

this.scrollTop = 0;
this.scrollLeft = 0;

this.scrollTop = 0;
this.scrollLeft = 0;
}

clearRows(){
var element = this.tableElement;

// element.children.detach();
while(element.firstChild) element.removeChild(element.firstChild);

element.scrollTop = 0;
element.scrollLeft = 0;

element.style.minWidth = "";
element.style.minHeight = "";
element.style.display = "";
element.style.visibility = "";
}

renderRows() {
var element = this.tableElement,
onlyGroupHeaders = true,
tableFrag = document.createDocumentFragment();

this.rows().forEach((row, index) => {
tableFrag = document.createDocumentFragment(),
rows = this.rows();

rows.forEach((row, index) => {
this.styleRow(row, index);
row.initialize(true);

row.initialize(false, true);
if (row.type !== "group") {
onlyGroupHeaders = false;
}

tableFrag.appendChild(row.getElement());
});

element.appendChild(tableFrag);


rows.forEach((row) => {
row.rendered();

if(!row.heightInitialized) {
row.calcHeight(true);
}
});

rows.forEach((row) => {
if(!row.heightInitialized) {
row.setCellHeight();
}
});



if(onlyGroupHeaders){
element.style.minWidth = this.table.columnManager.getWidth() + "px";
}else{
element.style.minWidth = "";
}
}


rerenderRows(callback){
this.clearRows();

if(callback){
callback();
}

this.renderRows();
}

scrollToRowNearestTop(row){
var rowTop = Helpers.elOffset(row.getElement()).top;

return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));
}

scrollToRow(row){
var rowEl = row.getElement();

this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;
}

visibleRows(includingBuffer){
return this.rows();
}

}

0 comments on commit 191b2a9

Please sign in to comment.