mirror of
https://github.com/lidarr/Lidarr
synced 2024-12-24 16:51:58 +00:00
Instant progress notifications. Now use comet instead of pooling.
This commit is contained in:
parent
9a251394da
commit
a1caa789fe
5 changed files with 57 additions and 39 deletions
|
@ -27,7 +27,7 @@ public ProgressNotification(string title)
|
|||
/// Gets or sets the title for this notification.
|
||||
/// </summary>
|
||||
/// <value>The title.</value>
|
||||
public String Title { get; set; }
|
||||
public String Title { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the current status of this task. this field could be use to show the currently processing item in a long running task.
|
||||
|
|
|
@ -51,6 +51,8 @@ public void Start(ProgressNotification notification, int targetId)
|
|||
Logger.Error("Unable to find an episode {0} in database", targetId);
|
||||
return;
|
||||
}
|
||||
notification.CurrentMessage = "Searching for " + episode;
|
||||
|
||||
|
||||
var series = episode.Series;
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ public virtual List<BasicNotification> BasicNotifications
|
|||
get { return new List<BasicNotification>(_basicNotifications.Values); }
|
||||
}
|
||||
|
||||
public virtual List<ProgressNotification> GetProgressNotifications
|
||||
public virtual List<ProgressNotification> ProgressNotifications
|
||||
{
|
||||
get
|
||||
{
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
using System.Web.Mvc;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.Web.Mvc;
|
||||
using MvcMiniProfiler;
|
||||
using NzbDrone.Core.Providers;
|
||||
|
||||
|
@ -32,8 +35,8 @@ public JsonResult Index()
|
|||
|
||||
else
|
||||
{
|
||||
if (_notifications.GetProgressNotifications.Count != 0)
|
||||
message = _notifications.GetProgressNotifications[0].CurrentMessage;
|
||||
if (_notifications.ProgressNotifications.Count != 0)
|
||||
message = _notifications.ProgressNotifications[0].CurrentMessage;
|
||||
}
|
||||
|
||||
|
||||
|
@ -44,5 +47,33 @@ public JsonResult Index()
|
|||
|
||||
return Json(message, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
|
||||
|
||||
[HttpGet]
|
||||
public JsonResult Comet(string message)
|
||||
{
|
||||
var requestTimer = Stopwatch.StartNew();
|
||||
|
||||
MiniProfiler.Stop(true);
|
||||
|
||||
var currentMessage = GetCurrentMessage();
|
||||
|
||||
while (message == currentMessage && requestTimer.Elapsed.TotalSeconds < 10)
|
||||
{
|
||||
Thread.Sleep(250);
|
||||
currentMessage = GetCurrentMessage();
|
||||
}
|
||||
|
||||
return Json(currentMessage, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
|
||||
private string GetCurrentMessage()
|
||||
{
|
||||
if (_notifications.ProgressNotifications.Count != 0)
|
||||
return _notifications.ProgressNotifications[0].CurrentMessage;
|
||||
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,30 +1,27 @@
|
|||
/// <reference path="jquery-1.5.2-vsdoc.js" />
|
||||
$(document).ready(function ()
|
||||
{
|
||||
var speed = 0;
|
||||
$(window).load(function () {
|
||||
var speed = 700;
|
||||
var isShown = false;
|
||||
refreshNotifications();
|
||||
var currentMessage = "";
|
||||
|
||||
$.doTimeout(200, refreshNotifications);
|
||||
|
||||
|
||||
var timer = window.setInterval(function () {
|
||||
speed = 1000;
|
||||
refreshNotifications();
|
||||
}, 2000);
|
||||
|
||||
function refreshNotifications() {
|
||||
$.ajax({
|
||||
url: '/Notification',
|
||||
success: notificationCallback
|
||||
});
|
||||
$.get('/notification/Comet', { message: currentMessage }, notificationCallback);
|
||||
}
|
||||
|
||||
function notificationCallback(data) {
|
||||
currentMessage = data;
|
||||
|
||||
if (data === "") {
|
||||
CloseMsg();
|
||||
closeMsg();
|
||||
}
|
||||
else {
|
||||
DisplayMsg(data);
|
||||
displayMsg(data);
|
||||
}
|
||||
|
||||
refreshNotifications();
|
||||
}
|
||||
|
||||
//SetupNotifications();
|
||||
|
@ -32,32 +29,20 @@
|
|||
|
||||
|
||||
|
||||
function DisplayMsg(sMsg) {
|
||||
function displayMsg(sMsg) {
|
||||
//set the message text
|
||||
|
||||
|
||||
//$("#msgText").text(sMsg);
|
||||
$("#msgText").showHtml(sMsg, 200);
|
||||
|
||||
$("#msgText").showHtml(sMsg, 150);
|
||||
|
||||
if (!isShown) {
|
||||
isShown = true;
|
||||
if (speed === 0) {
|
||||
$('#msgBox').show();
|
||||
}
|
||||
else {
|
||||
$('#msgBox').show("slide", { direction: "right" }, speed);
|
||||
}
|
||||
|
||||
$('#msgBox').show("slide", { direction: "right" }, speed / 2);
|
||||
}
|
||||
|
||||
isShown = true;
|
||||
}
|
||||
|
||||
function CloseMsg() {
|
||||
function closeMsg() {
|
||||
//hide the message
|
||||
if (isShown) {
|
||||
$('#msgBox').hide("slide", { direction: "right" }, speed);
|
||||
}
|
||||
|
||||
$('#msgBox').hide("slide", { direction: "right" }, speed);
|
||||
isShown = false;
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue