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

Solar device list page can be very slow to load #1848

Open
blammit opened this issue Jan 16, 2025 · 1 comment · May be fixed by #1880
Open

Solar device list page can be very slow to load #1848

blammit opened this issue Jan 16, 2025 · 1 comment · May be fixed by #1880
Assignees
Milestone

Comments

@blammit
Copy link
Contributor

blammit commented Jan 16, 2025

See https://victrondevelopment.slack.com/archives/C020QG3JVEW/p1736945953241439

SolarDeviceListPage is using Column+Repeater for trackers, as a convenience to include custom headers for "PV chargers" vs "PV inverters" in the view, but this is likely causing the performance issues reported in the thread (with e.g. 30 devices), because:

  1. Non-displayed delegates are rendered
  2. Each delegate uses ListQuantityGroup, which has its own inefficiencies, as per Avoid rebuilding models for ListQuantityGroup and ListTextGroup  #1338

Just fixing 1) should make a noticeable difference in a long list, but it would be best to fix 2) as well.

To reproduce this in mock mode on device, set the configuration to show at least 20 trackers.

@blammit blammit added this to the Version 1.1.0 milestone Jan 16, 2025
@blammit blammit self-assigned this Jan 16, 2025
@blammit
Copy link
Contributor Author

blammit commented Jan 16, 2025

This is dependent on #1574, which will rework the solar device list.

blammit added a commit that referenced this issue Jan 23, 2025
Add SolarInputModel to store the data for each tracker and PV
inverter entry in the list. This allows the ListView to just create
one list item for each entry in the model, instead of creating complex
delegates with Column+Repeater objects when showing multiple trackers
for a single solarcharger/multi/inverter service. Also, the model
sorts its items to allow the use of ListView sections for creating the
column headers.

This makes the list load and scroll more quickly, especially when it
contains a large number of trackers.

Also, remove the tracker list from SolarDevice.qml as it is only
required in specific pages, and those can load their own SolarTracker
objects when needed.

Part of #1848
blammit added a commit that referenced this issue Jan 27, 2025
Add SolarInputModel to store the data for each tracker and PV
inverter entry in the list. This allows the ListView to just create
one list item for each entry in the model, instead of creating complex
delegates with Column+Repeater objects when showing multiple trackers
for a single solarcharger/multi/inverter service. Also, the model
sorts its items to allow the use of ListView sections for creating the
column headers.

This makes the list load and scroll more quickly, especially when it
contains a large number of trackers.

Also, remove the tracker list from SolarDevice.qml as it is only
required in specific pages, and those can load their own SolarTracker
objects when needed.

Part of #1848
blammit added a commit that referenced this issue Jan 27, 2025
Add SolarInputModel to store the data for each tracker and PV
inverter entry in the list. This allows the ListView to just create
one list item for each entry in the model, instead of creating complex
delegates with Column+Repeater objects when showing multiple trackers
for a single solarcharger/multi/inverter service. Also, the model
sorts its items to allow the use of ListView sections for creating the
column headers.

This makes the list load and scroll more quickly, especially when it
contains a large number of trackers.

Also, remove the tracker list from SolarDevice.qml as it is only
required in specific pages, and those can load their own SolarTracker
objects when needed.

Fixes #1848
blammit added a commit that referenced this issue Jan 28, 2025
Add SolarInputModel to store the data for each tracker and PV
inverter entry in the list. This allows the ListView to just create
one list item for each entry in the model, instead of creating complex
delegates with Column+Repeater objects when showing multiple trackers
for a single solarcharger/multi/inverter service. Also, the model
sorts its items to allow the use of ListView sections for creating the
column headers.

This makes the list load and scroll more quickly, especially when it
contains a large number of trackers.

Also, remove the tracker list from SolarDevice.qml as it is only
required in specific pages, and those can load their own SolarTracker
objects when needed.

Rename SolarDeviceListPage to SolarInputListPage, as it shows a list
of trackers and PV inverters, rather than a list of SolarDevice items.

Fixes #1848
blammit added a commit that referenced this issue Jan 28, 2025
Add SolarInputModel to store the data for each tracker and PV
inverter entry in the list. This allows the ListView to just create
one list item for each entry in the model, instead of creating complex
delegates with Column+Repeater objects when showing multiple trackers
for a single solarcharger/multi/inverter service. Also, the model
sorts its items to allow the use of ListView sections for creating the
column headers.

This makes the list load and scroll more quickly, especially when it
contains a large number of trackers.

Also, remove the tracker list from SolarDevice.qml as it is only
required in specific pages, and those can load their own SolarTracker
objects when needed.

Rename SolarDeviceListPage to SolarInputListPage, as it shows a list
of trackers and PV inverters, rather than a list of SolarDevice items.

Fixes #1848
blammit added a commit that referenced this issue Jan 28, 2025
Add SolarInputModel to store the data for each tracker and PV
inverter entry in the list. This allows the ListView to just create
one list item for each entry in the model, instead of creating complex
delegates with Column+Repeater objects when showing multiple trackers
for a single solarcharger/multi/inverter service. Also, the model
sorts its items to allow the use of ListView sections for creating the
column headers.

This makes the list load and scroll more quickly, especially when it
contains a large number of trackers.

Also, remove the tracker list from SolarDevice.qml as it is only
required in specific pages, and those can load their own SolarTracker
objects when needed.

Rename SolarDeviceListPage to SolarInputListPage, as it shows a list
of trackers and PV inverters, rather than a list of SolarDevice items.

Fixes #1848
blammit added a commit that referenced this issue Jan 28, 2025
Add SolarInputModel to store the data for each tracker and PV
inverter entry in the list. This allows the ListView to just create
one list item for each entry in the model, instead of creating complex
delegates with Column+Repeater objects when showing multiple trackers
for a single solarcharger/multi/inverter service. Also, the model
sorts its items to allow the use of ListView sections for creating the
column headers.

This makes the list load and scroll more quickly, especially when it
contains a large number of trackers.

Also, remove the tracker list from SolarDevice.qml as it is only
required in specific pages, and those can load their own SolarTracker
objects when needed.

Rename SolarDeviceListPage to SolarInputListPage, as it shows a list
of trackers and PV inverters, rather than a list of SolarDevice items.

Fixes #1848
blammit added a commit that referenced this issue Jan 28, 2025
Add SolarInputModel to store the data for each tracker and PV
inverter entry in the list. This allows the ListView to just create
one list item for each entry in the model, instead of creating complex
delegates with Column+Repeater objects when showing multiple trackers
for a single solarcharger/multi/inverter service. Also, the model
sorts its items to allow the use of ListView sections for creating the
column headers.

This makes the list load and scroll more quickly, especially when it
contains a large number of trackers.

Also, remove the tracker list from SolarDevice.qml as it is only
required in specific pages, and those can load their own SolarTracker
objects when needed.

Rename SolarDeviceListPage to SolarInputListPage, as it shows a list
of trackers and PV inverters, rather than a list of SolarDevice items.

Fixes #1848
blammit added a commit that referenced this issue Jan 28, 2025
Add SolarInputModel to store the data for each tracker and PV
inverter entry in the list. This allows the ListView to just create
one list item for each entry in the model, instead of creating complex
delegates with Column+Repeater objects when showing multiple trackers
for a single solarcharger/multi/inverter service. Also, the model
sorts its items to allow the use of ListView sections for creating the
column headers.

This greatly improves the list loading performance when there are a
large number of trackers or PV inverters.

Also, remove the tracker list from SolarDevice.qml as it is only
required in specific pages, and those can load their own SolarTracker
objects when needed.

Rename SolarDeviceListPage to SolarInputListPage, as it shows a list
of trackers and PV inverters, rather than a list of SolarDevice items.

Fixes #1848
blammit added a commit that referenced this issue Jan 30, 2025
Add SolarInputModel to store the data for each tracker and PV
inverter entry in the list. This allows the ListView to just create
one list item for each entry in the model, instead of creating complex
delegates with Column+Repeater objects when showing multiple trackers
for a single solarcharger/multi/inverter service. Also, the model
sorts its items to allow the use of ListView sections for creating the
column headers.

This greatly improves the list loading performance when there are a
large number of trackers or PV inverters.

Also, remove the tracker list from SolarDevice.qml as it is only
required in specific pages, and those can load their own SolarTracker
objects when needed.

Rename SolarDeviceListPage to SolarInputListPage, as it shows a list
of trackers and PV inverters, rather than a list of SolarDevice items.

Fixes #1848
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant