jspreadsheet / jspreadsheet/ce
The position of Frozen columns is incorrect if .hideIndex() is used.
Open
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 7.2k
- Forks
- 890
- PR merge metrics
- No merged PRs in 30d
Description
Hi,
While working on my requirement I observed that the position of the frozen column is not set correctly if your index number column is hidden. I found the solution, posted it below.
obj.updateFreezePosition = function() {
scrollLeft = obj.content.scrollLeft;
var width = 0;
if (scrollLeft > 50) {
for (var i = 0; i < obj.options.freezeColumns; i++) {
if (i > 0) {
width += parseInt(obj.options.columns[i-1].width);
}
obj.headers[i].classList.add('jexcel_freezed');
obj.headers[i].style.left = width + 'px';
for (var j = 0; j < obj.rows.length; j++) {
if (obj.rows[j] && obj.records[j][i]) {
var indexColumnWidth = (obj.table.classList.contains('jexcel_hidden_index') ? 1 : 51)
var shifted = (scrollLeft + (i > 0 ? obj.records[j][i-1].style.width : 0)) - indexColumnWidth + 'px';
obj.records[j][i].classList.add('jexcel_freezed');
obj.records[j][i].style.left = shifted;
}
}
}
} else {
for (var i = 0; i < obj.options.freezeColumns; i++) {
obj.headers[i].classList.remove('jexcel_freezed');
obj.headers[i].style.left = '';
for (var j = 0; j < obj.rows.length; j++) {
if (obj.records[j][i]) {
obj.records[j][i].classList.remove('jexcel_freezed');
obj.records[j][i].style.left = '';
}
}
}
}
// Place the corner in the correct place
obj.updateCornerPosition();
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the updateFreezePosition entry point shown in the issue and reproduce the frozen-column behavior with .hideIndex() enabled. Compare the column positions when the index is visible and hidden, using the proposed logic as context; the work is done when frozen columns and the corner remain correctly positioned in both cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- frontend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100