Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scrolling in TurboTable with 'virtualScroll' and 'lazy' enabled leads to jumping #5193

Closed
thojo opened this issue Feb 21, 2018 · 7 comments
Closed
Assignees
Labels
Type: Bug Issue contains a bug related to a specific component. Something about the component is not working
Milestone

Comments

@thojo
Copy link

thojo commented Feb 21, 2018

I'm submitting a ...

[x] bug report
[ ] feature request/primefaces/primeng/wiki/Roadmap
[ ] support request

Plunkr Case
http://plnkr.co/NSmYj9A3GGeQp82TzROD

Current behavior
Row height is hard coded in TurboTable:

let pageHeight = 28 * this.dt.rows;

This leads to jumps while scrolling (and rows get lazy loaded) with virtualScroll and lazy enabled when the row height is not 28px. See Plunkr. The problem is also present in the official docs with e.g. Firefox because the the row height differs by 1px compared with Chrome. Setting virtualRowHeight has no impact (perhaps virtualRowHeight should be used instead of the hard coded 28px).

Expected behavior
No junmping when rows lazily get loaded.

Minimal reproduction of the problem with instructions
Change row height or use demo from docs with Firefox: Virtual Scroll - 250K Rows

What is the motivation / use case for changing the behavior?
Annoying behaviour.

Please tell us about your environment:

  • PrimeNG version: 5.2.0

  • Browser: Chrome 64 (not for default row height), Firefox 58, ...

@Ponsivakumar
Copy link

I'm also facing the same issue when migrating from p-datatable to p-table. The same is working fine in p-datatable.

@nickproquro
Copy link

I'm testing this component with large data sets, and missing rows when using virtual scroll and lazy loading.
When changing the pageheigth in table.js it works fine on a desktop.
When responsive is enabled, row height can differ using a smaller device.

@cagataycivici cagataycivici self-assigned this Apr 18, 2018
@cagataycivici cagataycivici added the Type: Bug Issue contains a bug related to a specific component. Something about the component is not working label Apr 18, 2018
@cagataycivici cagataycivici added this to the 5.2.5 milestone Apr 18, 2018
@cagataycivici
Copy link
Member

Issue is fixed, also for smooth scrolling updated the docs where tr should also get a height.

<p-table [columns]="cols" [value]="virtualCars" [scrollable]="true" [rows]="20" scrollHeight="200px" [virtualRowHeight]="30"
    [virtualScroll]="true" (onLazyLoad)="loadDataOnScroll($event)" [lazy]="true" [totalRecords]="totalRecords">
    <ng-template pTemplate="header" let-columns>
        <tr>
            <th *ngFor="let col of columns">
                {{col.header}}
            </th>
        </tr>
    </ng-template>
    <ng-template pTemplate="body" let-rowData let-columns="columns">
        <tr style="height:30px">
            <td *ngFor="let col of columns">
                {{rowData[col.field]}}
            </td>
        </tr>
    </ng-template>
</p-table>

cagataycivici pushed a commit that referenced this issue Apr 25, 2018
ldauvilaire added a commit to ldauvilaire/primeng that referenced this issue Jun 16, 2018
* Fixed primefaces#5577

* Fixed primefaces#5168

* Fixed  primefaces#5270

* Fixed primefaces#5184

* Fixed primefaces#5200

* Fixed primefaces#5274

* Fixed invalid closing tags in table docs example

* Fixed primefaces#5250

* Fixed primefaces#5121

* Refactor on ScrollPanel demo

Fixed primefaces#5532

* Fixed primefaces#5124

* Fixed primefaces#5196

* Fixed primefaces#5207

* Fixed primefaces#5174

* Fixed primefaces#5282

* Fixed primefaces#5211

* Docs for multiselect change detection

* Fixed primefaces#5218

* Fixed primefaces#5169

* Fixed primefaces#5167

* Fixed primefaces#5144

* Fixed #primefaces#5158

* Fixed primefaces#5148

* Fixed primefaces#5123

* set class ui-state-disabled when component is disabled

* Fixed primefaces#5131

* [Fix primefaces#5598] Disable component-class-suffix rule.

As Component suffix is never used in component classes in the whole project,
we expect this rule disabled in tslint.

* [Fix primefaces#5598] ignore no-inferrable-types rule on class properties.

As all class properties are typed, even the obvious ones
(e.g: inline: boolean = false;)
And those can be considered as documentation for an open-source project,
Then we should ignore this rule on class components.

* fix trailing comma

* Fixed primefaces#5159

* Replaced plunkr with stackblitz

* Fixed primefaces#5102

* Fixed primefaces#5193

* Fixed primefaces#5469

* Fixed primefaces#5632

* Refactor primefaces#5549

* Fixed primefaces#5633

* Version update

* Fix demo

* Fixed primefaces#5634

* Fixed primefaces#5503

* Fixed demo source display

* Add doc for hideDelay

* Use setTimeout within runOutsideAngular

* Fixed primefaces#5499

* Fixed primefaces#5637

* Set version

* AOT fixes

* New iteration

* Version at footer

* Fixed primefaces#5656

* Demo fix

* Fix table component only applying the last filter before timeout (primefaces#5660)

* Fixed primefaces#5664

* Update text

* Update text

* Delete ng-conf2018 section

* Fixed primefaces#5672

* Fixed primefaces#5673

* Add ui-multiselect-open class to ui-multiselect and typo fix for multiselect documentation

* Fixed 5687

* Fixed primefaces#5693

* Fixed primefaces#5697

* Fixed primefaces#5699

* Fixed primefaces#5702

* Add style classes for icons

* Set version

* Fix AOT issue

* New version

* Fixed quote

* Add Harmony

* Doc update

* Fixed primefaces#5731

* Fixed primefaces#5705

* Names for icons

* Fixed primefaces#4409

* Add designer to homepage

* Firefox button fix

* Fixed primefaces#5664

* Fixed primefaces#5729

* Fixed primefaces#5744

* Set version

* Change the position of }

* Fixed #primefaces#5758

* Polyfill update

* Demo cosmetics to add margins since Angular 6 has preserveWhiteSpace as false by default now

* Ignore angular.json

* Set version

* New dev iteration

* Version

* Change logo

* Change favicon

* Change logo

* Fix URL

* Syntax Error

Interface syntax Error double curly braces {{ }}

* Fixed primefaces#5772

* Initiated new TreeTable

* Placeholders for new TreeTable demos

* Color for toggler

* update progress spinner link

* Pagination and Sections for new TreeTable

* Single and Multi sort for new TreeTable

* Update state on node toggle

* Lazy loading TreeTable

* Refactor sort demo

* Loading icon for Lazy TreeTable

* Lazy children loading demo for new TreeTable

* Column grouping for new TreeTable

* Demo code refactor

* Added colgroup template support

* Responsive demo for new TreeTable

* Initiated scrollable for new TreeTable

* Remove comma

* Demo update for colgroup

* More data for TreeTable demo

* Implemented scrolling for new TreeTable

* Remove typo

* Row and Cell based styling for new TreeTable

* Cosmetics

* Implemented resizable columns for new TreeTable

* Fixed primefaces#5804

* Column reordering for new TreeTable

* Remove "new" badges from the older components

* Cosmetics

* Toggleable columns for new TreeTable

* Selection for new TreeTable

* Source code for selection demo

* Name refactor for TreeTable directives

* ContextMenu integration for new TreeTable

* Implemented checkbox selection for the new TreeTable

* Doc update

* Header checkbox support for new TreeTable to toggle all nodes

* Incell editing for new TreeTable

* Started documentation for new TreeTable

* Documentation fixes

* Documentation update for TreeTable

* Documentation for new TreeTable

* Fixed typos

* Fixed primefaces#5446

* Fixed primefaces#5706

* Remove unused section

* Fixed primefaces#5657

* Fixed primefaces#5618

* Cosmetics for Demo

* Set version

* New iteration

* Initiated PrimeIcons for PrimeNG

* Fixed primefaces#3746

* Use PrimeIcons for the remaining components

* Updated demos to use PrimeIcons

* Cosmetic changes due to new PrimeIcons

* Bigger loader icon

* Doc update

* Issue template update

* Fixed primefaces#5853

* Fixed primefaces#5854

* Fixed primefaces#5829

* Chart doc typos. Fix for set sizing in responsive mode.

* Made width also work in responsive mode, then forgot to update docs.

* Fixes the turbo table scrollbar overlapping the paginator.

* accessibility(accordion): correctly using of role attribute

* ChartJS generateLegend need to return the HTML string.

* Documentation for PrimeIcons

* Demo fixes

* Fixed primefaces#5751

* Fixed icons

* Convert NodeList to array

* Fixed primefaces#5847

* Add ecuador

* Update version at footer

* Doc update

* Set version

* New dev version

* Fixed primefaces#5867

* Fixed primefaces#5211

* Readme update

* Showcase split button fix

* Fixed primefaces#5882

* PrimeIcons fix

* Remove deprecated components from demo menu

* PrimeIcons fix

* Remove unused property

* Fixed primefaces#5387

* Fixed primefaces#5368

* Fixed primefaces#5359

* Fixed primefaces#5329

* Fixed icon name

* Fixed primefaces#5891

* Fixed primefaces#4124 - Maximizable Dialog

* Block scroll

* Update to new PrimeIcons

* Cosmetics

* Fixed primefaces#5893

* Doc update

* Fixed primefaces#5348

* Refactor

* Animation for dialog maximize

* Demo update

* Version at footer

* Remove deprecated lazy prop from tabview

* Set version

* New version
@Defaultguy
Copy link

I'm facing this issue for a multiselect. When I introduce virtualscroll for a smoother navigation, as soon as I start searching in the input area, the non relevant results are only hidden. So for example if I search a result, which is at the bottom of the list, this won't be shown as first.

@niran-manandhar
Copy link

@cagataycivici jumping issue still exists even after tr gets a height.

@dktjsp
Copy link

dktjsp commented Jan 15, 2021

Still not fixed !

@rodolfoTiRb
Copy link

rodolfoTiRb commented Feb 23, 2022

I'm looking further for a fix, any news people ? Still facing the P-table tag with the virtualscroll and multiselection line presenting only the first line. Can anyone bring me some light on that ? Apreciated

Btw< Ng-content is brought empty in inspect tool.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Bug Issue contains a bug related to a specific component. Something about the component is not working
Projects
None yet
Development

No branches or pull requests

8 participants