From 435210b73cae2821a38dba26f3a96d7b2be050d5 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Sat, 28 Apr 2018 22:04:58 +0200 Subject: [PATCH] Add tracker info to loading screen --- src/Ui/media/Wrapper.coffee | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/Ui/media/Wrapper.coffee b/src/Ui/media/Wrapper.coffee index 1843ae16..9f786c7a 100644 --- a/src/Ui/media/Wrapper.coffee +++ b/src/Ui/media/Wrapper.coffee @@ -19,6 +19,7 @@ class Wrapper @next_cmd_message_id = -1 @site_info = null # Hold latest site info + @server_info = null # Hold latest server info @event_site_info = $.Deferred() # Event when site_info received @inner_loaded = false # If iframe loaded or not @inner_ready = false # Inner frame ready to receive messages @@ -26,6 +27,7 @@ class Wrapper @site_error = null # Latest failed file download @address = null @opener_tested = false + @announcer_line = null @allowed_event_constructors = [MouseEvent, KeyboardEvent] # Allowed event constructors @@ -80,6 +82,11 @@ class Wrapper if message.params.address == @address # Current page @setSiteInfo message.params @updateProgress message.params + else if cmd == "setAnnouncerInfo" + @sendInner message # Pass to inner frame + if message.params.address == @address # Current page + @setAnnouncerInfo message.params + @updateProgress message.params else if cmd == "error" @notifications.add("notification-#{message.id}", "error", message.params, 0) else if cmd == "updating" # Close connection @@ -392,10 +399,20 @@ class Wrapper onOpenWebsocket: (e) => - @ws.cmd "channelJoin", {"channels": ["siteChanged", "serverChanged"]} # Get info on modifications + if window.show_loadingscreen # Get info on modifications + @ws.cmd "channelJoin", {"channels": ["siteChanged", "serverChanged", "announcerChanged"]} + else + @ws.cmd "channelJoin", {"channels": ["siteChanged", "serverChanged"]} if not @wrapperWsInited and @inner_ready @sendInner {"cmd": "wrapperOpenedWebsocket"} # Send to inner frame @wrapperWsInited = true + if window.show_loadingscreen + @ws.cmd "serverInfo", [], (server_info) => + @server_info = server_info + + @ws.cmd "announcerInfo", [], (announcer_info) => + @setAnnouncerInfo(announcer_info) + if @inner_loaded # Update site info @reloadSiteInfo() @@ -520,6 +537,17 @@ class Wrapper @site_info = site_info @event_site_info.resolve() + setAnnouncerInfo: (announcer_info) -> + status_db = {} + for key, val of announcer_info.stats + status_db[val.status] ?= [] + status_db[val.status].push(val) + status_line = "Trackers announcing: #{status_db.announcing?.length or 0}, error: #{status_db.error?.length or 0}, done: #{status_db.announced?.length or 0}" + if @announcer_line + @announcer_line.text(status_line) + else + @announcer_line = @loading.printLine(status_line) + updateProgress: (site_info) -> if site_info.tasks > 0 and site_info.started_task_num > 0 @loading.setProgress 1-(Math.max(site_info.tasks, site_info.bad_files) / site_info.started_task_num)