Commit Graph

85 Commits

Author SHA1 Message Date
Mark Yu
8b9064a33c WebUI: Do not hide context menu if the click target has submenu
Add check if the click event occurs in the menu item and if the menu item has a submenu, do not close the context menu.

Closes #23532.
PR #23534.
2025-11-30 19:15:23 +08:00
Chocobo1
dffd27a879 WebUI: prefer range based for loop
Using `entries()` can also save the work of manually handling the index variable.

PR #23182.
2025-08-31 21:54:48 +08:00
Chocobo1
6ac0c5a8b8 WebUI: prefer for loop over Array.forEach method
The `for` loop can do everything `forEach` can and doesn't need a closure.
2025-08-27 22:19:16 +08:00
Chocobo1
acab056fe4 WebUI: disallow number literals with zero fractions or dangling dots
Javascript treats them all the same as `Number`.
2025-08-27 22:19:16 +08:00
tehcneko
f743ae2d08 WebUI: Use native css transition for context menu
Reduce MooTools usage.

PR #23069.
2025-08-11 16:28:47 +08:00
Thomas Piccirello
7aebd07f9f WebUI: Support managing category download path
PR #22938.
2025-07-15 01:29:03 +08:00
Thomas Piccirello
06756936f3 WebUI: Always show Auto Torrent Management option
This behavior is consistent with the GUI.

Closes #22702.
PR #22819.
2025-06-09 21:31:46 +08:00
ivan
44bb1ac7eb WebUI: Add support for tracker status filter 2025-05-27 17:12:43 +03:00
bolshoytoster
a3d1ff0eb2 WebUI: Fix memory leak
See #22734, there is a memory leak in the MooTools .destroy(), this replaces all uses of that with the browser native .remove().

This also overrides the MooTools Document.id function, which is used by $(id). The original function always allocates an ID to elements it selects, the override doesn't, and is also a little more efficient.

Closes #22734.
PR  #22754.

---------

Co-authored-by: Chocobo1 <Chocobo1@users.noreply.github.com>
2025-05-25 15:41:52 +08:00
Chocobo1
eb82c9078d WebUI: always provide event variable
This is unifying coding style and avoid wrong usages.

PR #22676.
2025-05-13 00:11:00 +08:00
Chocobo1
ad4bdc0653 Merge pull request #22615 from Chocobo1/webui_eslint
* WebUI: disallow unnecessary semicolons
* WebUI: ensure consistent shorthand syntax
* WebUI: disallow async functions which have no await expression
* WebUI: remove unused variable
2025-04-28 20:20:57 +08:00
Chocobo1
70dbe9468a WebUI: disallow unnecessary semicolons 2025-04-27 16:19:50 +08:00
skomerko
411ca0f668 WebUI: Use native function for selecting elements by ID 2025-04-23 19:55:04 +02:00
skomerko
7b3aa51bb1 WebUI: Eliminate redundant DOM element queries 2025-04-23 19:49:40 +02:00
skomerko
93925042dd WebUI: Fix memory leak in context menus
This PR fixes a memory leak in context menus. Previously, for some reason, each menu retained references to its target elements without utilizing them further. Since the targets property was accessible/reachable from the root (window object), these references persisted even after the elements were removed from the DOM, preventing them from being garbage collected.
It's easily reproducible - just add a decent amount of torrents, switch between categories multiple times, then capture heap/detached elements snapshot in the Memory tab (Chrome dev tools). The number of detached elements will continue to increase after each category switch and they won't be cleaned up.
[More context](https://github.com/qbittorrent/qBittorrent/pull/22220/files#r1941137796)

PR #22234.
2025-02-08 17:51:21 +08:00
skomerko
9c2e698514 WebUI: Replace getElements & getChildren
This PR further reduces Mootools usage.
PR #22220.
2025-02-04 17:08:18 +08:00
Chocobo1
f8c48349a1 WebUI: use native function for selecting elements
PR #22179.
2025-01-20 23:36:11 +08:00
Chocobo1
d911928c59 WebUI: Remove unnecessary hashing
Now the containers support using string as key so the intermediate hashing/mapping to number
isn't needed now.

PR #22103.
2025-01-06 18:53:18 +08:00
skomerko
395dbaa5c6 WebUI: Replace getElement with querySelector
All `getElement` instances (Mootools) were changed to `querySelector`.

PR #22082.
2024-12-31 21:31:46 +08:00
skomerko
7080f85b59 WebUI: Replace Mootools class list manipulation methods
All `addClass()`, `removeClass()` and `hasClass()` instances were changed to use `classList` equivalent:
https://developer.mozilla.org/en-US/docs/Web/API/Element/classList

PR #21946.

---------

Co-authored-by: Chocobo1 <Chocobo1@users.noreply.github.com>
2024-12-08 16:12:57 +08:00
Chocobo1
24d349ffba WebUI: fix wrong event property 2024-11-27 01:12:13 +08:00
Chocobo1
f34787e6ba WebUI: use correct property for selecting child elements
`firstChild` will select the first `Node` which is often not intended (it should be
`Element` instead).
2024-11-27 01:12:12 +08:00
Chocobo1
72e033db79 WebUI: remove child elements directly 2024-11-26 00:43:58 +08:00
skomerko
e51fcc6ea0 WebUI: Show 'Rename...' context menu item only when one torrent is selected
'Rename...' item in torrents table menu is displayed only when exactly one torrent is selected.

PR #21843.
2024-11-17 15:31:30 +08:00
Chocobo1
72cbc83569 WebUI: prefer arrow functions whenever applicable
Compared to plain function, arrow function is simpler to understand (without bindings to `this`, `arguments`, `super`) and to read.
Now, plain function will only be used when this object is required.

PR #21691.
2024-11-01 04:17:41 +08:00
skomerko
5a0914e333 WebUI: Use modern class syntax in context menu classes
Context menu classes are now created using vanilla JS syntax (minimal changes to reduce MooTools bits).

PR #21598.
2024-10-19 16:32:20 +08:00
skomerko
81509dfb65 WebUI: Improve filter lists
This PR adds following improvements: 
* Remove unused tracker entries while processing sync data
* Take into account filter selection & terms when performing 'Start/stop/delete' context actions in filter lists
  Now, only filtered torrents will be affected by them, just like in the GUI.
* Provide better feedback when performing 'Start/stop/delete' context actions in filter lists
  Small improvement over GUI - now these actions will be disabled if it's not possible to use them.
* Add context menu to status filter list
* Fix error when toggling filter title
  Fixup for small bug introduced in https://github.com/qbittorrent/qBittorrent/pull/21269

PR #21438.
2024-10-12 13:40:18 +08:00
Thomas Piccirello
b1fd61af3a WebUI: Handle folders when updating RSS feed url
Follow up to #21371 ([context](https://github.com/qbittorrent/qBittorrent/pull/21371#discussion_r1780908605)).

PR #21437.
2024-10-12 13:30:24 +08:00
skomerko
8b2d8f3afd WebUI: Use Map instead of Mootools Hash in all dynamic tables
PR #21358.
2024-09-28 15:46:16 +08:00
Thomas Piccirello
d2b2afad23 Support removing tracker from all torrents in WebUI/WebAPI
Closes #20661.
PR #21056.
2024-09-16 17:47:10 +08:00
skomerko
d19f7b12d9 WebUI: Improve hash copy actions in context menu
This PR provides better feedback for hash context menu actions and now it is clearly shown if there is anything to copy.

PR #21321.
2024-09-16 17:41:14 +08:00
Chocobo1
0e63b83aed WebUI: do not follow anchor URL
Fix up 5afeecbf18.
PR #21283.
2024-09-06 15:31:26 +08:00
skomerko
5b7c9d5725 WebUI: Filter list improvements
A couple of tweaks to make them a little bit better:
1. Make highlighting functions more consistent (this also fixes minuscule bug when no filter item in tracker list is highlighted due to a type mismatch)
2. Use [event delegation](https://javascript.info/event-delegation) to handle filter toggling & item selection
3. Other minor improvements (everything should work like it was previously)

PR #21191.
2024-08-25 14:23:35 +08:00
Chocobo1
98623b2cf7 WebUI: use passive event handlers
These kind of event handlers can be asynchronously dispatched, freeing up the main thread for
lag-free operation.
2024-08-17 14:03:51 +08:00
Chocobo1
1179fc3de3 WebUI: prevent passing wrong parameter
The `event` object will be passed as the first parameter to the event handler. So wrap the
event handler with a closure to prevent `event` leaking to other functions.
2024-08-17 14:02:13 +08:00
Chocobo1
3e18b1d30c WebUI: remove outdated CSS property
WebUI already has the standard counterparts.
2024-08-10 14:26:10 +08:00
Chocobo1
9df3ee0de8 WebUI: use native property to set styles 2024-08-10 14:26:10 +08:00
Chocobo1
5afeecbf18 WebUI: migrate away from inline HTML code
`innerHTML` &  `outerHTML` setter will more or less evaluate the value which could be used to
inject malicious code. So replace them with safer alternatives.

PR #21163.
2024-08-10 12:55:48 +08:00
Chocobo1
2d9e3b3330 WebUI: use native functions for event handling
PR #21147.
2024-08-07 22:00:54 +08:00
skomerko
142780b863 WebUI: Highlight torrent category in context menu
This PR makes it possible to see common category of selected torrents in context menu. Everything should behave exactly like in GUI.

Closes #12701.
PR #21136.
2024-08-07 21:40:21 +08:00
Chocobo1
9feefc8144 WebUI: avoid redundant re-initialization
PR #21012.
2024-07-12 15:00:36 +08:00
Chocobo1
9c26e5d4d6 WebUI: access attribute/property natively
It is now clearer to see what property is being accessed.
Previously mootools library would re-map attribute/property to another.

PR #21007.
2024-07-12 14:06:59 +08:00
Chocobo1
648dd9988d WebUI: unify comment format 2024-06-11 02:17:10 +08:00
Chocobo1
bf4e0df386 WebUI: unify curly bracket usage 2024-06-07 02:51:35 +08:00
Chocobo1
24a1537cdd WebUI: prefer arrow function in callbacks 2024-05-27 22:57:28 +08:00
Chocobo1
55bff4f07a WebUI: enforce usage of const whenever possible 2024-05-27 22:56:51 +08:00
Chocobo1
cb90b6769c WebUI: enforce string quotes coding style 2024-05-27 22:50:17 +08:00
Chocobo1
4945ed576a WebUI: enforce strict comparison operators 2024-04-21 16:44:15 +08:00
Chocobo1
d7cded54e4 WebUI: enforce parentheses around operators
PR #20696.
2024-04-15 12:50:07 +08:00
Thomas Piccirello
e697d40382 WebUI: Improve table scrolling and selection on mobile
This PR improves touch interaction with table rows that have a context menu. Previously, those rows couldn't be selected or scrolled on mobile. Additionally, this PR modifies the context menu to appear when the user removes their finger/touch, rather than the current behavior of appearing mid-touch. This allows us to only display the context menu if the user's finger remains on the same element, which should significantly reduce erroneous context menu triggering.

Closes #19819.
Closes #19820,
Closes #19823.
PR #20639.
2024-04-09 14:33:10 +08:00