Skip to content

Lad performance fixups#327

Merged
OSPFNeighbour merged 3 commits intomaster-devfrom
lad-performance-fixups
Mar 3, 2026
Merged

Lad performance fixups#327
OSPFNeighbour merged 3 commits intomaster-devfrom
lad-performance-fixups

Conversation

@OSPFNeighbour
Copy link
Collaborator

This pull request makes significant improvements to the filtering, performance, and user experience of the main tasking page. The most notable changes include switching to Set-based filtering for better performance and correctness, introducing efficient marker batching to reduce UI lag during burst updates, refining the initial map loading and fit behavior, and improving the way relative time labels are updated for assets.

Filtering and Performance Improvements:

  • Replaced array-based .includes() filters with Set-based lookups for jobs and teams, improving performance and reliability, especially with large datasets. This affects filters for HQs, sectors, statuses, incident types, and pinned items. (src/pages/tasking/main.js) [1] [2] [3] [4] [5] [6] [7]
  • Updated Knockout computed observables to use a more efficient rate limiting method (notifyWhenChangesStop) for reduced unnecessary UI updates. (src/pages/tasking/main.js)

Map and Marker Handling Enhancements:

  • Introduced a marker batching system using requestAnimationFrame to schedule add/remove operations for job and asset markers, significantly reducing layout thrash and improving responsiveness during bulk updates. (src/pages/tasking/main.js) [1] [2] [3] [4] [5] [6]
  • Improved initial map fit logic: now waits for all data to load, handles user interaction gracefully, retries if needed, and falls back to calculating bounds from raw data if markers are not yet attached. Also added a loading overlay that hides once loading is complete. (src/pages/tasking/main.js) [1] [2]

Asset Model and Relative Time Updates:

  • Refactored the Asset model to accept a shared relative update tick observable, ensuring all assets update their relative time labels in sync every 30 seconds, rather than each asset managing its own timer. (src/pages/tasking/models/Asset.js, src/pages/tasking/main.js) [1] [2] [3] [4] [5]

User Experience Improvements:

  • Enhanced the job timeline modal to start and stop auto-refreshing only when the modal is shown or hidden, preventing unnecessary background updates. (src/pages/tasking/main.js)

These changes collectively make the tasking page more performant, responsive, and user-friendly, especially in scenarios with large numbers of jobs, teams, and assets.

@OSPFNeighbour OSPFNeighbour merged commit d8151e4 into master-dev Mar 3, 2026
@OSPFNeighbour OSPFNeighbour deleted the lad-performance-fixups branch March 3, 2026 11:37
OSPFNeighbour added a commit that referenced this pull request Mar 5, 2026
* more attempts to fix geosearch sucking in google js

* more fixed for this google map js inject

* remove identity and urls (#315)

* UI fixes (#317)

UI tweaks and fixes to address height issues with the layer controllers

* Bump minimatch from 3.1.2 to 3.1.3 (#316)

Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.1.2 to 3.1.3.
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](isaacs/minimatch@v3.1.2...v3.1.3)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump webpack from 5.98.0 to 5.105.0 (#299)

Bumps [webpack](https://github.com/webpack/webpack) from 5.98.0 to 5.105.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](webpack/webpack@v5.98.0...v5.105.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.105.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Lad config restore defaults button (#318)

* UI and backend to restore all defaults

* legend default state

* fix - sidebar resize when no localstorage values

* Fixes for massive package sizes (#319)

* if factory default config, load the HQ passed via the URL (#320)

* LAD markerclusters (#322)

* a slightly working shot at marker clusters and spiders
* zooming and clustering working
* cluster radius UI as well
* bug fixes for routing
* new untake color rings. bug fixes for layer control
* lots of little UI tweaks to make the clusters work and loook better
* hexagons are the bestagons
* janky theme fix for the config modal
* Human made legend icons
* fix for the icon width on config modal
* legend was collapse

* Lots of BOM layers via beacon (#321)

* re-jiggered some code to get more bom weather static layers from beacon
* More BOM map layers via Beacon
* lightning layers

* re-do of all bom layers (#324)

* Monday 2nd March Daily WIP (#325)

* pulse icons match shape. layer draw rework
* team tasking order change
* toggle hide member capabilities on team card

* add status to re-order incident UI

* layer toggle for all incidents

* map layer searching

* Fix RainViewer frame timestamp undefined error

* Lad performance fixups (#327)

* keyframe loading of incidents and teams

* getting anything that uses a moment() fromNow to have a common ticker so the UI updates

* more must be better

* Added some transparency to the storm tracker polygons

* ICEMS unack display code (#329)

* ICEMS unack display code

* icems ium ack

* tiny css fix

* rain radar legend added

* too much debug

* fixes to icems code to actually pass a function

* two computed performance fixes (#331)

* dark mode theme (#332)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant