Commit Graph

196 Commits

Author SHA1 Message Date
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
c7caae1150 WebUI: fix wrong replacement sequence
Only IPv6 addresses may have a 'zone index' and therefore it should be replaced last for the
result to be correct.

PR #22724.
2025-05-18 15:42:36 +08:00
Chocobo1
778a158597 WebUI: add versioning to local preferences
And provide migration path for changing preferences.

Fixes #22639.
PR #22677.
2025-05-14 07:20:01 +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
bolshoytoster
0160aa28b6 WebUI: Don't update UI if the page is hidden
Currently, there is unnecessary CPU/network usage by the web UI when it's running in the background, this PR prevents it from refreshing in the background.

Closes #22565.
PR #22567.
2025-04-21 17:23:09 +08:00
Chocobo1
abafbc0685 WebUI: avoid saving invalid size
Don't save the wrong size when the tab is collapsed.
Reported in: https://github.com/qbittorrent/qBittorrent/pull/21215/files#r1966052959

PR #22537.
2025-04-12 17:59:42 +08:00
skomerko
6c36830e5e WebUI: Set status filter to 'All' if selected filter is no longer visible
Fixup for #21145

To reproduce:
1. Select status filter with 0 torrents
2. Enable 'Auto hide zero status filters' and save settings. Hidden filter is still selected:

PR #22487.
2025-04-05 17:13:14 +08:00
Chocobo1
97865545c3 WebUI: fix Tag counter counting wrong
Related: 73e9116d21 (r2014898781)

PR #22480.
2025-03-29 20:41:05 +08:00
Chocobo1
c65a68251e WebUI: use native function when converting to numbers
PR #22246.
2025-02-08 17:58:48 +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
1ee84033ec WebUI: use template literals instead of string concatenation
PR #22177.
2025-01-18 20:51:47 +08:00
Chocobo1
c622d50814 WebUI: use native API for accessing query string
PR #22141.
2025-01-12 21:36:59 +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
Chocobo1
9c0475ebfa WebUI: migrate to fetch API
This is the final part of it.

PR #22072.
2024-12-29 15:44:28 +08:00
Chocobo1
7487cd7e6d WebUI: disallow unnecessary quotes in property name
Those two forms are the same and from now on we enforce to one style.

PR #22051.
2024-12-24 22:25:18 +08:00
Chocobo1
a841fe9320 WebUI: migrate to fetch API
And away from mootools.

PR #22037.
2024-12-22 17:51:19 +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
2d1c4fc809 WebUI: use native event listeners for keyboard events
PR #21924.
2024-12-02 13:41:19 +08:00
Chocobo1
5eec0c0213 WebUI: use idiomatic string methods 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
e1bd1038c0 WebUI: simplify close window implementation
The caller site now take the responsibility to ensure the element is valid.

PR #21892.
2024-11-26 00:40:05 +08:00
Chocobo1
b0fe6e6c59 WebUI: ensure cached info are initialized properly
PR #21893.
2024-11-25 14:04:28 +08:00
skomerko
7300b9f759 WebUI: Eliminate unnecessary Status filter list updates
Only update the Status filter list when torrents are removed, added or their state changed.

PR #21866.
2024-11-22 20:59:23 +08:00
Chocobo1
ede08f3845 WebUI: fetch cached info early
The cached info doesn't need to wait until the DOM is loaded. They can be fetched far earlier.

PR #21830.
2024-11-16 15:34:35 +08:00
Thomas Piccirello
1cd3c586c1 WebUI: Always close one window
Closing all windows is overly broad and never the intention.

PR #21804.
2024-11-16 15:12:35 +08:00
Hanabishi
06fe3e5fb0 WebUI: fix color scheme for iframes
Applies the color scheme for iframe dialogs.

Fixup for #21613.
PR #21750.
2024-11-09 16:02:28 +08:00
Thomas Piccirello
f89c4c32ed Display External IP Address in status bar
This change displays the last detected IPv4 and/or IPv6 address(es) in the GUI and WebUI's status bar. This does not yet handle systems with multiple addresses of the same type (e.g. multiple IPv6 addresses).

PR #21383.

---------

Co-authored-by: Odin Vex <44311901+OdinVex@users.noreply.github.com>
2024-11-09 15:58:13 +08:00
sledgehammer999
3aefc16c57 Webui: Add color scheme switcher
Closes #21600
2024-11-02 13:11:05 +02:00
Thomas Piccirello
8991d994c2 WebUI: Eliminate unnecessary torrents table updates
Only update the torrents table when torrents are added, edited, or removed.

PR #21656.
2024-11-01 04:34:17 +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
Thomas Piccirello
be3eefd8de WebUI: Fix displaying RSS panel on load
The required JS may not yet be loaded, resulting in an error when calling `window.qBittorrent.Rss.init()`.

Signed-off-by: Thomas Piccirello <thomas@piccirello.com>

PR #21689.
2024-10-28 14:06:52 +08:00
Thomas Piccirello
c3c91be578 WebUI: Clear properties panel when torrent no longer selected
PR #21654.
2024-10-28 13:53:24 +08:00
Thomas Piccirello
e8dc6b3f73 WebUI: Show file filter when Content tab selected on load
This fixes a bug where the file filter is only shown when the Content tab is switched to. The filter is not being shown if the Content tab is already selected on page load (due to being previously selected).

PR #21657.
2024-10-26 03:28:01 +08:00
skomerko
7031c52d16 WebUI: Improve sort order in Status column
This commit adds custom compare function to Status column (same sort order as in the GUI).

Closes #15499.
PR #21570.
2024-10-19 16:25:30 +08:00
skomerko
cbcb46bcfb WebUI: Setup copy events only once
It is enough to set them up just once during initial load. Number of elements with copyToClipboard class is fixed - they are context menu items.

PR #21558.
2024-10-12 14:29:54 +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
skomerko
d8e24314ec WebUI: Improve lookup performance when filtering by tracker
Torrent hashes in tracker list are now kept in sets instead of arrays.
PR #21405.
2024-09-30 18:13:45 +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
skomerko
183c7c75b1 WebUI: Display DHT information in the Status bar only when DHT is enabled
GUI completely hides DHT information when DHT is disabled - now WebUI does the same thing.

Closes #18417.
PR #21339.
2024-09-22 14:06:25 +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
6df1f68ead WebUI: Use Map instead of Mootools Hash in Torrents table
PR #21308.
2024-09-16 17:34:49 +08:00
skomerko
1b53fdf9ee WebUI: Improve subcategories
Now they should fully match GUI behavior, please let me know if I missed something.
Still plenty of room to improve them further (e.g styling/CSS) but for now I wanted to keep the changes to the minimum.

Also included small tweaks to category context menu actions.

PR #21269.
2024-09-08 15:21:11 +08:00
skomerko
9d0fa213be WebUI: Allow to display only hostname in the Tracker column
It is now possible to display only hostname in the Tracker column.
Closes #11357.
PR #21243.
2024-09-01 16:34:49 +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
skomerko
39dd415d43 WebUI: Improve torrent deletion dialog
This PR improves torrent deletion dialog.

1. Now shows different message depending on the number of selected torrents
2. Visually pretty much inline with the GUI
3. Adjusts to content on load
4. Now uses XHR load method. Panels / windows loaded using this method become part of the current document so there is no need to import styles or scripts (they should load marginally faster now).

PR #21185.

---------

Co-authored-by: Chocobo1 <Chocobo1@users.noreply.github.com>
2024-08-25 14:11:36 +08:00
skomerko
fda797cb76 WebUI: Improve properties panel
It is now possible to expand & collapse it by clicking directly on tabs, just like in GUI.
In addition, collapse state is saved and applied on page load.
Fixed one minor bug and now files search input is properly hidden even when panel is collapsed.

PR #21209.
2024-08-24 14:09:10 +08:00
Chocobo1
29379232aa WebUI: implement debounce behavior for resize events 2024-08-17 14:02:15 +08:00