Problem/Motivation
Large menus (100+) items with various nesting levels are very difficult to manage via drag and drop.
e.g. re-ordering can freeze the UI rendering for 10+ seconds.
I found #1972462: Redesign drag and drop interactions, and nested menu items, for all devices that aims to tackle the whole interaction for all devices.
#2742371: Drag and drop interfaces can break either browsers or exceed PHP server limits for forms and #1565704: Core interfaces can go over max_input_vars also become a problem with large menus.
Proposed resolution
There is https://www.drupal.org/project/bigmenu for D7, with an initial D8 port at https://github.com/becw/bigmenu.
Arguably this should be tackled in core as it is not uncommon to have large menus that are managed by non-technical users that rely on the drag and drop functionality.
At the very least, it should be possible to collapse the menus to a certain level and change how weights are calculated post drop.
Remaining tasks
TBD
User interface changes
TBD
API changes
N/A?
Data model changes
N/A
Comments
Comment #2
cilefen CreditAttribution: cilefen as a volunteer commentedComment #3
droplet CreditAttribution: droplet commentedIE/EDGE, right?
#2876224: Make Drupal.tableDrag.restripeTable 10x faster
Comment #4
zerolab CreditAttribution: zerolab at Torchbox for The Chartered Society of Physiotherapy commentedI see this behaviour in latest Chrome/FF.
But #2867451: Improve tabledrag.js performance sounds related
Comment #5
droplet CreditAttribution: droplet commentedCan I have more details on the menu trees? Started from 100 is too little for Chrome.
(I agreed a redesign is required but we still need some quick tweaks for now if we can.)
Comment #6
zerolab CreditAttribution: zerolab at Torchbox for The Chartered Society of Physiotherapy commentedHi droplet,
You are right, 100 items are easily handled by Chrome. In this case it is 1243 items. You can see the behaviour at https://youtu.be/rZXbKzavlxQ
Will give https://www.drupal.org/files/issues/improve-tabledrag-performance.patch / https://www.drupal.org/files/issues/tabledrag_js_reduce-1571814-34.patch a try and see if it improves anything.