Add tracker info to loading screen

This commit is contained in:
shortcutme 2018-04-28 22:04:58 +02:00
parent 8dc465f244
commit 435210b73c
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE

View file

@ -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)