GIT: perform LF normalization
This commit is contained in:
@@ -1,29 +1,29 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
|
||||
namespace Disco.Web.Areas.Public.Controllers
|
||||
{
|
||||
public partial class PublicController : Controller
|
||||
{
|
||||
//
|
||||
// GET: /Public/Public/
|
||||
|
||||
public virtual ActionResult Index()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
public virtual ActionResult Credits()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
public virtual ActionResult Licence()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
|
||||
namespace Disco.Web.Areas.Public.Controllers
|
||||
{
|
||||
public partial class PublicController : Controller
|
||||
{
|
||||
//
|
||||
// GET: /Public/Public/
|
||||
|
||||
public virtual ActionResult Index()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
public virtual ActionResult Credits()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
public virtual ActionResult Licence()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,132 +1,132 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using Disco.BI;
|
||||
using Disco.BI.Extensions;
|
||||
|
||||
namespace Disco.Web.Areas.Public.Controllers
|
||||
{
|
||||
public partial class UserHeldDevicesController : dbController
|
||||
{
|
||||
private List<Models.UserHeldDevices.UserHeldDeviceModel> GetUserHeldDevices()
|
||||
{
|
||||
var usersJobs = dbContext.Jobs.Where(j =>
|
||||
!j.ClosedDate.HasValue && j.UserId != null &&
|
||||
j.DeviceSerialNumber != null &&
|
||||
((j.DeviceHeld.HasValue && !j.DeviceReturnedDate.HasValue) || j.WaitingForUserAction.HasValue)
|
||||
).Select(j => new Models.UserHeldDevices.HeldJobDeviceModel
|
||||
{
|
||||
JobId = j.Id,
|
||||
WaitingForUserAction = j.WaitingForUserAction.HasValue || ((j.JobMetaNonWarranty.AccountingChargeRequiredDate.HasValue || j.JobMetaNonWarranty.AccountingChargeAddedDate.HasValue) && !j.JobMetaNonWarranty.AccountingChargePaidDate.HasValue),
|
||||
WaitingForUserActionSince = j.WaitingForUserAction.HasValue ? j.WaitingForUserAction : (j.JobMetaNonWarranty.AccountingChargeRequiredDate.HasValue ? j.JobMetaNonWarranty.AccountingChargeRequiredDate : j.JobMetaNonWarranty.AccountingChargeAddedDate),
|
||||
ReadyForReturn = j.DeviceReadyForReturn.HasValue,
|
||||
EstimatedReturnTime = j.ExpectedClosedDate,
|
||||
ReadyForReturnSince = j.DeviceReadyForReturn,
|
||||
UserDisplayName = j.User.DisplayName,
|
||||
UserId = j.UserId,
|
||||
DeviceProfileId = j.Device.DeviceProfileId,
|
||||
DeviceAddressId = j.Device.DeviceProfile.DefaultOrganisationAddress
|
||||
}).GroupBy(j => j.UserId);
|
||||
|
||||
var thd = new List<Models.UserHeldDevices.UserHeldDeviceModel>();
|
||||
foreach (var userJobs in usersJobs)
|
||||
{
|
||||
if (userJobs.Any(j => j.WaitingForUserAction))
|
||||
{
|
||||
thd.Add(userJobs.Where(j => j.WaitingForUserAction).OrderBy(j => j.WaitingForUserActionSince).FirstOrDefault().ToUserHeldDeviceModel(dbContext));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (userJobs.All(j => j.ReadyForReturn))
|
||||
{
|
||||
thd.Add(userJobs.FirstOrDefault().ToUserHeldDeviceModel(dbContext));
|
||||
}
|
||||
else
|
||||
{
|
||||
thd.Add(userJobs.Where(j => !j.ReadyForReturn).OrderByDescending(j => j.EstimatedReturnTime).FirstOrDefault().ToUserHeldDeviceModel(dbContext));
|
||||
}
|
||||
}
|
||||
}
|
||||
return thd;
|
||||
}
|
||||
private Models.UserHeldDevices.UserHeldDeviceModel GetUserHeldDevice(string userId)
|
||||
{
|
||||
var userJobs = dbContext.Jobs.Where(j => !j.ClosedDate.HasValue && j.UserId == userId && j.DeviceSerialNumber != null && ((j.DeviceHeld.HasValue && !j.DeviceReturnedDate.HasValue) || j.WaitingForUserAction.HasValue)).Select(j => new Models.UserHeldDevices.HeldJobDeviceModel
|
||||
{
|
||||
JobId = j.Id,
|
||||
WaitingForUserAction = j.WaitingForUserAction.HasValue,
|
||||
WaitingForUserActionSince = j.WaitingForUserAction,
|
||||
ReadyForReturn = j.DeviceReadyForReturn.HasValue,
|
||||
EstimatedReturnTime = j.ExpectedClosedDate,
|
||||
ReadyForReturnSince = j.DeviceReadyForReturn,
|
||||
UserDisplayName = j.User.DisplayName,
|
||||
UserId = j.UserId,
|
||||
DeviceProfileId = j.Device.DeviceProfileId,
|
||||
DeviceAddressId = j.Device.DeviceProfile.DefaultOrganisationAddress
|
||||
}).ToList();
|
||||
|
||||
if (userJobs == null || userJobs.Count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (userJobs.Any(j => j.WaitingForUserAction))
|
||||
{
|
||||
return userJobs.Where(j => j.WaitingForUserAction).OrderBy(j => j.WaitingForUserActionSince).FirstOrDefault().ToUserHeldDeviceModel(dbContext);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (userJobs.All(j => j.ReadyForReturn))
|
||||
{
|
||||
return userJobs.FirstOrDefault().ToUserHeldDeviceModel(dbContext);
|
||||
}
|
||||
else
|
||||
{
|
||||
return userJobs.Where(j => !j.ReadyForReturn).OrderByDescending(j => j.EstimatedReturnTime).FirstOrDefault().ToUserHeldDeviceModel(dbContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual ActionResult Index()
|
||||
{
|
||||
return View(GetUserHeldDevices());
|
||||
}
|
||||
|
||||
public virtual ActionResult ReadyForReturnXml()
|
||||
{
|
||||
var readyForReturn = GetUserHeldDevices().Where(j => j.ReadyForReturn && !j.WaitingForUserAction).ToArray();
|
||||
return new Extensions.XmlResult(readyForReturn);
|
||||
}
|
||||
public virtual ActionResult WaitingForUserActionXml()
|
||||
{
|
||||
var userHeldDevices = GetUserHeldDevices().Where(j => j.WaitingForUserAction).ToArray();
|
||||
return new Extensions.XmlResult(userHeldDevices);
|
||||
}
|
||||
public virtual ActionResult UserHeldDevicesXml()
|
||||
{
|
||||
var userHeldDevices = GetUserHeldDevices().Where(j => !j.ReadyForReturn && !j.WaitingForUserAction).ToArray();
|
||||
return new Extensions.XmlResult(userHeldDevices);
|
||||
}
|
||||
|
||||
public virtual ActionResult Noticeboard()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
public virtual ActionResult UserHeldDevice(string id)
|
||||
{
|
||||
var uhd = GetUserHeldDevice(id);
|
||||
return Json(uhd, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
public virtual ActionResult UserHeldDevices()
|
||||
{
|
||||
var uhd = GetUserHeldDevices();
|
||||
return Json(uhd, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using Disco.BI;
|
||||
using Disco.BI.Extensions;
|
||||
|
||||
namespace Disco.Web.Areas.Public.Controllers
|
||||
{
|
||||
public partial class UserHeldDevicesController : dbController
|
||||
{
|
||||
private List<Models.UserHeldDevices.UserHeldDeviceModel> GetUserHeldDevices()
|
||||
{
|
||||
var usersJobs = dbContext.Jobs.Where(j =>
|
||||
!j.ClosedDate.HasValue && j.UserId != null &&
|
||||
j.DeviceSerialNumber != null &&
|
||||
((j.DeviceHeld.HasValue && !j.DeviceReturnedDate.HasValue) || j.WaitingForUserAction.HasValue)
|
||||
).Select(j => new Models.UserHeldDevices.HeldJobDeviceModel
|
||||
{
|
||||
JobId = j.Id,
|
||||
WaitingForUserAction = j.WaitingForUserAction.HasValue || ((j.JobMetaNonWarranty.AccountingChargeRequiredDate.HasValue || j.JobMetaNonWarranty.AccountingChargeAddedDate.HasValue) && !j.JobMetaNonWarranty.AccountingChargePaidDate.HasValue),
|
||||
WaitingForUserActionSince = j.WaitingForUserAction.HasValue ? j.WaitingForUserAction : (j.JobMetaNonWarranty.AccountingChargeRequiredDate.HasValue ? j.JobMetaNonWarranty.AccountingChargeRequiredDate : j.JobMetaNonWarranty.AccountingChargeAddedDate),
|
||||
ReadyForReturn = j.DeviceReadyForReturn.HasValue,
|
||||
EstimatedReturnTime = j.ExpectedClosedDate,
|
||||
ReadyForReturnSince = j.DeviceReadyForReturn,
|
||||
UserDisplayName = j.User.DisplayName,
|
||||
UserId = j.UserId,
|
||||
DeviceProfileId = j.Device.DeviceProfileId,
|
||||
DeviceAddressId = j.Device.DeviceProfile.DefaultOrganisationAddress
|
||||
}).GroupBy(j => j.UserId);
|
||||
|
||||
var thd = new List<Models.UserHeldDevices.UserHeldDeviceModel>();
|
||||
foreach (var userJobs in usersJobs)
|
||||
{
|
||||
if (userJobs.Any(j => j.WaitingForUserAction))
|
||||
{
|
||||
thd.Add(userJobs.Where(j => j.WaitingForUserAction).OrderBy(j => j.WaitingForUserActionSince).FirstOrDefault().ToUserHeldDeviceModel(dbContext));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (userJobs.All(j => j.ReadyForReturn))
|
||||
{
|
||||
thd.Add(userJobs.FirstOrDefault().ToUserHeldDeviceModel(dbContext));
|
||||
}
|
||||
else
|
||||
{
|
||||
thd.Add(userJobs.Where(j => !j.ReadyForReturn).OrderByDescending(j => j.EstimatedReturnTime).FirstOrDefault().ToUserHeldDeviceModel(dbContext));
|
||||
}
|
||||
}
|
||||
}
|
||||
return thd;
|
||||
}
|
||||
private Models.UserHeldDevices.UserHeldDeviceModel GetUserHeldDevice(string userId)
|
||||
{
|
||||
var userJobs = dbContext.Jobs.Where(j => !j.ClosedDate.HasValue && j.UserId == userId && j.DeviceSerialNumber != null && ((j.DeviceHeld.HasValue && !j.DeviceReturnedDate.HasValue) || j.WaitingForUserAction.HasValue)).Select(j => new Models.UserHeldDevices.HeldJobDeviceModel
|
||||
{
|
||||
JobId = j.Id,
|
||||
WaitingForUserAction = j.WaitingForUserAction.HasValue,
|
||||
WaitingForUserActionSince = j.WaitingForUserAction,
|
||||
ReadyForReturn = j.DeviceReadyForReturn.HasValue,
|
||||
EstimatedReturnTime = j.ExpectedClosedDate,
|
||||
ReadyForReturnSince = j.DeviceReadyForReturn,
|
||||
UserDisplayName = j.User.DisplayName,
|
||||
UserId = j.UserId,
|
||||
DeviceProfileId = j.Device.DeviceProfileId,
|
||||
DeviceAddressId = j.Device.DeviceProfile.DefaultOrganisationAddress
|
||||
}).ToList();
|
||||
|
||||
if (userJobs == null || userJobs.Count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (userJobs.Any(j => j.WaitingForUserAction))
|
||||
{
|
||||
return userJobs.Where(j => j.WaitingForUserAction).OrderBy(j => j.WaitingForUserActionSince).FirstOrDefault().ToUserHeldDeviceModel(dbContext);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (userJobs.All(j => j.ReadyForReturn))
|
||||
{
|
||||
return userJobs.FirstOrDefault().ToUserHeldDeviceModel(dbContext);
|
||||
}
|
||||
else
|
||||
{
|
||||
return userJobs.Where(j => !j.ReadyForReturn).OrderByDescending(j => j.EstimatedReturnTime).FirstOrDefault().ToUserHeldDeviceModel(dbContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual ActionResult Index()
|
||||
{
|
||||
return View(GetUserHeldDevices());
|
||||
}
|
||||
|
||||
public virtual ActionResult ReadyForReturnXml()
|
||||
{
|
||||
var readyForReturn = GetUserHeldDevices().Where(j => j.ReadyForReturn && !j.WaitingForUserAction).ToArray();
|
||||
return new Extensions.XmlResult(readyForReturn);
|
||||
}
|
||||
public virtual ActionResult WaitingForUserActionXml()
|
||||
{
|
||||
var userHeldDevices = GetUserHeldDevices().Where(j => j.WaitingForUserAction).ToArray();
|
||||
return new Extensions.XmlResult(userHeldDevices);
|
||||
}
|
||||
public virtual ActionResult UserHeldDevicesXml()
|
||||
{
|
||||
var userHeldDevices = GetUserHeldDevices().Where(j => !j.ReadyForReturn && !j.WaitingForUserAction).ToArray();
|
||||
return new Extensions.XmlResult(userHeldDevices);
|
||||
}
|
||||
|
||||
public virtual ActionResult Noticeboard()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
|
||||
public virtual ActionResult UserHeldDevice(string id)
|
||||
{
|
||||
var uhd = GetUserHeldDevice(id);
|
||||
return Json(uhd, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
public virtual ActionResult UserHeldDevices()
|
||||
{
|
||||
var uhd = GetUserHeldDevices();
|
||||
return Json(uhd, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,68 +1,68 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using Disco.BI;
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Data.Repository;
|
||||
|
||||
namespace Disco.Web.Areas.Public.Models.UserHeldDevices
|
||||
{
|
||||
public class HeldJobDeviceModel
|
||||
{
|
||||
public int JobId { get; set; }
|
||||
|
||||
public string UserId { get; set; }
|
||||
public string UserDisplayName { get; set; }
|
||||
public int DeviceProfileId { get; set; }
|
||||
public int? DeviceAddressId { get; set; }
|
||||
public bool ReadyForReturn { get; set; }
|
||||
public bool WaitingForUserAction { get; set; }
|
||||
public DateTime? EstimatedReturnTime { get; set; }
|
||||
public DateTime? ReadyForReturnSince { get; set; }
|
||||
public DateTime? WaitingForUserActionSince { get; set; }
|
||||
|
||||
public UserHeldDeviceModel ToUserHeldDeviceModel(DiscoDataContext dbContext)
|
||||
{
|
||||
var uhdm = new UserHeldDeviceModel()
|
||||
{
|
||||
UserId = this.UserId,
|
||||
UserDisplayName = this.UserDisplayName,
|
||||
ReadyForReturn = this.ReadyForReturn,
|
||||
WaitingForUserAction = this.WaitingForUserAction,
|
||||
DeviceProfileId = this.DeviceProfileId,
|
||||
DeviceAddress = (this.DeviceAddressId.HasValue ? dbContext.DiscoConfiguration.OrganisationAddresses.GetAddress(this.DeviceAddressId.Value).ShortName : string.Empty)
|
||||
};
|
||||
var n = DateTime.Now;
|
||||
if (!this.ReadyForReturn && this.EstimatedReturnTime.HasValue && this.EstimatedReturnTime.Value > n)
|
||||
{
|
||||
uhdm.EstimatedReturnTime = this.EstimatedReturnTime.ToFuzzy();
|
||||
if (this.EstimatedReturnTime.Value.Date == n.Date)
|
||||
{
|
||||
if (this.EstimatedReturnTime.Value < n.AddHours(2))
|
||||
{
|
||||
if (this.EstimatedReturnTime.Value < n.AddMinutes(12))
|
||||
{
|
||||
uhdm.UpdateAt = this.EstimatedReturnTime.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
uhdm.UpdateAt = this.EstimatedReturnTime.Value.AddMinutes(-10);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.ReadyForReturn)
|
||||
{
|
||||
uhdm.ReadyForReturnSince = this.ReadyForReturnSince.ToFuzzy();
|
||||
uhdm.IsAlert = (this.ReadyForReturnSince.Value < DateTime.Now.AddDays(-3));
|
||||
}
|
||||
if (this.WaitingForUserAction)
|
||||
{
|
||||
uhdm.WaitingForUserActionSince = this.WaitingForUserActionSince.ToFuzzy();
|
||||
uhdm.IsAlert = (this.WaitingForUserActionSince.Value < n.AddDays(-6));
|
||||
}
|
||||
return uhdm;
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using Disco.BI;
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Data.Repository;
|
||||
|
||||
namespace Disco.Web.Areas.Public.Models.UserHeldDevices
|
||||
{
|
||||
public class HeldJobDeviceModel
|
||||
{
|
||||
public int JobId { get; set; }
|
||||
|
||||
public string UserId { get; set; }
|
||||
public string UserDisplayName { get; set; }
|
||||
public int DeviceProfileId { get; set; }
|
||||
public int? DeviceAddressId { get; set; }
|
||||
public bool ReadyForReturn { get; set; }
|
||||
public bool WaitingForUserAction { get; set; }
|
||||
public DateTime? EstimatedReturnTime { get; set; }
|
||||
public DateTime? ReadyForReturnSince { get; set; }
|
||||
public DateTime? WaitingForUserActionSince { get; set; }
|
||||
|
||||
public UserHeldDeviceModel ToUserHeldDeviceModel(DiscoDataContext dbContext)
|
||||
{
|
||||
var uhdm = new UserHeldDeviceModel()
|
||||
{
|
||||
UserId = this.UserId,
|
||||
UserDisplayName = this.UserDisplayName,
|
||||
ReadyForReturn = this.ReadyForReturn,
|
||||
WaitingForUserAction = this.WaitingForUserAction,
|
||||
DeviceProfileId = this.DeviceProfileId,
|
||||
DeviceAddress = (this.DeviceAddressId.HasValue ? dbContext.DiscoConfiguration.OrganisationAddresses.GetAddress(this.DeviceAddressId.Value).ShortName : string.Empty)
|
||||
};
|
||||
var n = DateTime.Now;
|
||||
if (!this.ReadyForReturn && this.EstimatedReturnTime.HasValue && this.EstimatedReturnTime.Value > n)
|
||||
{
|
||||
uhdm.EstimatedReturnTime = this.EstimatedReturnTime.ToFuzzy();
|
||||
if (this.EstimatedReturnTime.Value.Date == n.Date)
|
||||
{
|
||||
if (this.EstimatedReturnTime.Value < n.AddHours(2))
|
||||
{
|
||||
if (this.EstimatedReturnTime.Value < n.AddMinutes(12))
|
||||
{
|
||||
uhdm.UpdateAt = this.EstimatedReturnTime.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
uhdm.UpdateAt = this.EstimatedReturnTime.Value.AddMinutes(-10);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.ReadyForReturn)
|
||||
{
|
||||
uhdm.ReadyForReturnSince = this.ReadyForReturnSince.ToFuzzy();
|
||||
uhdm.IsAlert = (this.ReadyForReturnSince.Value < DateTime.Now.AddDays(-3));
|
||||
}
|
||||
if (this.WaitingForUserAction)
|
||||
{
|
||||
uhdm.WaitingForUserActionSince = this.WaitingForUserActionSince.ToFuzzy();
|
||||
uhdm.IsAlert = (this.WaitingForUserActionSince.Value < n.AddDays(-6));
|
||||
}
|
||||
return uhdm;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,22 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
|
||||
namespace Disco.Web.Areas.Public.Models.UserHeldDevices
|
||||
{
|
||||
public class UserHeldDeviceModel
|
||||
{
|
||||
public string UserId { get; set; }
|
||||
public string UserDisplayName { get; set; }
|
||||
public bool ReadyForReturn { get; set; }
|
||||
public string EstimatedReturnTime { get; set; }
|
||||
public string ReadyForReturnSince { get; set; }
|
||||
public bool IsAlert { get; set; }
|
||||
public bool WaitingForUserAction { get; set; }
|
||||
public string WaitingForUserActionSince { get; set; }
|
||||
public Nullable<DateTime> UpdateAt { get; set; }
|
||||
public int DeviceProfileId { get; set; }
|
||||
public string DeviceAddress { get; set; }
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
|
||||
namespace Disco.Web.Areas.Public.Models.UserHeldDevices
|
||||
{
|
||||
public class UserHeldDeviceModel
|
||||
{
|
||||
public string UserId { get; set; }
|
||||
public string UserDisplayName { get; set; }
|
||||
public bool ReadyForReturn { get; set; }
|
||||
public string EstimatedReturnTime { get; set; }
|
||||
public string ReadyForReturnSince { get; set; }
|
||||
public bool IsAlert { get; set; }
|
||||
public bool WaitingForUserAction { get; set; }
|
||||
public string WaitingForUserActionSince { get; set; }
|
||||
public Nullable<DateTime> UpdateAt { get; set; }
|
||||
public int DeviceProfileId { get; set; }
|
||||
public string DeviceAddress { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,43 +1,43 @@
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Routing;
|
||||
using SignalR;
|
||||
|
||||
namespace Disco.Web.Areas.Public
|
||||
{
|
||||
public class PublicAreaRegistration : AreaRegistration
|
||||
{
|
||||
public override string AreaName
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Public";
|
||||
}
|
||||
}
|
||||
|
||||
public override void RegisterArea(AreaRegistrationContext context)
|
||||
{
|
||||
context.Routes.MapConnection<BI.Interop.SignalRHandlers.UserHeldDevices>(
|
||||
"Public_UserHeldDevices_Notifications", "Public/UserHeldDevices/Notifications/{*operation}");
|
||||
|
||||
context.MapRoute(
|
||||
"Public_Credits",
|
||||
"Public/Credits/{id}",
|
||||
new { controller = "Public", action = "Credits", id = UrlParameter.Optional },
|
||||
new string[] { "Disco.Web.Areas.Public.Controllers" }
|
||||
);
|
||||
context.MapRoute(
|
||||
"Public_Licence",
|
||||
"Public/Licence/{id}",
|
||||
new { controller = "Public", action = "Licence", id = UrlParameter.Optional },
|
||||
new string[] { "Disco.Web.Areas.Public.Controllers" }
|
||||
);
|
||||
|
||||
context.MapRoute(
|
||||
"Public_default",
|
||||
"Public/{controller}/{action}/{id}",
|
||||
new { controller = "Public", action = "Index", id = UrlParameter.Optional },
|
||||
new string[] { "Disco.Web.Areas.Public.Controllers" }
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Routing;
|
||||
using SignalR;
|
||||
|
||||
namespace Disco.Web.Areas.Public
|
||||
{
|
||||
public class PublicAreaRegistration : AreaRegistration
|
||||
{
|
||||
public override string AreaName
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Public";
|
||||
}
|
||||
}
|
||||
|
||||
public override void RegisterArea(AreaRegistrationContext context)
|
||||
{
|
||||
context.Routes.MapConnection<BI.Interop.SignalRHandlers.UserHeldDevices>(
|
||||
"Public_UserHeldDevices_Notifications", "Public/UserHeldDevices/Notifications/{*operation}");
|
||||
|
||||
context.MapRoute(
|
||||
"Public_Credits",
|
||||
"Public/Credits/{id}",
|
||||
new { controller = "Public", action = "Credits", id = UrlParameter.Optional },
|
||||
new string[] { "Disco.Web.Areas.Public.Controllers" }
|
||||
);
|
||||
context.MapRoute(
|
||||
"Public_Licence",
|
||||
"Public/Licence/{id}",
|
||||
new { controller = "Public", action = "Licence", id = UrlParameter.Optional },
|
||||
new string[] { "Disco.Web.Areas.Public.Controllers" }
|
||||
);
|
||||
|
||||
context.MapRoute(
|
||||
"Public_default",
|
||||
"Public/{controller}/{action}/{id}",
|
||||
new { controller = "Public", action = "Index", id = UrlParameter.Optional },
|
||||
new string[] { "Disco.Web.Areas.Public.Controllers" }
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,339 +1,339 @@
|
||||
@{
|
||||
ViewBag.Title = "Credits";
|
||||
Html.BundleDeferred("~/Style/Credits");
|
||||
}
|
||||
<h2>
|
||||
Organisations</h2>
|
||||
<div id="organisationCredits">
|
||||
<span class="message">The development team would like to thank the following organisations
|
||||
for their generous contributions:</span>
|
||||
<ul>
|
||||
<li><a href="http://www.geelonghigh.vic.edu.au/" target="_blank">Geelong High School</a></li>
|
||||
<li><a href="http://www.bellarinesc.vic.edu.au/" target="_blank">Bellarine Secondary
|
||||
College</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr />
|
||||
<table id="pageMenu">
|
||||
<tr>
|
||||
<td>
|
||||
<h2>
|
||||
Platform</h2>
|
||||
<div class="pageMenuArea MicrosoftNET">
|
||||
<a href="http://www.microsoft.com/net/" target="_blank">Microsoft .NET Framework</a>
|
||||
<div class="pageMenuBlurb">
|
||||
The Microsoft .NET Framework is the hosting virtual machine most of Disco runs on.
|
||||
Most of Disco's components are written in <a href="http://msdn.microsoft.com/en-us/vstudio/hh388566.aspx"
|
||||
target="_blank">C#</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea MicrosoftASPNET">
|
||||
<a href="http://www.asp.net/" target="_blank">Microsoft ASP.NET Framework</a>
|
||||
<div class="pageMenuBlurb">
|
||||
The Microsoft ASP.NET Framework powers all Web features of this web application.
|
||||
<a href="http://www.nuget.org/packages/Microsoft.Web.Optimization" target="_blank">Microsoft
|
||||
Web Optimization - Bundling</a> is used to provide JavaScript, CSS and LESS
|
||||
minification and bundling.
|
||||
</div>
|
||||
<a href="http://www.asp.net/" target="_blank">Microsoft ASP.NET MVC Framework</a>
|
||||
<div class="pageMenuBlurb">
|
||||
The Microsoft ASP.NET MVC Framework providers the Model-View-Controller pattern
|
||||
for ASP.NET which is implemented by this web application. Most of this web application's
|
||||
views are written in <a href="http://www.asp.net/web-pages/tutorials/basics/2-introduction-to-asp-net-web-programming-using-the-razor-syntax"
|
||||
target="_blank">C# Razor Syntax</a>. Web application start-up time is increase
|
||||
by pre-compiling all Razor views with <a href="http://razorgenerator.codeplex.com/"
|
||||
target="_blank">Razor Generator</a>.
|
||||
</div>
|
||||
<a href="http://www.asp.net/entity-framework" target="_blank">Microsoft .NET Entity
|
||||
Framework</a>
|
||||
<div class="pageMenuBlurb">
|
||||
The Microsoft .NET Entity Framework is the Object-Relational Mapping (ORM) toolset
|
||||
used by this web application.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea MicrosoftSQLServer">
|
||||
<a href="http://www.microsoft.com/sqlserver/" target="_blank">Microsoft SQL Server</a>
|
||||
<div class="pageMenuBlurb">
|
||||
Microsoft SQL Server is used for storage and querying of relational data.
|
||||
</div>
|
||||
<a href="http://msdn.microsoft.com/en-us/data/ff687142" target="_blank">Microsoft SQL
|
||||
Server Compact</a>
|
||||
<div class="pageMenuBlurb">
|
||||
Microsoft SQL Server Compact provides file-based relational data storage. It is
|
||||
used by this web application to store all logs and is available for plug-ins to
|
||||
use for additional storage.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea MicrosoftSilverlight">
|
||||
<a href="http://www.silverlight.net/" target="_blank">Microsoft Silverlight</a>
|
||||
<div class="pageMenuBlurb">
|
||||
Microsoft Silverlight is an application framework for writing and running rich Internet
|
||||
applications. The run-time environment for Silverlight is available as a plug-in
|
||||
for web browsers running under Microsoft Windows and Mac OS X. Silverlight supports
|
||||
multimedia, graphics and animation, and give developers support for CLI languages
|
||||
and development tools.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea SignalR">
|
||||
<a href="http://signalr.net/" target="_blank">SignalR</a><span class="licence"><a
|
||||
href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
SignalR is used extensively by this web application to provide real-time feedback
|
||||
to the client browser. This includes real-time log viewing, enrolment status, document
|
||||
import status and noticeboards.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea nuget">
|
||||
<a href="http://nuget.org/" target="_blank">nuget</a><span class="licence"><a href="http://www.apache.org/licenses/LICENSE-2.0.html"
|
||||
target="_blank">Apache License, Version 2.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
NuGet is a Visual Studio extension that makes it easy to install and update third-party
|
||||
libraries and tools in Visual Studio.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea T4MVC">
|
||||
<a href="http://t4mvc.codeplex.com/" target="_blank">T4MVC</a><span class="licence"><a
|
||||
href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License,
|
||||
Version 2.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
T4MVC is a T4 template for ASP.NET MVC apps that creates strongly typed helpers
|
||||
that eliminate the use of literal strings when referring the controllers, actions
|
||||
and views.
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<h2>
|
||||
SDK/Helpers</h2>
|
||||
<div class="pageMenuArea dotless">
|
||||
<a href="http://www.dotlesscss.org/" target="_blank">.less</a><span class="licence"><a
|
||||
href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License,
|
||||
Version 2.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
.less is a Microsoft .NET Framework port of the popular <a href="http://lesscss.org/"
|
||||
target="_blank">LESS JavaScript library</a>. LESS syntax adds features to the
|
||||
Cascading StyleSheet specification for developers to take advantage of. It is compiled
|
||||
to CSS for the client browser to consume.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea SpringNET">
|
||||
<a href="http://www.springframework.net/" target="_blank">Spring.net</a><span class="licence"><a
|
||||
href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License,
|
||||
Version 2.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
Spring.NET is an open source application framework that makes building enterprise
|
||||
.NET applications easier. In particular, this application makes use of <a href="http://www.springframework.net/doc-latest/reference/html/expressions.html"
|
||||
target="_blank">Spring Expression Evaluation</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea Quartz">
|
||||
<a href="http://quartznet.sourceforge.net/" target="_blank">Quartz.NET</a><span
|
||||
class="licence"><a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache
|
||||
License, Version 2.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
Quartz.NET is a full-featured, open source job scheduling system that can be used
|
||||
from smallest apps to large scale enterprise systems. Quartz.NET is a pure .NET
|
||||
library written in C# and is a port of very popular open source Java job scheduling
|
||||
framework, <a href="http://www.quartz-scheduler.org/" target="_blank">Quartz</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea iTextSharp">
|
||||
<a href="http://sourceforge.net/projects/itextsharp/" target="_blank">iTextSharp</a><span
|
||||
class="licence"><a href="http://opensource.org/licenses/AGPL-3.0" target="_blank">AGPL</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
iText# (iTextSharp) is a port of the iText open source java library for PDF generation
|
||||
written entirely in C# for the .NET platform.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea CrystalIcons">
|
||||
<a href="http://everaldo.com/crystal/" target="_blank">Crystal Project Icons</a><span
|
||||
class="licence"><a href="http://opensource.org/licenses/LGPL-2.1" target="_blank">LGPLv2.1</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
The Crystal Project produces a set of icons targeted towards Linux based operating
|
||||
system distributions.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea JsonNET">
|
||||
<a href="http://json.codeplex.com/" target="_blank">Json.NET</a><span class="licence"><a
|
||||
href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
While in most places the (Microsoft .NET Framework) built-in JSON Serializer is
|
||||
used, however on occasion (and where other frameworks require) Json.NET is used.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea LibTiff">
|
||||
<a href="http://bitmiracle.com/libtiff/" target="_blank">LibTiff.Net</a><span class="licence"><a
|
||||
href="http://bitmiracle.com/libtiff/help/license-and-copyright.aspx" target="_blank">Copyright</a>
|
||||
| <a href="http://opensource.org/licenses/BSD-3-Clause" target="_blank">New BSD</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
LibTiff.Net provides support for the Tag Image File Format (TIFF), a widely used
|
||||
format for storing image data.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea DotNetZip">
|
||||
<a href="http://dotnetzip.codeplex.com/" target="_blank">DotNetZip</a><span class="licence"><a
|
||||
href="http://opensource.org/licenses/MS-PL" target="_blank">Ms-PL</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
DotNetZip is an easy-to-use, FAST, FREE class library and toolset for manipulating
|
||||
zip files or folders.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea SharpSSH">
|
||||
<a href="http://www.tamirgal.com/blog/page/SharpSSH.aspx" target="_blank">SharpSSH</a><span
|
||||
class="licence"><a href="http://www.jcraft.com/jsch/LICENSE.txt" target="_blank">BSD-Style</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
SharpSSH is a pure .NET implementation of the SSH2 client protocol suite. It provides
|
||||
an API for communication with SSH servers and can be integrated into any .NET application.
|
||||
The library is a C# port of the <a href="http://www.jcraft.com/jsch/" target="_blank">
|
||||
JSch</a> project from JCraft Inc.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea ZXing">
|
||||
<a href="http://code.google.com/p/zxing/" target="_blank">ZXing</a><span class="licence"><a
|
||||
href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License,
|
||||
Version 2.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
ZXing (pronounced "zebra crossing") is an open-source, multi-format 1D/2D barcode
|
||||
image processing library implemented in Java, with ports to other languages.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea HtmlAgilityPack">
|
||||
<a href="http://htmlagilitypack.codeplex.com/" target="_blank">Html Agility Pack</a><span
|
||||
class="licence"><a href="http://opensource.org/licenses/MS-PL" target="_blank">Ms-PL</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
This is an agile HTML parser that builds a read/write DOM and supports plain XPATH
|
||||
or XSLT. It is a .NET code library that allows you to parse "out of the web" HTML
|
||||
files. The parser is very tolerant with "real world" malformed HTML.
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<h2>
|
||||
Web Client</h2>
|
||||
<div class="pageMenuArea jQuery">
|
||||
<a href="http://jquery.com/" target="_blank">jQuery</a><span class="licence"><a href="http://www.opensource.org/licenses/mit-license.php"
|
||||
target="_blank">MIT</a>/<a href="http://www.opensource.org/licenses/GPL-2.0" target="_blank">GPLv2</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
jQuery is used extensively by this web application to improve browser compatibility
|
||||
and speed up development by providing query mechanisms for the browsers document
|
||||
object model (DOM).
|
||||
</div>
|
||||
<div class="pageMenuAreaSub">
|
||||
<h3>
|
||||
Plugins:</h3>
|
||||
<div>
|
||||
<a href="http://github.com/jquery/jquery-color#readme" target="_blank">Color</a>
|
||||
- The main purpose of this plugin to animate color properties on elements using
|
||||
jQuery's .animate() <span class="licence"><a href="http://www.opensource.org/licenses/mit-license.php"
|
||||
target="_blank">MIT</a>/<a href="http://www.opensource.org/licenses/GPL-3.0" target="_blank">GPL</a></span>
|
||||
</div>
|
||||
@* <div>
|
||||
<a href="http://plugins.jquery.com/project/equal-height" target="_blank">Equal Height</a>
|
||||
- This plug-in makes HTML-elements equal height by adjusting their min-height CSS
|
||||
properties. <span class="licence"><a href="http://creativecommons.org/licenses/by/3.0/"
|
||||
target="_blank">Creative Commons 3.0 Attribution</a></span>
|
||||
</div>*@
|
||||
<div>
|
||||
<a href="http://www.timdown.co.uk/jshashtable/" target="_blank">jshashtable</a>
|
||||
- jshashtable is a JavaScript implementation of a hash table. It associates objects
|
||||
("keys") with other objects ("values"). <span class="licence"><a href="http://www.apache.org/licenses/LICENSE-2.0.html"
|
||||
target="_blank">Apache License, Version 2.0</a></span>
|
||||
</div>
|
||||
<div>
|
||||
<a href="http://code.google.com/p/jquery-numberformatter/" target="_blank">Number Formatter</a>
|
||||
- This plugin is a number formatting and parsing plugin for jQuery. <span class="licence">
|
||||
<a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a></span>
|
||||
</div>
|
||||
<div>
|
||||
<a href="http://code.google.com/p/jquery-watermark/" target="_blank">Watermark</a>
|
||||
- This simple-to-use jQuery plugin adds watermark capability to HTML input and textarea
|
||||
elements. <span class="licence"><a href="http://www.opensource.org/licenses/mit-license.php"
|
||||
target="_blank">MIT</a>/<a href="http://www.opensource.org/licenses/GPL-2.0" target="_blank">GPL2</a></span>
|
||||
</div>
|
||||
<div>
|
||||
<a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/" target="_blank">
|
||||
Validation</a> - This jQuery plugin makes simple client-side form validation
|
||||
trivial, while offering lots of option for customization. <span class="licence"><a
|
||||
href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a>/<a
|
||||
href="http://www.opensource.org/licenses/GPL-3.0" target="_blank">GPL</a></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea jQueryUI">
|
||||
<a href="http://jqueryui.com/" target="_blank">jQuery UI</a><span class="licence"><a
|
||||
href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a>/<a
|
||||
href="http://www.opensource.org/licenses/GPL-2.0" target="_blank">GPL2</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
jQuery UI is used extensively by this web application to provide in-browser user
|
||||
interface widgets such as dialogs, date pickers and auto-complete drop-down menus.
|
||||
</div>
|
||||
<div class="pageMenuAreaSub">
|
||||
<h3>
|
||||
Plugins:</h3>
|
||||
<div>
|
||||
<a href="http://code.google.com/p/dynatree/" target="_blank">Dynatree</a> - Dynatree
|
||||
is a jQuery plugin that allows the creation of dynamic html tree view controls using
|
||||
JavaScript. <span class="licence"><a href="http://www.opensource.org/licenses/mit-license.php"
|
||||
target="_blank">MIT</a></span>
|
||||
</div>
|
||||
<div>
|
||||
<a href="http://isotope.metafizzy.co/" target="_blank">Isotope</a> - Isotope is
|
||||
a jQuery plugin which provides dynamic layout and transition functionality. <span
|
||||
class="licence"><a href="http://isotope.metafizzy.co/docs/license.html" target="_blank">
|
||||
non-commercial</a></span>
|
||||
</div>
|
||||
<div>
|
||||
<a href="http://code.google.com/p/jquery-timepicker/" target="_blank">TimePicker</a>
|
||||
- jQuery plugin that replaces a single text input with a set of pulldown menus to
|
||||
select hour, minute, and am/pm. <span class="licence"><a href="http://www.opensource.org/licenses/mit-license.php"
|
||||
target="_blank">MIT</a></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea Modernizr">
|
||||
<a href="http://modernizr.com/" target="_blank">Modernizr</a><span class="licence"><a
|
||||
href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a>/<a
|
||||
href="http://modernizr.com/license/" target="_blank">BSD-Style</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
Modernizr is an open-source JavaScript library that helps you build the next generation
|
||||
of HTML5 and CSS3-powered websites.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea knockoutjs">
|
||||
<a href="http://knockoutjs.com/" target="_blank">Knockout.js</a><span class="licence"><a
|
||||
href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
Knockout.js is used by this web application to provider Model-View-Controller (MVC)
|
||||
patterns to the client browser. It enables advanced dynamic layouts such as the
|
||||
real-time enrolment or document import status.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea HighchartsJS">
|
||||
<a href="http://www.highcharts.com/" target="_blank">Highcharts JS</a><span class="licence"><a
|
||||
href="http://creativecommons.org/licenses/by-nc/3.0/" target="_blank">CC 3.0 Attrib-NonCommercial</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
Highcharts JS is used by this web application to display in-browser dynamic charts.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea TinyMCE">
|
||||
<a href="http://www.tinymce.com/" target="_blank">TinyMCE</a><span class="licence"><a
|
||||
href="http://opensource.org/licenses/LGPL-2.1" target="_blank">LGPLv2.1</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
TinyMCE is a platform independent web based JavaScript HTML WYSIWYG editor control.
|
||||
TinyMCE has the ability to convert HTML TEXTAREA fields or other HTML elements to
|
||||
editor instances.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea Shadowboxjs">
|
||||
<a href="http://www.shadowbox-js.com/" target="_blank">Shadowbox.js</a><span class="licence"><a
|
||||
href="http://www.shadowbox-js.com/LICENSE" target="_blank">Non-Commercial License
|
||||
v1.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
Shadowbox is a web-based media viewer application that supports all of the web's
|
||||
most popular media publishing formats. Shadowbox can showcase a wide assortment
|
||||
of media in all major browsers without navigating users away from the linking page.
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@{
|
||||
ViewBag.Title = "Credits";
|
||||
Html.BundleDeferred("~/Style/Credits");
|
||||
}
|
||||
<h2>
|
||||
Organisations</h2>
|
||||
<div id="organisationCredits">
|
||||
<span class="message">The development team would like to thank the following organisations
|
||||
for their generous contributions:</span>
|
||||
<ul>
|
||||
<li><a href="http://www.geelonghigh.vic.edu.au/" target="_blank">Geelong High School</a></li>
|
||||
<li><a href="http://www.bellarinesc.vic.edu.au/" target="_blank">Bellarine Secondary
|
||||
College</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr />
|
||||
<table id="pageMenu">
|
||||
<tr>
|
||||
<td>
|
||||
<h2>
|
||||
Platform</h2>
|
||||
<div class="pageMenuArea MicrosoftNET">
|
||||
<a href="http://www.microsoft.com/net/" target="_blank">Microsoft .NET Framework</a>
|
||||
<div class="pageMenuBlurb">
|
||||
The Microsoft .NET Framework is the hosting virtual machine most of Disco runs on.
|
||||
Most of Disco's components are written in <a href="http://msdn.microsoft.com/en-us/vstudio/hh388566.aspx"
|
||||
target="_blank">C#</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea MicrosoftASPNET">
|
||||
<a href="http://www.asp.net/" target="_blank">Microsoft ASP.NET Framework</a>
|
||||
<div class="pageMenuBlurb">
|
||||
The Microsoft ASP.NET Framework powers all Web features of this web application.
|
||||
<a href="http://www.nuget.org/packages/Microsoft.Web.Optimization" target="_blank">Microsoft
|
||||
Web Optimization - Bundling</a> is used to provide JavaScript, CSS and LESS
|
||||
minification and bundling.
|
||||
</div>
|
||||
<a href="http://www.asp.net/" target="_blank">Microsoft ASP.NET MVC Framework</a>
|
||||
<div class="pageMenuBlurb">
|
||||
The Microsoft ASP.NET MVC Framework providers the Model-View-Controller pattern
|
||||
for ASP.NET which is implemented by this web application. Most of this web application's
|
||||
views are written in <a href="http://www.asp.net/web-pages/tutorials/basics/2-introduction-to-asp-net-web-programming-using-the-razor-syntax"
|
||||
target="_blank">C# Razor Syntax</a>. Web application start-up time is increase
|
||||
by pre-compiling all Razor views with <a href="http://razorgenerator.codeplex.com/"
|
||||
target="_blank">Razor Generator</a>.
|
||||
</div>
|
||||
<a href="http://www.asp.net/entity-framework" target="_blank">Microsoft .NET Entity
|
||||
Framework</a>
|
||||
<div class="pageMenuBlurb">
|
||||
The Microsoft .NET Entity Framework is the Object-Relational Mapping (ORM) toolset
|
||||
used by this web application.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea MicrosoftSQLServer">
|
||||
<a href="http://www.microsoft.com/sqlserver/" target="_blank">Microsoft SQL Server</a>
|
||||
<div class="pageMenuBlurb">
|
||||
Microsoft SQL Server is used for storage and querying of relational data.
|
||||
</div>
|
||||
<a href="http://msdn.microsoft.com/en-us/data/ff687142" target="_blank">Microsoft SQL
|
||||
Server Compact</a>
|
||||
<div class="pageMenuBlurb">
|
||||
Microsoft SQL Server Compact provides file-based relational data storage. It is
|
||||
used by this web application to store all logs and is available for plug-ins to
|
||||
use for additional storage.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea MicrosoftSilverlight">
|
||||
<a href="http://www.silverlight.net/" target="_blank">Microsoft Silverlight</a>
|
||||
<div class="pageMenuBlurb">
|
||||
Microsoft Silverlight is an application framework for writing and running rich Internet
|
||||
applications. The run-time environment for Silverlight is available as a plug-in
|
||||
for web browsers running under Microsoft Windows and Mac OS X. Silverlight supports
|
||||
multimedia, graphics and animation, and give developers support for CLI languages
|
||||
and development tools.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea SignalR">
|
||||
<a href="http://signalr.net/" target="_blank">SignalR</a><span class="licence"><a
|
||||
href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
SignalR is used extensively by this web application to provide real-time feedback
|
||||
to the client browser. This includes real-time log viewing, enrolment status, document
|
||||
import status and noticeboards.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea nuget">
|
||||
<a href="http://nuget.org/" target="_blank">nuget</a><span class="licence"><a href="http://www.apache.org/licenses/LICENSE-2.0.html"
|
||||
target="_blank">Apache License, Version 2.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
NuGet is a Visual Studio extension that makes it easy to install and update third-party
|
||||
libraries and tools in Visual Studio.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea T4MVC">
|
||||
<a href="http://t4mvc.codeplex.com/" target="_blank">T4MVC</a><span class="licence"><a
|
||||
href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License,
|
||||
Version 2.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
T4MVC is a T4 template for ASP.NET MVC apps that creates strongly typed helpers
|
||||
that eliminate the use of literal strings when referring the controllers, actions
|
||||
and views.
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<h2>
|
||||
SDK/Helpers</h2>
|
||||
<div class="pageMenuArea dotless">
|
||||
<a href="http://www.dotlesscss.org/" target="_blank">.less</a><span class="licence"><a
|
||||
href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License,
|
||||
Version 2.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
.less is a Microsoft .NET Framework port of the popular <a href="http://lesscss.org/"
|
||||
target="_blank">LESS JavaScript library</a>. LESS syntax adds features to the
|
||||
Cascading StyleSheet specification for developers to take advantage of. It is compiled
|
||||
to CSS for the client browser to consume.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea SpringNET">
|
||||
<a href="http://www.springframework.net/" target="_blank">Spring.net</a><span class="licence"><a
|
||||
href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License,
|
||||
Version 2.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
Spring.NET is an open source application framework that makes building enterprise
|
||||
.NET applications easier. In particular, this application makes use of <a href="http://www.springframework.net/doc-latest/reference/html/expressions.html"
|
||||
target="_blank">Spring Expression Evaluation</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea Quartz">
|
||||
<a href="http://quartznet.sourceforge.net/" target="_blank">Quartz.NET</a><span
|
||||
class="licence"><a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache
|
||||
License, Version 2.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
Quartz.NET is a full-featured, open source job scheduling system that can be used
|
||||
from smallest apps to large scale enterprise systems. Quartz.NET is a pure .NET
|
||||
library written in C# and is a port of very popular open source Java job scheduling
|
||||
framework, <a href="http://www.quartz-scheduler.org/" target="_blank">Quartz</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea iTextSharp">
|
||||
<a href="http://sourceforge.net/projects/itextsharp/" target="_blank">iTextSharp</a><span
|
||||
class="licence"><a href="http://opensource.org/licenses/AGPL-3.0" target="_blank">AGPL</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
iText# (iTextSharp) is a port of the iText open source java library for PDF generation
|
||||
written entirely in C# for the .NET platform.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea CrystalIcons">
|
||||
<a href="http://everaldo.com/crystal/" target="_blank">Crystal Project Icons</a><span
|
||||
class="licence"><a href="http://opensource.org/licenses/LGPL-2.1" target="_blank">LGPLv2.1</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
The Crystal Project produces a set of icons targeted towards Linux based operating
|
||||
system distributions.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea JsonNET">
|
||||
<a href="http://json.codeplex.com/" target="_blank">Json.NET</a><span class="licence"><a
|
||||
href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
While in most places the (Microsoft .NET Framework) built-in JSON Serializer is
|
||||
used, however on occasion (and where other frameworks require) Json.NET is used.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea LibTiff">
|
||||
<a href="http://bitmiracle.com/libtiff/" target="_blank">LibTiff.Net</a><span class="licence"><a
|
||||
href="http://bitmiracle.com/libtiff/help/license-and-copyright.aspx" target="_blank">Copyright</a>
|
||||
| <a href="http://opensource.org/licenses/BSD-3-Clause" target="_blank">New BSD</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
LibTiff.Net provides support for the Tag Image File Format (TIFF), a widely used
|
||||
format for storing image data.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea DotNetZip">
|
||||
<a href="http://dotnetzip.codeplex.com/" target="_blank">DotNetZip</a><span class="licence"><a
|
||||
href="http://opensource.org/licenses/MS-PL" target="_blank">Ms-PL</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
DotNetZip is an easy-to-use, FAST, FREE class library and toolset for manipulating
|
||||
zip files or folders.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea SharpSSH">
|
||||
<a href="http://www.tamirgal.com/blog/page/SharpSSH.aspx" target="_blank">SharpSSH</a><span
|
||||
class="licence"><a href="http://www.jcraft.com/jsch/LICENSE.txt" target="_blank">BSD-Style</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
SharpSSH is a pure .NET implementation of the SSH2 client protocol suite. It provides
|
||||
an API for communication with SSH servers and can be integrated into any .NET application.
|
||||
The library is a C# port of the <a href="http://www.jcraft.com/jsch/" target="_blank">
|
||||
JSch</a> project from JCraft Inc.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea ZXing">
|
||||
<a href="http://code.google.com/p/zxing/" target="_blank">ZXing</a><span class="licence"><a
|
||||
href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License,
|
||||
Version 2.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
ZXing (pronounced "zebra crossing") is an open-source, multi-format 1D/2D barcode
|
||||
image processing library implemented in Java, with ports to other languages.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea HtmlAgilityPack">
|
||||
<a href="http://htmlagilitypack.codeplex.com/" target="_blank">Html Agility Pack</a><span
|
||||
class="licence"><a href="http://opensource.org/licenses/MS-PL" target="_blank">Ms-PL</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
This is an agile HTML parser that builds a read/write DOM and supports plain XPATH
|
||||
or XSLT. It is a .NET code library that allows you to parse "out of the web" HTML
|
||||
files. The parser is very tolerant with "real world" malformed HTML.
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<h2>
|
||||
Web Client</h2>
|
||||
<div class="pageMenuArea jQuery">
|
||||
<a href="http://jquery.com/" target="_blank">jQuery</a><span class="licence"><a href="http://www.opensource.org/licenses/mit-license.php"
|
||||
target="_blank">MIT</a>/<a href="http://www.opensource.org/licenses/GPL-2.0" target="_blank">GPLv2</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
jQuery is used extensively by this web application to improve browser compatibility
|
||||
and speed up development by providing query mechanisms for the browsers document
|
||||
object model (DOM).
|
||||
</div>
|
||||
<div class="pageMenuAreaSub">
|
||||
<h3>
|
||||
Plugins:</h3>
|
||||
<div>
|
||||
<a href="http://github.com/jquery/jquery-color#readme" target="_blank">Color</a>
|
||||
- The main purpose of this plugin to animate color properties on elements using
|
||||
jQuery's .animate() <span class="licence"><a href="http://www.opensource.org/licenses/mit-license.php"
|
||||
target="_blank">MIT</a>/<a href="http://www.opensource.org/licenses/GPL-3.0" target="_blank">GPL</a></span>
|
||||
</div>
|
||||
@* <div>
|
||||
<a href="http://plugins.jquery.com/project/equal-height" target="_blank">Equal Height</a>
|
||||
- This plug-in makes HTML-elements equal height by adjusting their min-height CSS
|
||||
properties. <span class="licence"><a href="http://creativecommons.org/licenses/by/3.0/"
|
||||
target="_blank">Creative Commons 3.0 Attribution</a></span>
|
||||
</div>*@
|
||||
<div>
|
||||
<a href="http://www.timdown.co.uk/jshashtable/" target="_blank">jshashtable</a>
|
||||
- jshashtable is a JavaScript implementation of a hash table. It associates objects
|
||||
("keys") with other objects ("values"). <span class="licence"><a href="http://www.apache.org/licenses/LICENSE-2.0.html"
|
||||
target="_blank">Apache License, Version 2.0</a></span>
|
||||
</div>
|
||||
<div>
|
||||
<a href="http://code.google.com/p/jquery-numberformatter/" target="_blank">Number Formatter</a>
|
||||
- This plugin is a number formatting and parsing plugin for jQuery. <span class="licence">
|
||||
<a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a></span>
|
||||
</div>
|
||||
<div>
|
||||
<a href="http://code.google.com/p/jquery-watermark/" target="_blank">Watermark</a>
|
||||
- This simple-to-use jQuery plugin adds watermark capability to HTML input and textarea
|
||||
elements. <span class="licence"><a href="http://www.opensource.org/licenses/mit-license.php"
|
||||
target="_blank">MIT</a>/<a href="http://www.opensource.org/licenses/GPL-2.0" target="_blank">GPL2</a></span>
|
||||
</div>
|
||||
<div>
|
||||
<a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/" target="_blank">
|
||||
Validation</a> - This jQuery plugin makes simple client-side form validation
|
||||
trivial, while offering lots of option for customization. <span class="licence"><a
|
||||
href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a>/<a
|
||||
href="http://www.opensource.org/licenses/GPL-3.0" target="_blank">GPL</a></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea jQueryUI">
|
||||
<a href="http://jqueryui.com/" target="_blank">jQuery UI</a><span class="licence"><a
|
||||
href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a>/<a
|
||||
href="http://www.opensource.org/licenses/GPL-2.0" target="_blank">GPL2</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
jQuery UI is used extensively by this web application to provide in-browser user
|
||||
interface widgets such as dialogs, date pickers and auto-complete drop-down menus.
|
||||
</div>
|
||||
<div class="pageMenuAreaSub">
|
||||
<h3>
|
||||
Plugins:</h3>
|
||||
<div>
|
||||
<a href="http://code.google.com/p/dynatree/" target="_blank">Dynatree</a> - Dynatree
|
||||
is a jQuery plugin that allows the creation of dynamic html tree view controls using
|
||||
JavaScript. <span class="licence"><a href="http://www.opensource.org/licenses/mit-license.php"
|
||||
target="_blank">MIT</a></span>
|
||||
</div>
|
||||
<div>
|
||||
<a href="http://isotope.metafizzy.co/" target="_blank">Isotope</a> - Isotope is
|
||||
a jQuery plugin which provides dynamic layout and transition functionality. <span
|
||||
class="licence"><a href="http://isotope.metafizzy.co/docs/license.html" target="_blank">
|
||||
non-commercial</a></span>
|
||||
</div>
|
||||
<div>
|
||||
<a href="http://code.google.com/p/jquery-timepicker/" target="_blank">TimePicker</a>
|
||||
- jQuery plugin that replaces a single text input with a set of pulldown menus to
|
||||
select hour, minute, and am/pm. <span class="licence"><a href="http://www.opensource.org/licenses/mit-license.php"
|
||||
target="_blank">MIT</a></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea Modernizr">
|
||||
<a href="http://modernizr.com/" target="_blank">Modernizr</a><span class="licence"><a
|
||||
href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a>/<a
|
||||
href="http://modernizr.com/license/" target="_blank">BSD-Style</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
Modernizr is an open-source JavaScript library that helps you build the next generation
|
||||
of HTML5 and CSS3-powered websites.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea knockoutjs">
|
||||
<a href="http://knockoutjs.com/" target="_blank">Knockout.js</a><span class="licence"><a
|
||||
href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
Knockout.js is used by this web application to provider Model-View-Controller (MVC)
|
||||
patterns to the client browser. It enables advanced dynamic layouts such as the
|
||||
real-time enrolment or document import status.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea HighchartsJS">
|
||||
<a href="http://www.highcharts.com/" target="_blank">Highcharts JS</a><span class="licence"><a
|
||||
href="http://creativecommons.org/licenses/by-nc/3.0/" target="_blank">CC 3.0 Attrib-NonCommercial</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
Highcharts JS is used by this web application to display in-browser dynamic charts.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea TinyMCE">
|
||||
<a href="http://www.tinymce.com/" target="_blank">TinyMCE</a><span class="licence"><a
|
||||
href="http://opensource.org/licenses/LGPL-2.1" target="_blank">LGPLv2.1</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
TinyMCE is a platform independent web based JavaScript HTML WYSIWYG editor control.
|
||||
TinyMCE has the ability to convert HTML TEXTAREA fields or other HTML elements to
|
||||
editor instances.
|
||||
</div>
|
||||
</div>
|
||||
<div class="pageMenuArea Shadowboxjs">
|
||||
<a href="http://www.shadowbox-js.com/" target="_blank">Shadowbox.js</a><span class="licence"><a
|
||||
href="http://www.shadowbox-js.com/LICENSE" target="_blank">Non-Commercial License
|
||||
v1.0</a></span>
|
||||
<div class="pageMenuBlurb">
|
||||
Shadowbox is a web-based media viewer application that supports all of the web's
|
||||
most popular media publishing formats. Shadowbox can showcase a wide assortment
|
||||
of media in all major browsers without navigating users away from the linking page.
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,29 +1,29 @@
|
||||
@{
|
||||
ViewBag.Title = Html.ToBreadcrumb("Public Reports", null);
|
||||
}
|
||||
<table id="pageMenu">
|
||||
<tr>
|
||||
<td style="width: 50%">
|
||||
<div class="pageMenuArea">
|
||||
<h2>
|
||||
Technician Held Devices</h2>
|
||||
@Html.ActionLinkClass("Report", MVC.Public.UserHeldDevices.Index(), "report")
|
||||
<div class="pageMenuBlurb">
|
||||
Display users involved in current jobs where the user's device is held by the technicians.
|
||||
Also displays users which should report to the technicians to collect their device
|
||||
which is ready to be returned to them.
|
||||
</div>
|
||||
@Html.ActionLinkClass("Noticeboard", MVC.Public.UserHeldDevices.Noticeboard(), "noticeboard")
|
||||
<div class="pageMenuBlurb">
|
||||
Display a full-screen active noticeboard screen which lists users involved in current
|
||||
jobs where the user's device is held by the technicians. Also displays users which
|
||||
should report to the technicians to collect their device which is ready to be returned
|
||||
to them.
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="width: 50%">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@{
|
||||
ViewBag.Title = Html.ToBreadcrumb("Public Reports", null);
|
||||
}
|
||||
<table id="pageMenu">
|
||||
<tr>
|
||||
<td style="width: 50%">
|
||||
<div class="pageMenuArea">
|
||||
<h2>
|
||||
Technician Held Devices</h2>
|
||||
@Html.ActionLinkClass("Report", MVC.Public.UserHeldDevices.Index(), "report")
|
||||
<div class="pageMenuBlurb">
|
||||
Display users involved in current jobs where the user's device is held by the technicians.
|
||||
Also displays users which should report to the technicians to collect their device
|
||||
which is ready to be returned to them.
|
||||
</div>
|
||||
@Html.ActionLinkClass("Noticeboard", MVC.Public.UserHeldDevices.Noticeboard(), "noticeboard")
|
||||
<div class="pageMenuBlurb">
|
||||
Display a full-screen active noticeboard screen which lists users involved in current
|
||||
jobs where the user's device is held by the technicians. Also displays users which
|
||||
should report to the technicians to collect their device which is ready to be returned
|
||||
to them.
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="width: 50%">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,115 +1,115 @@
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.17929
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Public.Views.Public
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Public/Views/Public/Index.cshtml")]
|
||||
public class Index : System.Web.Mvc.WebViewPage<dynamic>
|
||||
{
|
||||
public Index()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 1 "..\..\Areas\Public\Views\Public\Index.cshtml"
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Public Reports", null);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n<table");
|
||||
|
||||
WriteLiteral(" id=\"pageMenu\"");
|
||||
|
||||
WriteLiteral(">\r\n <tr>\r\n <td");
|
||||
|
||||
WriteLiteral(" style=\"width: 50%\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"pageMenuArea\"");
|
||||
|
||||
WriteLiteral(">\r\n <h2>\r\n Technician Held Devices</h2>\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 10 "..\..\Areas\Public\Views\Public\Index.cshtml"
|
||||
Write(Html.ActionLinkClass("Report", MVC.Public.UserHeldDevices.Index(), "report"));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"pageMenuBlurb\"");
|
||||
|
||||
WriteLiteral(@">
|
||||
Display users involved in current jobs where the user's device is held by the technicians.
|
||||
Also displays users which should report to the technicians to collect their device
|
||||
which is ready to be returned to them.
|
||||
</div>
|
||||
");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 16 "..\..\Areas\Public\Views\Public\Index.cshtml"
|
||||
Write(Html.ActionLinkClass("Noticeboard", MVC.Public.UserHeldDevices.Noticeboard(), "noticeboard"));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"pageMenuBlurb\"");
|
||||
|
||||
WriteLiteral(@">
|
||||
Display a full-screen active noticeboard screen which lists users involved in current
|
||||
jobs where the user's device is held by the technicians. Also displays users which
|
||||
should report to the technicians to collect their device which is ready to be returned
|
||||
to them.
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td");
|
||||
|
||||
WriteLiteral(" style=\"width: 50%\"");
|
||||
|
||||
WriteLiteral(">\r\n \r\n </td>\r\n </tr>\r\n</table>\r\n");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.17929
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Public.Views.Public
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Public/Views/Public/Index.cshtml")]
|
||||
public class Index : System.Web.Mvc.WebViewPage<dynamic>
|
||||
{
|
||||
public Index()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 1 "..\..\Areas\Public\Views\Public\Index.cshtml"
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Public Reports", null);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n<table");
|
||||
|
||||
WriteLiteral(" id=\"pageMenu\"");
|
||||
|
||||
WriteLiteral(">\r\n <tr>\r\n <td");
|
||||
|
||||
WriteLiteral(" style=\"width: 50%\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"pageMenuArea\"");
|
||||
|
||||
WriteLiteral(">\r\n <h2>\r\n Technician Held Devices</h2>\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 10 "..\..\Areas\Public\Views\Public\Index.cshtml"
|
||||
Write(Html.ActionLinkClass("Report", MVC.Public.UserHeldDevices.Index(), "report"));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"pageMenuBlurb\"");
|
||||
|
||||
WriteLiteral(@">
|
||||
Display users involved in current jobs where the user's device is held by the technicians.
|
||||
Also displays users which should report to the technicians to collect their device
|
||||
which is ready to be returned to them.
|
||||
</div>
|
||||
");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 16 "..\..\Areas\Public\Views\Public\Index.cshtml"
|
||||
Write(Html.ActionLinkClass("Noticeboard", MVC.Public.UserHeldDevices.Noticeboard(), "noticeboard"));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"pageMenuBlurb\"");
|
||||
|
||||
WriteLiteral(@">
|
||||
Display a full-screen active noticeboard screen which lists users involved in current
|
||||
jobs where the user's device is held by the technicians. Also displays users which
|
||||
should report to the technicians to collect their device which is ready to be returned
|
||||
to them.
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td");
|
||||
|
||||
WriteLiteral(" style=\"width: 50%\"");
|
||||
|
||||
WriteLiteral(">\r\n \r\n </td>\r\n </tr>\r\n</table>\r\n");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,42 +1,42 @@
|
||||
@{
|
||||
Html.BundleDeferred("~/Style/Site");
|
||||
Html.BundleDeferred("~/ClientScripts/Core");
|
||||
}
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Disco - @CommonHelpers.BreadcrumbsTitle(ViewBag.Title)</title>
|
||||
@Html.BundleRenderDeferred()
|
||||
@RenderSection("head", false)
|
||||
</head>
|
||||
<body class="layout">
|
||||
<div class="page">
|
||||
<header>
|
||||
<div class="clearfix">
|
||||
<div id="heading">
|
||||
<a href="@Url.Action(MVC.Public.Public.Index())">
|
||||
<img src="@Links.ClientSource.Style.Images.Heading_png" alt="DISCO - ICT Asset Management" /></a>
|
||||
</div>
|
||||
<div id="headerMenu">
|
||||
</div>
|
||||
</div>
|
||||
<nav>
|
||||
<ul id="menu">
|
||||
<li>@Html.ActionLink("Public Reports", MVC.Public.Public.Index())</li>
|
||||
<li class="sep"></li>
|
||||
<li style="margin-left: 10px;">@Html.ActionLink("Disco Administration", MVC.Job.Index(), accesskey: "1")</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<div id="layout_PageHeading">@CommonHelpers.Breadcrumbs(ViewBag.Title)</div>
|
||||
<section id="layout_Page">
|
||||
@RenderBody()
|
||||
</section>
|
||||
<footer>
|
||||
Disco v@(Disco.Web.DiscoApplication.Version) @@ @(Disco.Web.DiscoApplication.OrganisationName) | @Html.ActionLink("Credits", MVC.Public.Public.Credits()) | @Html.ActionLink("Licence", MVC.Public.Public.Licence())
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@{
|
||||
Html.BundleDeferred("~/Style/Site");
|
||||
Html.BundleDeferred("~/ClientScripts/Core");
|
||||
}
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Disco - @CommonHelpers.BreadcrumbsTitle(ViewBag.Title)</title>
|
||||
@Html.BundleRenderDeferred()
|
||||
@RenderSection("head", false)
|
||||
</head>
|
||||
<body class="layout">
|
||||
<div class="page">
|
||||
<header>
|
||||
<div class="clearfix">
|
||||
<div id="heading">
|
||||
<a href="@Url.Action(MVC.Public.Public.Index())">
|
||||
<img src="@Links.ClientSource.Style.Images.Heading_png" alt="DISCO - ICT Asset Management" /></a>
|
||||
</div>
|
||||
<div id="headerMenu">
|
||||
</div>
|
||||
</div>
|
||||
<nav>
|
||||
<ul id="menu">
|
||||
<li>@Html.ActionLink("Public Reports", MVC.Public.Public.Index())</li>
|
||||
<li class="sep"></li>
|
||||
<li style="margin-left: 10px;">@Html.ActionLink("Disco Administration", MVC.Job.Index(), accesskey: "1")</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<div id="layout_PageHeading">@CommonHelpers.Breadcrumbs(ViewBag.Title)</div>
|
||||
<section id="layout_Page">
|
||||
@RenderBody()
|
||||
</section>
|
||||
<footer>
|
||||
Disco v@(Disco.Web.DiscoApplication.Version) @@ @(Disco.Web.DiscoApplication.OrganisationName) | @Html.ActionLink("Credits", MVC.Public.Public.Credits()) | @Html.ActionLink("Licence", MVC.Public.Public.Licence())
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,242 +1,242 @@
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.17929
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Public.Views.Shared
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Public/Views/Shared/_Layout.cshtml")]
|
||||
public class Layout : System.Web.Mvc.WebViewPage<dynamic>
|
||||
{
|
||||
public Layout()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 1 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
|
||||
Html.BundleDeferred("~/Style/Site");
|
||||
Html.BundleDeferred("~/ClientScripts/Core");
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n <meta");
|
||||
|
||||
WriteLiteral(" charset=\"utf-8\"");
|
||||
|
||||
WriteLiteral(" />\r\n <meta");
|
||||
|
||||
WriteLiteral(" http-equiv=\"X-UA-Compatible\"");
|
||||
|
||||
WriteLiteral(" content=\"IE=edge\"");
|
||||
|
||||
WriteLiteral(" />\r\n <title>Disco - ");
|
||||
|
||||
|
||||
#line 10 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(CommonHelpers.BreadcrumbsTitle(ViewBag.Title));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</title>\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 11 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Html.BundleRenderDeferred());
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 12 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(RenderSection("head", false));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n</head>\r\n<body");
|
||||
|
||||
WriteLiteral(" class=\"layout\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"page\"");
|
||||
|
||||
WriteLiteral(">\r\n <header>\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"clearfix\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"heading\"");
|
||||
|
||||
WriteLiteral(">\r\n <a");
|
||||
|
||||
WriteAttribute("href", Tuple.Create(" href=\"", 535), Tuple.Create("\"", 580)
|
||||
|
||||
#line 19 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 542), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Public.Public.Index())
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 542), false)
|
||||
);
|
||||
|
||||
WriteLiteral(">\r\n <img");
|
||||
|
||||
WriteAttribute("src", Tuple.Create(" src=\"", 612), Tuple.Create("\"", 662)
|
||||
|
||||
#line 20 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 618), Tuple.Create<System.Object, System.Int32>(Links.ClientSource.Style.Images.Heading_png
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 618), false)
|
||||
);
|
||||
|
||||
WriteLiteral(" alt=\"DISCO - ICT Asset Management\"");
|
||||
|
||||
WriteLiteral(" /></a>\r\n </div>\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"headerMenu\"");
|
||||
|
||||
WriteLiteral(">\r\n </div>\r\n </div>\r\n <nav>\r\n " +
|
||||
" <ul");
|
||||
|
||||
WriteLiteral(" id=\"menu\"");
|
||||
|
||||
WriteLiteral(">\r\n <li>");
|
||||
|
||||
|
||||
#line 27 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Html.ActionLink("Public Reports", MVC.Public.Public.Index()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</li>\r\n <li");
|
||||
|
||||
WriteLiteral(" class=\"sep\"");
|
||||
|
||||
WriteLiteral("></li>\r\n <li");
|
||||
|
||||
WriteLiteral(" style=\"margin-left: 10px;\"");
|
||||
|
||||
WriteLiteral(">");
|
||||
|
||||
|
||||
#line 29 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Html.ActionLink("Disco Administration", MVC.Job.Index(), accesskey: "1"));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</li>\r\n </ul>\r\n </nav>\r\n </header>\r\n <div" +
|
||||
"");
|
||||
|
||||
WriteLiteral(" id=\"layout_PageHeading\"");
|
||||
|
||||
WriteLiteral(">");
|
||||
|
||||
|
||||
#line 33 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(CommonHelpers.Breadcrumbs(ViewBag.Title));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</div>\r\n <section");
|
||||
|
||||
WriteLiteral(" id=\"layout_Page\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 35 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(RenderBody());
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </section>\r\n <footer>\r\n Disco v");
|
||||
|
||||
|
||||
#line 38 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Disco.Web.DiscoApplication.Version);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
WriteLiteral("@ ");
|
||||
|
||||
|
||||
#line 38 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Disco.Web.DiscoApplication.OrganisationName);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" | ");
|
||||
|
||||
|
||||
#line 38 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Html.ActionLink("Credits", MVC.Public.Public.Credits()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" | ");
|
||||
|
||||
|
||||
#line 38 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Html.ActionLink("Licence", MVC.Public.Public.Licence()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </footer>\r\n </div>\r\n</body>\r\n</html>\r\n");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.17929
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Public.Views.Shared
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Public/Views/Shared/_Layout.cshtml")]
|
||||
public class Layout : System.Web.Mvc.WebViewPage<dynamic>
|
||||
{
|
||||
public Layout()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 1 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
|
||||
Html.BundleDeferred("~/Style/Site");
|
||||
Html.BundleDeferred("~/ClientScripts/Core");
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n <meta");
|
||||
|
||||
WriteLiteral(" charset=\"utf-8\"");
|
||||
|
||||
WriteLiteral(" />\r\n <meta");
|
||||
|
||||
WriteLiteral(" http-equiv=\"X-UA-Compatible\"");
|
||||
|
||||
WriteLiteral(" content=\"IE=edge\"");
|
||||
|
||||
WriteLiteral(" />\r\n <title>Disco - ");
|
||||
|
||||
|
||||
#line 10 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(CommonHelpers.BreadcrumbsTitle(ViewBag.Title));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</title>\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 11 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Html.BundleRenderDeferred());
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 12 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(RenderSection("head", false));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n</head>\r\n<body");
|
||||
|
||||
WriteLiteral(" class=\"layout\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"page\"");
|
||||
|
||||
WriteLiteral(">\r\n <header>\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"clearfix\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"heading\"");
|
||||
|
||||
WriteLiteral(">\r\n <a");
|
||||
|
||||
WriteAttribute("href", Tuple.Create(" href=\"", 535), Tuple.Create("\"", 580)
|
||||
|
||||
#line 19 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 542), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Public.Public.Index())
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 542), false)
|
||||
);
|
||||
|
||||
WriteLiteral(">\r\n <img");
|
||||
|
||||
WriteAttribute("src", Tuple.Create(" src=\"", 612), Tuple.Create("\"", 662)
|
||||
|
||||
#line 20 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 618), Tuple.Create<System.Object, System.Int32>(Links.ClientSource.Style.Images.Heading_png
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 618), false)
|
||||
);
|
||||
|
||||
WriteLiteral(" alt=\"DISCO - ICT Asset Management\"");
|
||||
|
||||
WriteLiteral(" /></a>\r\n </div>\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"headerMenu\"");
|
||||
|
||||
WriteLiteral(">\r\n </div>\r\n </div>\r\n <nav>\r\n " +
|
||||
" <ul");
|
||||
|
||||
WriteLiteral(" id=\"menu\"");
|
||||
|
||||
WriteLiteral(">\r\n <li>");
|
||||
|
||||
|
||||
#line 27 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Html.ActionLink("Public Reports", MVC.Public.Public.Index()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</li>\r\n <li");
|
||||
|
||||
WriteLiteral(" class=\"sep\"");
|
||||
|
||||
WriteLiteral("></li>\r\n <li");
|
||||
|
||||
WriteLiteral(" style=\"margin-left: 10px;\"");
|
||||
|
||||
WriteLiteral(">");
|
||||
|
||||
|
||||
#line 29 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Html.ActionLink("Disco Administration", MVC.Job.Index(), accesskey: "1"));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</li>\r\n </ul>\r\n </nav>\r\n </header>\r\n <div" +
|
||||
"");
|
||||
|
||||
WriteLiteral(" id=\"layout_PageHeading\"");
|
||||
|
||||
WriteLiteral(">");
|
||||
|
||||
|
||||
#line 33 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(CommonHelpers.Breadcrumbs(ViewBag.Title));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</div>\r\n <section");
|
||||
|
||||
WriteLiteral(" id=\"layout_Page\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 35 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(RenderBody());
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </section>\r\n <footer>\r\n Disco v");
|
||||
|
||||
|
||||
#line 38 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Disco.Web.DiscoApplication.Version);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
WriteLiteral("@ ");
|
||||
|
||||
|
||||
#line 38 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Disco.Web.DiscoApplication.OrganisationName);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" | ");
|
||||
|
||||
|
||||
#line 38 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Html.ActionLink("Credits", MVC.Public.Public.Credits()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" | ");
|
||||
|
||||
|
||||
#line 38 "..\..\Areas\Public\Views\Shared\_Layout.cshtml"
|
||||
Write(Html.ActionLink("Licence", MVC.Public.Public.Licence()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </footer>\r\n </div>\r\n</body>\r\n</html>\r\n");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
|
||||
@@ -1,77 +1,77 @@
|
||||
@model IEnumerable<Disco.Web.Areas.Public.Models.UserHeldDevices.UserHeldDeviceModel>
|
||||
@{
|
||||
ViewBag.Title = Html.ToBreadcrumb("Public Reports", MVC.Public.Public.Index(), "Technician Held Devices", null);
|
||||
Html.BundleDeferred("~/Style/Public/UserHeldDevices");
|
||||
}
|
||||
<div class="clearfix page">
|
||||
<div class="column1">
|
||||
@{
|
||||
var DevicesInProcess = Model.Where(i => !i.ReadyForReturn && !i.WaitingForUserAction).ToArray();
|
||||
}
|
||||
<h2>
|
||||
In Process (@DevicesInProcess.Length)</h2>
|
||||
<table class="dataTable">
|
||||
@foreach (var item in DevicesInProcess)
|
||||
{
|
||||
<tr>
|
||||
<td class="userId">
|
||||
@item.UserId
|
||||
</td>
|
||||
<td class="userDisplayName">
|
||||
@item.UserDisplayName@{
|
||||
if (!string.IsNullOrEmpty(item.EstimatedReturnTime))
|
||||
{
|
||||
<span class="smallMessage">(Expected: @item.EstimatedReturnTime)</span>
|
||||
}
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</div>
|
||||
<div class="column2">
|
||||
@{
|
||||
var WaitingForUserActionJobs = Model.Where(i => i.WaitingForUserAction).ToArray();
|
||||
}
|
||||
<h2>
|
||||
Waiting for User Action (@WaitingForUserActionJobs.Length)</h2>
|
||||
<table class="dataTable">
|
||||
@foreach (var item in WaitingForUserActionJobs)
|
||||
{
|
||||
<tr>
|
||||
<td class="userId">
|
||||
@item.UserId
|
||||
</td>
|
||||
<td class="userDisplayName">
|
||||
@item.UserDisplayName
|
||||
</td>
|
||||
<td class="timestamp@(item.IsAlert ? " Alert" : string.Empty)">
|
||||
Since @item.WaitingForUserActionSince
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
<hr />
|
||||
@{
|
||||
var DevicesReadyForReturn = Model.Where(i => i.ReadyForReturn && !i.WaitingForUserAction).ToArray();
|
||||
}
|
||||
<h2>
|
||||
Ready for Return (@DevicesReadyForReturn.Length)</h2>
|
||||
<table class="dataTable">
|
||||
@foreach (var item in DevicesReadyForReturn)
|
||||
{
|
||||
<tr>
|
||||
<td class="userId">
|
||||
@item.UserId
|
||||
</td>
|
||||
<td class="userDisplayName">
|
||||
@item.UserDisplayName
|
||||
</td>
|
||||
<td class="timestamp@(item.IsAlert ? " Alert" : string.Empty)">
|
||||
Ready @item.ReadyForReturnSince
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@model IEnumerable<Disco.Web.Areas.Public.Models.UserHeldDevices.UserHeldDeviceModel>
|
||||
@{
|
||||
ViewBag.Title = Html.ToBreadcrumb("Public Reports", MVC.Public.Public.Index(), "Technician Held Devices", null);
|
||||
Html.BundleDeferred("~/Style/Public/UserHeldDevices");
|
||||
}
|
||||
<div class="clearfix page">
|
||||
<div class="column1">
|
||||
@{
|
||||
var DevicesInProcess = Model.Where(i => !i.ReadyForReturn && !i.WaitingForUserAction).ToArray();
|
||||
}
|
||||
<h2>
|
||||
In Process (@DevicesInProcess.Length)</h2>
|
||||
<table class="dataTable">
|
||||
@foreach (var item in DevicesInProcess)
|
||||
{
|
||||
<tr>
|
||||
<td class="userId">
|
||||
@item.UserId
|
||||
</td>
|
||||
<td class="userDisplayName">
|
||||
@item.UserDisplayName@{
|
||||
if (!string.IsNullOrEmpty(item.EstimatedReturnTime))
|
||||
{
|
||||
<span class="smallMessage">(Expected: @item.EstimatedReturnTime)</span>
|
||||
}
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</div>
|
||||
<div class="column2">
|
||||
@{
|
||||
var WaitingForUserActionJobs = Model.Where(i => i.WaitingForUserAction).ToArray();
|
||||
}
|
||||
<h2>
|
||||
Waiting for User Action (@WaitingForUserActionJobs.Length)</h2>
|
||||
<table class="dataTable">
|
||||
@foreach (var item in WaitingForUserActionJobs)
|
||||
{
|
||||
<tr>
|
||||
<td class="userId">
|
||||
@item.UserId
|
||||
</td>
|
||||
<td class="userDisplayName">
|
||||
@item.UserDisplayName
|
||||
</td>
|
||||
<td class="timestamp@(item.IsAlert ? " Alert" : string.Empty)">
|
||||
Since @item.WaitingForUserActionSince
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
<hr />
|
||||
@{
|
||||
var DevicesReadyForReturn = Model.Where(i => i.ReadyForReturn && !i.WaitingForUserAction).ToArray();
|
||||
}
|
||||
<h2>
|
||||
Ready for Return (@DevicesReadyForReturn.Length)</h2>
|
||||
<table class="dataTable">
|
||||
@foreach (var item in DevicesReadyForReturn)
|
||||
{
|
||||
<tr>
|
||||
<td class="userId">
|
||||
@item.UserId
|
||||
</td>
|
||||
<td class="userDisplayName">
|
||||
@item.UserDisplayName
|
||||
</td>
|
||||
<td class="timestamp@(item.IsAlert ? " Alert" : string.Empty)">
|
||||
Ready @item.ReadyForReturnSince
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,396 +1,396 @@
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.17929
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Public.Views.UserHeldDevices
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Public/Views/UserHeldDevices/Index.cshtml")]
|
||||
public class Index : System.Web.Mvc.WebViewPage<IEnumerable<Disco.Web.Areas.Public.Models.UserHeldDevices.UserHeldDeviceModel>>
|
||||
{
|
||||
public Index()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 2 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Public Reports", MVC.Public.Public.Index(), "Technician Held Devices", null);
|
||||
Html.BundleDeferred("~/Style/Public/UserHeldDevices");
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n<div");
|
||||
|
||||
WriteLiteral(" class=\"clearfix page\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"column1\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 8 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 8 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
var DevicesInProcess = Model.Where(i => !i.ReadyForReturn && !i.WaitingForUserAction).ToArray();
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n <h2>\r\n In Process (");
|
||||
|
||||
|
||||
#line 12 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(DevicesInProcess.Length);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(")</h2>\r\n <table");
|
||||
|
||||
WriteLiteral(" class=\"dataTable\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 14 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 14 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
foreach (var item in DevicesInProcess)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <tr>\r\n <td");
|
||||
|
||||
WriteLiteral(" class=\"userId\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 18 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.UserId);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n <td");
|
||||
|
||||
WriteLiteral(" class=\"userDisplayName\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 21 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.UserDisplayName);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 21 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
if (!string.IsNullOrEmpty(item.EstimatedReturnTime))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <span");
|
||||
|
||||
WriteLiteral(" class=\"smallMessage\"");
|
||||
|
||||
WriteLiteral(">(Expected: ");
|
||||
|
||||
|
||||
#line 24 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.EstimatedReturnTime);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(")</span>\r\n");
|
||||
|
||||
|
||||
#line 25 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
|
||||
|
||||
|
||||
#line 29 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </table>\r\n </div>\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"column2\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 33 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 33 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
var WaitingForUserActionJobs = Model.Where(i => i.WaitingForUserAction).ToArray();
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n <h2>\r\n Waiting for User Action (");
|
||||
|
||||
|
||||
#line 37 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(WaitingForUserActionJobs.Length);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(")</h2>\r\n <table");
|
||||
|
||||
WriteLiteral(" class=\"dataTable\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 39 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 39 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
foreach (var item in WaitingForUserActionJobs)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <tr>\r\n <td");
|
||||
|
||||
WriteLiteral(" class=\"userId\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 43 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.UserId);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n <td");
|
||||
|
||||
WriteLiteral(" class=\"userDisplayName\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 46 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.UserDisplayName);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n <td");
|
||||
|
||||
WriteAttribute("class", Tuple.Create(" class=\"", 1816), Tuple.Create("\"", 1874)
|
||||
, Tuple.Create(Tuple.Create("", 1824), Tuple.Create("timestamp", 1824), true)
|
||||
|
||||
#line 48 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 1833), Tuple.Create<System.Object, System.Int32>(item.IsAlert ? " Alert" : string.Empty
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 1833), false)
|
||||
);
|
||||
|
||||
WriteLiteral(">\r\n Since ");
|
||||
|
||||
|
||||
#line 49 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.WaitingForUserActionSince);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
|
||||
|
||||
|
||||
#line 52 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </table>\r\n <hr />\r\n");
|
||||
|
||||
|
||||
#line 55 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 55 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
var DevicesReadyForReturn = Model.Where(i => i.ReadyForReturn && !i.WaitingForUserAction).ToArray();
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n <h2>\r\n Ready for Return (");
|
||||
|
||||
|
||||
#line 59 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(DevicesReadyForReturn.Length);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(")</h2>\r\n <table");
|
||||
|
||||
WriteLiteral(" class=\"dataTable\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 61 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 61 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
foreach (var item in DevicesReadyForReturn)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <tr>\r\n <td");
|
||||
|
||||
WriteLiteral(" class=\"userId\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 65 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.UserId);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n <td");
|
||||
|
||||
WriteLiteral(" class=\"userDisplayName\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 68 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.UserDisplayName);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n <td");
|
||||
|
||||
WriteAttribute("class", Tuple.Create(" class=\"", 2641), Tuple.Create("\"", 2699)
|
||||
, Tuple.Create(Tuple.Create("", 2649), Tuple.Create("timestamp", 2649), true)
|
||||
|
||||
#line 70 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 2658), Tuple.Create<System.Object, System.Int32>(item.IsAlert ? " Alert" : string.Empty
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 2658), false)
|
||||
);
|
||||
|
||||
WriteLiteral(">\r\n Ready ");
|
||||
|
||||
|
||||
#line 71 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.ReadyForReturnSince);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
|
||||
|
||||
|
||||
#line 74 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </table>\r\n </div>\r\n</div>\r\n");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.17929
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Public.Views.UserHeldDevices
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Public/Views/UserHeldDevices/Index.cshtml")]
|
||||
public class Index : System.Web.Mvc.WebViewPage<IEnumerable<Disco.Web.Areas.Public.Models.UserHeldDevices.UserHeldDeviceModel>>
|
||||
{
|
||||
public Index()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 2 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Public Reports", MVC.Public.Public.Index(), "Technician Held Devices", null);
|
||||
Html.BundleDeferred("~/Style/Public/UserHeldDevices");
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n<div");
|
||||
|
||||
WriteLiteral(" class=\"clearfix page\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"column1\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 8 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 8 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
var DevicesInProcess = Model.Where(i => !i.ReadyForReturn && !i.WaitingForUserAction).ToArray();
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n <h2>\r\n In Process (");
|
||||
|
||||
|
||||
#line 12 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(DevicesInProcess.Length);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(")</h2>\r\n <table");
|
||||
|
||||
WriteLiteral(" class=\"dataTable\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 14 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 14 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
foreach (var item in DevicesInProcess)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <tr>\r\n <td");
|
||||
|
||||
WriteLiteral(" class=\"userId\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 18 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.UserId);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n <td");
|
||||
|
||||
WriteLiteral(" class=\"userDisplayName\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 21 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.UserDisplayName);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 21 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
if (!string.IsNullOrEmpty(item.EstimatedReturnTime))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <span");
|
||||
|
||||
WriteLiteral(" class=\"smallMessage\"");
|
||||
|
||||
WriteLiteral(">(Expected: ");
|
||||
|
||||
|
||||
#line 24 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.EstimatedReturnTime);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(")</span>\r\n");
|
||||
|
||||
|
||||
#line 25 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
|
||||
|
||||
|
||||
#line 29 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </table>\r\n </div>\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"column2\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 33 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 33 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
var WaitingForUserActionJobs = Model.Where(i => i.WaitingForUserAction).ToArray();
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n <h2>\r\n Waiting for User Action (");
|
||||
|
||||
|
||||
#line 37 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(WaitingForUserActionJobs.Length);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(")</h2>\r\n <table");
|
||||
|
||||
WriteLiteral(" class=\"dataTable\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 39 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 39 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
foreach (var item in WaitingForUserActionJobs)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <tr>\r\n <td");
|
||||
|
||||
WriteLiteral(" class=\"userId\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 43 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.UserId);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n <td");
|
||||
|
||||
WriteLiteral(" class=\"userDisplayName\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 46 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.UserDisplayName);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n <td");
|
||||
|
||||
WriteAttribute("class", Tuple.Create(" class=\"", 1816), Tuple.Create("\"", 1874)
|
||||
, Tuple.Create(Tuple.Create("", 1824), Tuple.Create("timestamp", 1824), true)
|
||||
|
||||
#line 48 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 1833), Tuple.Create<System.Object, System.Int32>(item.IsAlert ? " Alert" : string.Empty
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 1833), false)
|
||||
);
|
||||
|
||||
WriteLiteral(">\r\n Since ");
|
||||
|
||||
|
||||
#line 49 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.WaitingForUserActionSince);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
|
||||
|
||||
|
||||
#line 52 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </table>\r\n <hr />\r\n");
|
||||
|
||||
|
||||
#line 55 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 55 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
var DevicesReadyForReturn = Model.Where(i => i.ReadyForReturn && !i.WaitingForUserAction).ToArray();
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n <h2>\r\n Ready for Return (");
|
||||
|
||||
|
||||
#line 59 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(DevicesReadyForReturn.Length);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(")</h2>\r\n <table");
|
||||
|
||||
WriteLiteral(" class=\"dataTable\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 61 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 61 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
foreach (var item in DevicesReadyForReturn)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <tr>\r\n <td");
|
||||
|
||||
WriteLiteral(" class=\"userId\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 65 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.UserId);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n <td");
|
||||
|
||||
WriteLiteral(" class=\"userDisplayName\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 68 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.UserDisplayName);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n <td");
|
||||
|
||||
WriteAttribute("class", Tuple.Create(" class=\"", 2641), Tuple.Create("\"", 2699)
|
||||
, Tuple.Create(Tuple.Create("", 2649), Tuple.Create("timestamp", 2649), true)
|
||||
|
||||
#line 70 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 2658), Tuple.Create<System.Object, System.Int32>(item.IsAlert ? " Alert" : string.Empty
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 2658), false)
|
||||
);
|
||||
|
||||
WriteLiteral(">\r\n Ready ");
|
||||
|
||||
|
||||
#line 71 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
Write(item.ReadyForReturnSince);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n </tr>\r\n");
|
||||
|
||||
|
||||
#line 74 "..\..\Areas\Public\Views\UserHeldDevices\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </table>\r\n </div>\r\n</div>\r\n");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
|
||||
@@ -1,494 +1,494 @@
|
||||
@{
|
||||
Layout = null;
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR");
|
||||
Html.BundleDeferred("~/ClientScripts/Core");
|
||||
Html.BundleDeferred("~/Style/Public/UserHeldDevicesNoticeboard");
|
||||
}
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Disco - Technician Held Devices</title>
|
||||
@Html.BundleRenderDeferred()
|
||||
</head>
|
||||
<body>
|
||||
<div id="page">
|
||||
<header id="mainHeader">
|
||||
Technician Held Devices
|
||||
</header>
|
||||
<section id="mainSection">
|
||||
<div id="inProcess" class="list">
|
||||
<h3>
|
||||
In Process <span id="inProcessCount"></span>
|
||||
</h3>
|
||||
<div class="content">
|
||||
<ul>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="readyForReturn" class="list">
|
||||
<h3>
|
||||
Ready for Return <span id="readyForReturnCount"></span>
|
||||
</h3>
|
||||
<div class="content">
|
||||
<ul>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="waitingForUserAction" class="list">
|
||||
<h3>
|
||||
Waiting for User Action <span id="waitingForUserActionCount"></span>
|
||||
</h3>
|
||||
<div class="content">
|
||||
<ul>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<footer>
|
||||
</footer>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
// Resizing
|
||||
$(function () {
|
||||
var $inProcess = $('#inProcess');
|
||||
var $inProcessContent = $inProcess.find('.content');
|
||||
var $inProcessHeader = $inProcess.find('.h3');
|
||||
var $readyForReturn = $('#readyForReturn');
|
||||
var $readyForReturnContent = $readyForReturn.find('.content');
|
||||
var $readyForReturnHeader = $readyForReturn.find('.h3');
|
||||
var $waitingForUserAction = $('#waitingForUserAction');
|
||||
var $waitingForUserActionContent = $waitingForUserAction.find('.content');
|
||||
var $waitingForUserActionHeader = $waitingForUserAction.find('.h3');
|
||||
var $mainSection = $('#mainSection');
|
||||
var $mainHeader = $('#mainHeader');
|
||||
var $mainFooter = $('#mainFooter');
|
||||
|
||||
var onResize = function () {
|
||||
var width = $mainSection.width();
|
||||
var height = $(window).height() - $mainHeader.outerHeight() - $mainFooter.outerHeight() - 25;
|
||||
|
||||
$inProcess.height(height);
|
||||
$inProcess.width((width * .28) - 11);
|
||||
$inProcessContent.height(height - $inProcessHeader.outerHeight() - 56);
|
||||
|
||||
$readyForReturn.height(height);
|
||||
$readyForReturn.width((width * .36) - 11);
|
||||
$readyForReturnContent.height(height - $readyForReturnHeader.outerHeight() - 56);
|
||||
|
||||
$waitingForUserAction.height(height);
|
||||
$waitingForUserAction.width((width * .36) - 11);
|
||||
$waitingForUserActionContent.height(height - $waitingForUserActionHeader.outerHeight() - 56);
|
||||
};
|
||||
|
||||
$(window).resize(onResize);
|
||||
onResize();
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
// Hide Mouse Mouse
|
||||
$(function () {
|
||||
var mouseVisible = true;
|
||||
var mouseHideToken;
|
||||
var documentBody = $('body');
|
||||
|
||||
var hideMouse = function () {
|
||||
if (mouseVisible) {
|
||||
documentBody.css('cursor', 'none');
|
||||
mouseVisible = false;
|
||||
}
|
||||
};
|
||||
var showMouse = function () {
|
||||
if (!mouseVisible) {
|
||||
documentBody.css('cursor', 'auto');
|
||||
mouseVisible = true;
|
||||
}
|
||||
};
|
||||
|
||||
$(document).mousemove(function () {
|
||||
showMouse();
|
||||
if (mouseHideToken)
|
||||
window.clearTimeout(mouseHideToken);
|
||||
mouseHideToken = window.setTimeout(hideMouse, 2000);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
var models = {};
|
||||
var modelsInProcessSorted = [];
|
||||
var modelsInProcessCount = 0;
|
||||
var modelsReadyForReturnSorted = [];
|
||||
var modelsReadyForReturnCount = 0;
|
||||
var modelsWaitingForUserActionSorted = [];
|
||||
var modelsWaitingForUserActionCount = 0;
|
||||
var $inProcess = $('#inProcess');
|
||||
var $inProcessContent = $inProcess.find('.content ul');
|
||||
var $readyForReturn = $('#readyForReturn');
|
||||
var $readyForReturnContent = $readyForReturn.find('.content ul');
|
||||
var $waitingForUserAction = $('#waitingForUserAction');
|
||||
var $waitingForUserActionContent = $waitingForUserAction.find('.content ul');
|
||||
var modelsInProcessIndexOffset = 0;
|
||||
var scrollInProcessToken = null;
|
||||
var modelsReadyForReturnIndexOffset = 0;
|
||||
var scrollReadyForReturnToken = null;
|
||||
var modelsWaitingForUserActionIndexOffset = 0;
|
||||
var scrollWaitingForUserActionToken = null;
|
||||
var scrollSpeed = 3000;
|
||||
var persistantConnection = null;
|
||||
var filterDeviceAddressInclude;
|
||||
var filterDeviceAddressExclude;
|
||||
var filterDeviceProfileInclude;
|
||||
var filterDeviceProfileExclude;
|
||||
|
||||
var getParameterByName = function (name) {
|
||||
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
|
||||
var regexS = "[\\?&]" + name + "=([^&#]*)";
|
||||
var regex = new RegExp(regexS);
|
||||
var results = regex.exec(window.location.search);
|
||||
if (results == null)
|
||||
return "";
|
||||
else
|
||||
return decodeURIComponent(results[1].replace(/\+/g, " "));
|
||||
}
|
||||
|
||||
var buildFilters = function () {
|
||||
var deviceAddressInclude = getParameterByName('deviceAddressInclude');
|
||||
if (deviceAddressInclude) {
|
||||
filterDeviceAddressInclude = {};
|
||||
var split = deviceAddressInclude.split(",");
|
||||
for (var i = 0; i < split.length; i++) {
|
||||
filterDeviceAddressInclude[split[i].toLowerCase()] = true;
|
||||
}
|
||||
} else {
|
||||
var deviceAddressExclude = getParameterByName('deviceAddressExclude');
|
||||
if (deviceAddressExclude) {
|
||||
filterDeviceAddressExclude = {};
|
||||
var split = deviceAddressExclude.split(",");
|
||||
for (var i = 0; i < split.length; i++) {
|
||||
filterDeviceAddressExclude[split[i].toLowerCase()] = true;
|
||||
}
|
||||
} else {
|
||||
var deviceProfileInclude = getParameterByName('deviceProfileInclude');
|
||||
if (deviceProfileInclude) {
|
||||
filterDeviceProfileInclude = {};
|
||||
var deviceProfileIncludeSplit = deviceProfileInclude.split(",");
|
||||
for (var i = 0; i < deviceProfileIncludeSplit.length; i++) {
|
||||
filterDeviceProfileInclude[parseInt(deviceProfileIncludeSplit[i])] = true;
|
||||
}
|
||||
} else {
|
||||
var deviceProfileExclude = getParameterByName('deviceProfileExclude');
|
||||
if (deviceProfileExclude) {
|
||||
filterDeviceProfileExclude = {};
|
||||
var deviceProfileExcludeSplit = deviceProfileExclude.split(",");
|
||||
for (var i = 0; i < deviceProfileExcludeSplit.length; i++) {
|
||||
filterDeviceProfileExclude[parseInt(deviceProfileExcludeSplit[i])] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
var calculateFilter = function (model) {
|
||||
if (model) {
|
||||
if (filterDeviceAddressInclude) {
|
||||
return (filterDeviceAddressInclude[model.DeviceAddress.toLowerCase()] == true)
|
||||
}
|
||||
if (filterDeviceAddressExclude) {
|
||||
return (!filterDeviceAddressExclude[model.DeviceAddress.toLowerCase()])
|
||||
}
|
||||
if (filterDeviceProfileInclude) {
|
||||
return (filterDeviceProfileInclude[model.DeviceProfileId] == true)
|
||||
}
|
||||
if (filterDeviceProfileExclude) {
|
||||
return (!filterDeviceProfileExclude[model.DeviceProfileId])
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
var sortModels = function () {
|
||||
modelsInProcessSorted = [];
|
||||
modelsReadyForReturnSorted = [];
|
||||
modelsWaitingForUserActionSorted = [];
|
||||
var modelSortFunc = function (a, b) {
|
||||
if (a.UserId.toUpperCase() == b.UserId.toUpperCase()) {
|
||||
return 0;
|
||||
} else {
|
||||
if (a.UserId.toUpperCase() < b.UserId.toUpperCase()) {
|
||||
return -1
|
||||
} else {
|
||||
return 1
|
||||
}
|
||||
}
|
||||
};
|
||||
for (var key in models) {
|
||||
var model = models[key];
|
||||
if (model) {
|
||||
if (model.WaitingForUserAction) {
|
||||
modelsWaitingForUserActionSorted.push(model);
|
||||
} else {
|
||||
if (model.ReadyForReturn) {
|
||||
modelsReadyForReturnSorted.push(model);
|
||||
} else {
|
||||
modelsInProcessSorted.push(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
modelsReadyForReturnSorted = modelsReadyForReturnSorted.sort(modelSortFunc);
|
||||
modelsInProcessSorted = modelsInProcessSorted.sort(modelSortFunc);
|
||||
modelsWaitingForUserActionSorted = modelsWaitingForUserActionSorted.sort(modelSortFunc);
|
||||
|
||||
if (modelsInProcessSorted.length != modelsInProcessCount) {
|
||||
modelsInProcessCount = modelsInProcessSorted.length;
|
||||
$('#inProcessCount').text('(' + modelsInProcessCount + ')');
|
||||
}
|
||||
if (modelsReadyForReturnSorted.length != modelsReadyForReturnCount) {
|
||||
modelsReadyForReturnCount = modelsReadyForReturnSorted.length;
|
||||
$('#readyForReturnCount').text('(' + modelsReadyForReturnCount + ')');
|
||||
}
|
||||
if (modelsWaitingForUserActionSorted.length != modelsWaitingForUserActionCount) {
|
||||
modelsWaitingForUserActionCount = modelsWaitingForUserActionSorted.length;
|
||||
$('#waitingForUserActionCount').text('(' + modelsWaitingForUserActionCount + ')');
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
var scrollReadyForReturn = function () {
|
||||
$readyForReturnContent.find('li').last().detach().prependTo($readyForReturnContent).hide().slideDown('slow');
|
||||
modelsReadyForReturnIndexOffset++;
|
||||
if (modelsReadyForReturnIndexOffset >= modelsReadyForReturnSorted.length) {
|
||||
modelsReadyForReturnIndexOffset = 0;
|
||||
}
|
||||
scrollReadyForReturnToken = window.setTimeout(scrollReadyForReturn, scrollSpeed);
|
||||
};
|
||||
var updateScrollReadyForReturn = function () {
|
||||
var containerHeight = $readyForReturn.find('.content').height();
|
||||
var contentHeight = $readyForReturnContent.height();
|
||||
if (containerHeight >= contentHeight && scrollReadyForReturnToken) {
|
||||
window.clearTimeout(scrollReadyForReturnToken);
|
||||
return;
|
||||
}
|
||||
if (containerHeight < contentHeight && scrollReadyForReturnToken == null) {
|
||||
scrollReadyForReturnToken = window.setTimeout(scrollReadyForReturn, scrollSpeed);
|
||||
}
|
||||
};
|
||||
var scrollInProcess = function () {
|
||||
$inProcessContent.find('li').last().detach().prependTo($inProcessContent).hide().slideDown('slow');
|
||||
modelsInProcessIndexOffset++;
|
||||
if (modelsInProcessIndexOffset >= modelsInProcessSorted.length) {
|
||||
modelsInProcessIndexOffset = 0;
|
||||
}
|
||||
scrollInProcessToken = window.setTimeout(scrollInProcess, scrollSpeed);
|
||||
};
|
||||
var updateScrollInProcess = function () {
|
||||
var containerHeight = $inProcess.find('.content').height();
|
||||
var contentHeight = $inProcessContent.height();
|
||||
if (containerHeight >= contentHeight && scrollInProcessToken) {
|
||||
window.clearTimeout(scrollInProcessToken);
|
||||
return;
|
||||
}
|
||||
if (containerHeight < contentHeight && scrollInProcessToken == null) {
|
||||
scrollInProcessToken = window.setTimeout(scrollInProcess, scrollSpeed);
|
||||
}
|
||||
};
|
||||
var scrollWaitingForUserAction = function () {
|
||||
$waitingForUserActionContent.find('li').last().detach().prependTo($waitingForUserActionContent).hide().slideDown('slow');
|
||||
modelsInProcessIndexOffset++;
|
||||
if (modelsWaitingForUserActionIndexOffset >= modelsWaitingForUserActionSorted.length) {
|
||||
modelsWaitingForUserActionIndexOffset = 0;
|
||||
}
|
||||
scrollWaitingForUserActionToken = window.setTimeout(scrollWaitingForUserAction, scrollSpeed);
|
||||
};
|
||||
var updateScrollWaitingForUserAction = function () {
|
||||
var containerHeight = $waitingForUserAction.find('.content').height();
|
||||
var contentHeight = $waitingForUserActionContent.height();
|
||||
if (containerHeight >= contentHeight && scrollWaitingForUserActionToken) {
|
||||
window.clearTimeout(scrollWaitingForUserActionToken);
|
||||
return;
|
||||
}
|
||||
if (containerHeight < contentHeight && scrollWaitingForUserActionToken == null) {
|
||||
scrollWaitingForUserActionToken = window.setTimeout(scrollWaitingForUserAction, scrollSpeed);
|
||||
}
|
||||
};
|
||||
|
||||
var modelInsertIndex = function (model) {
|
||||
sortModels();
|
||||
var findIndex = function (model, array, offset) {
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
if (model.UserId == array[i].UserId) {
|
||||
var index = i + offset;
|
||||
if (index > (array.length - 1)) {
|
||||
index = index - (array.length - 1);
|
||||
}
|
||||
return index;
|
||||
}
|
||||
};
|
||||
};
|
||||
if (model.WaitingForUserAction) {
|
||||
return findIndex(model, modelsWaitingForUserActionSorted, modelsWaitingForUserActionIndexOffset);
|
||||
} else {
|
||||
if (model.ReadyForReturn) {
|
||||
return findIndex(model, modelsReadyForReturnSorted, modelsReadyForReturnIndexOffset);
|
||||
} else {
|
||||
return findIndex(model, modelsInProcessSorted, modelsInProcessIndexOffset);
|
||||
}
|
||||
}
|
||||
}
|
||||
var modelInsert = function (model) {
|
||||
var index = modelInsertIndex(model);
|
||||
var insertTo = function (model, host) {
|
||||
var hostLi = host.children('li');
|
||||
if (hostLi.length == 0 || hostLi.length < index) {
|
||||
host.append(model.htmlLi);
|
||||
} else {
|
||||
if (index == 0) {
|
||||
host.prepend(model.htmlLi);
|
||||
} else {
|
||||
$(hostLi.get(index - 1)).after(model.htmlLi);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (model.WaitingForUserAction) {
|
||||
insertTo(model, $waitingForUserActionContent);
|
||||
window.setTimeout(updateScrollWaitingForUserAction, 100);
|
||||
} else {
|
||||
if (model.ReadyForReturn) {
|
||||
insertTo(model, $readyForReturnContent);
|
||||
window.setTimeout(updateScrollReadyForReturn, 100);
|
||||
} else {
|
||||
insertTo(model, $inProcessContent);
|
||||
window.setTimeout(updateScrollInProcess, 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var removeModel = function (model) {
|
||||
if (model) {
|
||||
if (model.updateAtToken) {
|
||||
window.clearTimeout(model.updateAtToken);
|
||||
};
|
||||
model.htmlLi.slideUp('fast', function () {
|
||||
model.htmlLi.remove();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
var scheduleModelUpdate = function (model) {
|
||||
if (model.updateAtToken) {
|
||||
window.clearTimeout(model.updateAtToken);
|
||||
};
|
||||
if (model.UpdateAt) {
|
||||
if (typeof model.UpdateAt == 'string' && model.UpdateAt.indexOf('\/Date(') == 0) {
|
||||
model.UpdateAt = new Date(parseInt(model.UpdateAt.substr(6)));
|
||||
}
|
||||
var nowMilliseconds = new Date().getTime();
|
||||
var updateAtMilliseconds = (model.UpdateAt - nowMilliseconds);
|
||||
if (updateAtMilliseconds > 0) {
|
||||
model.updateAtToken = window.setTimeout(function () { updatedModel(model.UserId); }, updateAtMilliseconds);
|
||||
} else {
|
||||
model.UpdateAt = null;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var processModel = function (id, model, init) {
|
||||
if (!calculateFilter(model)) {
|
||||
removeModel(models[id]);
|
||||
delete models[id];
|
||||
sortModels();
|
||||
} else {
|
||||
var existing = models[id];
|
||||
models[id] = model;
|
||||
|
||||
// Add
|
||||
model.htmlContent = $('<div>').text(model.UserId + ' - ' + model.UserDisplayName);
|
||||
if (!model.ReadyForReturn && model.EstimatedReturnTime) {
|
||||
model.htmlContent.append($('<span class="small">').text(' (Expected: ' + model.EstimatedReturnTime + ')'));
|
||||
}
|
||||
if (model.WaitingForUserAction) {
|
||||
model.htmlContent.append($('<span class="small">').text(' (Since ' + model.WaitingForUserActionSince + ')'));
|
||||
} else {
|
||||
if (model.ReadyForReturn && model.ReadyForReturnSince) {
|
||||
model.htmlContent.append($('<span class="small">').text(' (Ready ' + model.ReadyForReturnSince + ')'));
|
||||
}
|
||||
}
|
||||
|
||||
if (existing) {
|
||||
if (existing.ReadyForReturn != model.ReadyForReturn || existing.WaitingForUserAction != model.WaitingForUserAction) {
|
||||
removeModel(existing);
|
||||
model.htmlLi = $('<li>').html(model.htmlContent).data('ModelId', id).hide();
|
||||
modelInsert(model);
|
||||
if (init) {
|
||||
model.htmlLi.fadeIn();
|
||||
} else {
|
||||
model.htmlLi.slideDown();
|
||||
}
|
||||
} else {
|
||||
if (existing.updateAtToken) {
|
||||
window.clearTimeout(existing.updateAtToken);
|
||||
};
|
||||
model.htmlLi = existing.htmlLi;
|
||||
model.htmlLi.slideUp('fast', function () {
|
||||
model.htmlLi.html(model.htmlContent).slideDown();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
model.htmlLi = $('<li>').html(model.htmlContent).data('ModelId', id).hide();
|
||||
modelInsert(model);
|
||||
if (init) {
|
||||
model.htmlLi.fadeIn();
|
||||
} else {
|
||||
model.htmlLi.slideDown('slow');
|
||||
}
|
||||
}
|
||||
if (model.htmlLi && model.IsAlert) {
|
||||
model.htmlLi.addClass('alert');
|
||||
}
|
||||
scheduleModelUpdate(model);
|
||||
}
|
||||
};
|
||||
|
||||
var updatedModel = function (id) {
|
||||
var UserId = id.toString();
|
||||
$.getJSON('@(Url.Action(MVC.Public.UserHeldDevices.UserHeldDevice()))', { id: UserId }, function (data) {
|
||||
processModel(UserId, data, false);
|
||||
});
|
||||
};
|
||||
|
||||
var connectionError = function () {
|
||||
if (persistantConnection) {
|
||||
persistantConnection.stop();
|
||||
persistantConnection = null;
|
||||
window.setTimeout(function () {
|
||||
window.location.href = '@(Url.Action(MVC.Public.UserHeldDevices.Noticeboard()))';
|
||||
}, 10000);
|
||||
}
|
||||
}
|
||||
|
||||
var init = function () {
|
||||
buildFilters();
|
||||
persistantConnection = $.connection('@(Url.Content("~/Public/UserHeldDevices/Notifications"))');
|
||||
persistantConnection.received(updatedModel);
|
||||
persistantConnection.error(connectionError);
|
||||
persistantConnection.start(function () {
|
||||
$.getJSON('@(Url.Action(MVC.Public.UserHeldDevices.UserHeldDevices()))', null, function (data) {
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
processModel(data[i].UserId, data[i], true);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
init();
|
||||
|
||||
});
|
||||
</script>
|
||||
<div id="mainFooter">
|
||||
<img style="width: 32px; height: 32px; margin-top: -5px; margin-bottom: -15px;" src="@Links.ClientSource.Style.Images.Icon32_png" alt="Disco Logo" />
|
||||
powered by Disco
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@{
|
||||
Layout = null;
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR");
|
||||
Html.BundleDeferred("~/ClientScripts/Core");
|
||||
Html.BundleDeferred("~/Style/Public/UserHeldDevicesNoticeboard");
|
||||
}
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>Disco - Technician Held Devices</title>
|
||||
@Html.BundleRenderDeferred()
|
||||
</head>
|
||||
<body>
|
||||
<div id="page">
|
||||
<header id="mainHeader">
|
||||
Technician Held Devices
|
||||
</header>
|
||||
<section id="mainSection">
|
||||
<div id="inProcess" class="list">
|
||||
<h3>
|
||||
In Process <span id="inProcessCount"></span>
|
||||
</h3>
|
||||
<div class="content">
|
||||
<ul>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="readyForReturn" class="list">
|
||||
<h3>
|
||||
Ready for Return <span id="readyForReturnCount"></span>
|
||||
</h3>
|
||||
<div class="content">
|
||||
<ul>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="waitingForUserAction" class="list">
|
||||
<h3>
|
||||
Waiting for User Action <span id="waitingForUserActionCount"></span>
|
||||
</h3>
|
||||
<div class="content">
|
||||
<ul>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<footer>
|
||||
</footer>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
// Resizing
|
||||
$(function () {
|
||||
var $inProcess = $('#inProcess');
|
||||
var $inProcessContent = $inProcess.find('.content');
|
||||
var $inProcessHeader = $inProcess.find('.h3');
|
||||
var $readyForReturn = $('#readyForReturn');
|
||||
var $readyForReturnContent = $readyForReturn.find('.content');
|
||||
var $readyForReturnHeader = $readyForReturn.find('.h3');
|
||||
var $waitingForUserAction = $('#waitingForUserAction');
|
||||
var $waitingForUserActionContent = $waitingForUserAction.find('.content');
|
||||
var $waitingForUserActionHeader = $waitingForUserAction.find('.h3');
|
||||
var $mainSection = $('#mainSection');
|
||||
var $mainHeader = $('#mainHeader');
|
||||
var $mainFooter = $('#mainFooter');
|
||||
|
||||
var onResize = function () {
|
||||
var width = $mainSection.width();
|
||||
var height = $(window).height() - $mainHeader.outerHeight() - $mainFooter.outerHeight() - 25;
|
||||
|
||||
$inProcess.height(height);
|
||||
$inProcess.width((width * .28) - 11);
|
||||
$inProcessContent.height(height - $inProcessHeader.outerHeight() - 56);
|
||||
|
||||
$readyForReturn.height(height);
|
||||
$readyForReturn.width((width * .36) - 11);
|
||||
$readyForReturnContent.height(height - $readyForReturnHeader.outerHeight() - 56);
|
||||
|
||||
$waitingForUserAction.height(height);
|
||||
$waitingForUserAction.width((width * .36) - 11);
|
||||
$waitingForUserActionContent.height(height - $waitingForUserActionHeader.outerHeight() - 56);
|
||||
};
|
||||
|
||||
$(window).resize(onResize);
|
||||
onResize();
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
// Hide Mouse Mouse
|
||||
$(function () {
|
||||
var mouseVisible = true;
|
||||
var mouseHideToken;
|
||||
var documentBody = $('body');
|
||||
|
||||
var hideMouse = function () {
|
||||
if (mouseVisible) {
|
||||
documentBody.css('cursor', 'none');
|
||||
mouseVisible = false;
|
||||
}
|
||||
};
|
||||
var showMouse = function () {
|
||||
if (!mouseVisible) {
|
||||
documentBody.css('cursor', 'auto');
|
||||
mouseVisible = true;
|
||||
}
|
||||
};
|
||||
|
||||
$(document).mousemove(function () {
|
||||
showMouse();
|
||||
if (mouseHideToken)
|
||||
window.clearTimeout(mouseHideToken);
|
||||
mouseHideToken = window.setTimeout(hideMouse, 2000);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
var models = {};
|
||||
var modelsInProcessSorted = [];
|
||||
var modelsInProcessCount = 0;
|
||||
var modelsReadyForReturnSorted = [];
|
||||
var modelsReadyForReturnCount = 0;
|
||||
var modelsWaitingForUserActionSorted = [];
|
||||
var modelsWaitingForUserActionCount = 0;
|
||||
var $inProcess = $('#inProcess');
|
||||
var $inProcessContent = $inProcess.find('.content ul');
|
||||
var $readyForReturn = $('#readyForReturn');
|
||||
var $readyForReturnContent = $readyForReturn.find('.content ul');
|
||||
var $waitingForUserAction = $('#waitingForUserAction');
|
||||
var $waitingForUserActionContent = $waitingForUserAction.find('.content ul');
|
||||
var modelsInProcessIndexOffset = 0;
|
||||
var scrollInProcessToken = null;
|
||||
var modelsReadyForReturnIndexOffset = 0;
|
||||
var scrollReadyForReturnToken = null;
|
||||
var modelsWaitingForUserActionIndexOffset = 0;
|
||||
var scrollWaitingForUserActionToken = null;
|
||||
var scrollSpeed = 3000;
|
||||
var persistantConnection = null;
|
||||
var filterDeviceAddressInclude;
|
||||
var filterDeviceAddressExclude;
|
||||
var filterDeviceProfileInclude;
|
||||
var filterDeviceProfileExclude;
|
||||
|
||||
var getParameterByName = function (name) {
|
||||
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
|
||||
var regexS = "[\\?&]" + name + "=([^&#]*)";
|
||||
var regex = new RegExp(regexS);
|
||||
var results = regex.exec(window.location.search);
|
||||
if (results == null)
|
||||
return "";
|
||||
else
|
||||
return decodeURIComponent(results[1].replace(/\+/g, " "));
|
||||
}
|
||||
|
||||
var buildFilters = function () {
|
||||
var deviceAddressInclude = getParameterByName('deviceAddressInclude');
|
||||
if (deviceAddressInclude) {
|
||||
filterDeviceAddressInclude = {};
|
||||
var split = deviceAddressInclude.split(",");
|
||||
for (var i = 0; i < split.length; i++) {
|
||||
filterDeviceAddressInclude[split[i].toLowerCase()] = true;
|
||||
}
|
||||
} else {
|
||||
var deviceAddressExclude = getParameterByName('deviceAddressExclude');
|
||||
if (deviceAddressExclude) {
|
||||
filterDeviceAddressExclude = {};
|
||||
var split = deviceAddressExclude.split(",");
|
||||
for (var i = 0; i < split.length; i++) {
|
||||
filterDeviceAddressExclude[split[i].toLowerCase()] = true;
|
||||
}
|
||||
} else {
|
||||
var deviceProfileInclude = getParameterByName('deviceProfileInclude');
|
||||
if (deviceProfileInclude) {
|
||||
filterDeviceProfileInclude = {};
|
||||
var deviceProfileIncludeSplit = deviceProfileInclude.split(",");
|
||||
for (var i = 0; i < deviceProfileIncludeSplit.length; i++) {
|
||||
filterDeviceProfileInclude[parseInt(deviceProfileIncludeSplit[i])] = true;
|
||||
}
|
||||
} else {
|
||||
var deviceProfileExclude = getParameterByName('deviceProfileExclude');
|
||||
if (deviceProfileExclude) {
|
||||
filterDeviceProfileExclude = {};
|
||||
var deviceProfileExcludeSplit = deviceProfileExclude.split(",");
|
||||
for (var i = 0; i < deviceProfileExcludeSplit.length; i++) {
|
||||
filterDeviceProfileExclude[parseInt(deviceProfileExcludeSplit[i])] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
var calculateFilter = function (model) {
|
||||
if (model) {
|
||||
if (filterDeviceAddressInclude) {
|
||||
return (filterDeviceAddressInclude[model.DeviceAddress.toLowerCase()] == true)
|
||||
}
|
||||
if (filterDeviceAddressExclude) {
|
||||
return (!filterDeviceAddressExclude[model.DeviceAddress.toLowerCase()])
|
||||
}
|
||||
if (filterDeviceProfileInclude) {
|
||||
return (filterDeviceProfileInclude[model.DeviceProfileId] == true)
|
||||
}
|
||||
if (filterDeviceProfileExclude) {
|
||||
return (!filterDeviceProfileExclude[model.DeviceProfileId])
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
var sortModels = function () {
|
||||
modelsInProcessSorted = [];
|
||||
modelsReadyForReturnSorted = [];
|
||||
modelsWaitingForUserActionSorted = [];
|
||||
var modelSortFunc = function (a, b) {
|
||||
if (a.UserId.toUpperCase() == b.UserId.toUpperCase()) {
|
||||
return 0;
|
||||
} else {
|
||||
if (a.UserId.toUpperCase() < b.UserId.toUpperCase()) {
|
||||
return -1
|
||||
} else {
|
||||
return 1
|
||||
}
|
||||
}
|
||||
};
|
||||
for (var key in models) {
|
||||
var model = models[key];
|
||||
if (model) {
|
||||
if (model.WaitingForUserAction) {
|
||||
modelsWaitingForUserActionSorted.push(model);
|
||||
} else {
|
||||
if (model.ReadyForReturn) {
|
||||
modelsReadyForReturnSorted.push(model);
|
||||
} else {
|
||||
modelsInProcessSorted.push(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
modelsReadyForReturnSorted = modelsReadyForReturnSorted.sort(modelSortFunc);
|
||||
modelsInProcessSorted = modelsInProcessSorted.sort(modelSortFunc);
|
||||
modelsWaitingForUserActionSorted = modelsWaitingForUserActionSorted.sort(modelSortFunc);
|
||||
|
||||
if (modelsInProcessSorted.length != modelsInProcessCount) {
|
||||
modelsInProcessCount = modelsInProcessSorted.length;
|
||||
$('#inProcessCount').text('(' + modelsInProcessCount + ')');
|
||||
}
|
||||
if (modelsReadyForReturnSorted.length != modelsReadyForReturnCount) {
|
||||
modelsReadyForReturnCount = modelsReadyForReturnSorted.length;
|
||||
$('#readyForReturnCount').text('(' + modelsReadyForReturnCount + ')');
|
||||
}
|
||||
if (modelsWaitingForUserActionSorted.length != modelsWaitingForUserActionCount) {
|
||||
modelsWaitingForUserActionCount = modelsWaitingForUserActionSorted.length;
|
||||
$('#waitingForUserActionCount').text('(' + modelsWaitingForUserActionCount + ')');
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
var scrollReadyForReturn = function () {
|
||||
$readyForReturnContent.find('li').last().detach().prependTo($readyForReturnContent).hide().slideDown('slow');
|
||||
modelsReadyForReturnIndexOffset++;
|
||||
if (modelsReadyForReturnIndexOffset >= modelsReadyForReturnSorted.length) {
|
||||
modelsReadyForReturnIndexOffset = 0;
|
||||
}
|
||||
scrollReadyForReturnToken = window.setTimeout(scrollReadyForReturn, scrollSpeed);
|
||||
};
|
||||
var updateScrollReadyForReturn = function () {
|
||||
var containerHeight = $readyForReturn.find('.content').height();
|
||||
var contentHeight = $readyForReturnContent.height();
|
||||
if (containerHeight >= contentHeight && scrollReadyForReturnToken) {
|
||||
window.clearTimeout(scrollReadyForReturnToken);
|
||||
return;
|
||||
}
|
||||
if (containerHeight < contentHeight && scrollReadyForReturnToken == null) {
|
||||
scrollReadyForReturnToken = window.setTimeout(scrollReadyForReturn, scrollSpeed);
|
||||
}
|
||||
};
|
||||
var scrollInProcess = function () {
|
||||
$inProcessContent.find('li').last().detach().prependTo($inProcessContent).hide().slideDown('slow');
|
||||
modelsInProcessIndexOffset++;
|
||||
if (modelsInProcessIndexOffset >= modelsInProcessSorted.length) {
|
||||
modelsInProcessIndexOffset = 0;
|
||||
}
|
||||
scrollInProcessToken = window.setTimeout(scrollInProcess, scrollSpeed);
|
||||
};
|
||||
var updateScrollInProcess = function () {
|
||||
var containerHeight = $inProcess.find('.content').height();
|
||||
var contentHeight = $inProcessContent.height();
|
||||
if (containerHeight >= contentHeight && scrollInProcessToken) {
|
||||
window.clearTimeout(scrollInProcessToken);
|
||||
return;
|
||||
}
|
||||
if (containerHeight < contentHeight && scrollInProcessToken == null) {
|
||||
scrollInProcessToken = window.setTimeout(scrollInProcess, scrollSpeed);
|
||||
}
|
||||
};
|
||||
var scrollWaitingForUserAction = function () {
|
||||
$waitingForUserActionContent.find('li').last().detach().prependTo($waitingForUserActionContent).hide().slideDown('slow');
|
||||
modelsInProcessIndexOffset++;
|
||||
if (modelsWaitingForUserActionIndexOffset >= modelsWaitingForUserActionSorted.length) {
|
||||
modelsWaitingForUserActionIndexOffset = 0;
|
||||
}
|
||||
scrollWaitingForUserActionToken = window.setTimeout(scrollWaitingForUserAction, scrollSpeed);
|
||||
};
|
||||
var updateScrollWaitingForUserAction = function () {
|
||||
var containerHeight = $waitingForUserAction.find('.content').height();
|
||||
var contentHeight = $waitingForUserActionContent.height();
|
||||
if (containerHeight >= contentHeight && scrollWaitingForUserActionToken) {
|
||||
window.clearTimeout(scrollWaitingForUserActionToken);
|
||||
return;
|
||||
}
|
||||
if (containerHeight < contentHeight && scrollWaitingForUserActionToken == null) {
|
||||
scrollWaitingForUserActionToken = window.setTimeout(scrollWaitingForUserAction, scrollSpeed);
|
||||
}
|
||||
};
|
||||
|
||||
var modelInsertIndex = function (model) {
|
||||
sortModels();
|
||||
var findIndex = function (model, array, offset) {
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
if (model.UserId == array[i].UserId) {
|
||||
var index = i + offset;
|
||||
if (index > (array.length - 1)) {
|
||||
index = index - (array.length - 1);
|
||||
}
|
||||
return index;
|
||||
}
|
||||
};
|
||||
};
|
||||
if (model.WaitingForUserAction) {
|
||||
return findIndex(model, modelsWaitingForUserActionSorted, modelsWaitingForUserActionIndexOffset);
|
||||
} else {
|
||||
if (model.ReadyForReturn) {
|
||||
return findIndex(model, modelsReadyForReturnSorted, modelsReadyForReturnIndexOffset);
|
||||
} else {
|
||||
return findIndex(model, modelsInProcessSorted, modelsInProcessIndexOffset);
|
||||
}
|
||||
}
|
||||
}
|
||||
var modelInsert = function (model) {
|
||||
var index = modelInsertIndex(model);
|
||||
var insertTo = function (model, host) {
|
||||
var hostLi = host.children('li');
|
||||
if (hostLi.length == 0 || hostLi.length < index) {
|
||||
host.append(model.htmlLi);
|
||||
} else {
|
||||
if (index == 0) {
|
||||
host.prepend(model.htmlLi);
|
||||
} else {
|
||||
$(hostLi.get(index - 1)).after(model.htmlLi);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (model.WaitingForUserAction) {
|
||||
insertTo(model, $waitingForUserActionContent);
|
||||
window.setTimeout(updateScrollWaitingForUserAction, 100);
|
||||
} else {
|
||||
if (model.ReadyForReturn) {
|
||||
insertTo(model, $readyForReturnContent);
|
||||
window.setTimeout(updateScrollReadyForReturn, 100);
|
||||
} else {
|
||||
insertTo(model, $inProcessContent);
|
||||
window.setTimeout(updateScrollInProcess, 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var removeModel = function (model) {
|
||||
if (model) {
|
||||
if (model.updateAtToken) {
|
||||
window.clearTimeout(model.updateAtToken);
|
||||
};
|
||||
model.htmlLi.slideUp('fast', function () {
|
||||
model.htmlLi.remove();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
var scheduleModelUpdate = function (model) {
|
||||
if (model.updateAtToken) {
|
||||
window.clearTimeout(model.updateAtToken);
|
||||
};
|
||||
if (model.UpdateAt) {
|
||||
if (typeof model.UpdateAt == 'string' && model.UpdateAt.indexOf('\/Date(') == 0) {
|
||||
model.UpdateAt = new Date(parseInt(model.UpdateAt.substr(6)));
|
||||
}
|
||||
var nowMilliseconds = new Date().getTime();
|
||||
var updateAtMilliseconds = (model.UpdateAt - nowMilliseconds);
|
||||
if (updateAtMilliseconds > 0) {
|
||||
model.updateAtToken = window.setTimeout(function () { updatedModel(model.UserId); }, updateAtMilliseconds);
|
||||
} else {
|
||||
model.UpdateAt = null;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var processModel = function (id, model, init) {
|
||||
if (!calculateFilter(model)) {
|
||||
removeModel(models[id]);
|
||||
delete models[id];
|
||||
sortModels();
|
||||
} else {
|
||||
var existing = models[id];
|
||||
models[id] = model;
|
||||
|
||||
// Add
|
||||
model.htmlContent = $('<div>').text(model.UserId + ' - ' + model.UserDisplayName);
|
||||
if (!model.ReadyForReturn && model.EstimatedReturnTime) {
|
||||
model.htmlContent.append($('<span class="small">').text(' (Expected: ' + model.EstimatedReturnTime + ')'));
|
||||
}
|
||||
if (model.WaitingForUserAction) {
|
||||
model.htmlContent.append($('<span class="small">').text(' (Since ' + model.WaitingForUserActionSince + ')'));
|
||||
} else {
|
||||
if (model.ReadyForReturn && model.ReadyForReturnSince) {
|
||||
model.htmlContent.append($('<span class="small">').text(' (Ready ' + model.ReadyForReturnSince + ')'));
|
||||
}
|
||||
}
|
||||
|
||||
if (existing) {
|
||||
if (existing.ReadyForReturn != model.ReadyForReturn || existing.WaitingForUserAction != model.WaitingForUserAction) {
|
||||
removeModel(existing);
|
||||
model.htmlLi = $('<li>').html(model.htmlContent).data('ModelId', id).hide();
|
||||
modelInsert(model);
|
||||
if (init) {
|
||||
model.htmlLi.fadeIn();
|
||||
} else {
|
||||
model.htmlLi.slideDown();
|
||||
}
|
||||
} else {
|
||||
if (existing.updateAtToken) {
|
||||
window.clearTimeout(existing.updateAtToken);
|
||||
};
|
||||
model.htmlLi = existing.htmlLi;
|
||||
model.htmlLi.slideUp('fast', function () {
|
||||
model.htmlLi.html(model.htmlContent).slideDown();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
model.htmlLi = $('<li>').html(model.htmlContent).data('ModelId', id).hide();
|
||||
modelInsert(model);
|
||||
if (init) {
|
||||
model.htmlLi.fadeIn();
|
||||
} else {
|
||||
model.htmlLi.slideDown('slow');
|
||||
}
|
||||
}
|
||||
if (model.htmlLi && model.IsAlert) {
|
||||
model.htmlLi.addClass('alert');
|
||||
}
|
||||
scheduleModelUpdate(model);
|
||||
}
|
||||
};
|
||||
|
||||
var updatedModel = function (id) {
|
||||
var UserId = id.toString();
|
||||
$.getJSON('@(Url.Action(MVC.Public.UserHeldDevices.UserHeldDevice()))', { id: UserId }, function (data) {
|
||||
processModel(UserId, data, false);
|
||||
});
|
||||
};
|
||||
|
||||
var connectionError = function () {
|
||||
if (persistantConnection) {
|
||||
persistantConnection.stop();
|
||||
persistantConnection = null;
|
||||
window.setTimeout(function () {
|
||||
window.location.href = '@(Url.Action(MVC.Public.UserHeldDevices.Noticeboard()))';
|
||||
}, 10000);
|
||||
}
|
||||
}
|
||||
|
||||
var init = function () {
|
||||
buildFilters();
|
||||
persistantConnection = $.connection('@(Url.Content("~/Public/UserHeldDevices/Notifications"))');
|
||||
persistantConnection.received(updatedModel);
|
||||
persistantConnection.error(connectionError);
|
||||
persistantConnection.start(function () {
|
||||
$.getJSON('@(Url.Action(MVC.Public.UserHeldDevices.UserHeldDevices()))', null, function (data) {
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
processModel(data[i].UserId, data[i], true);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
init();
|
||||
|
||||
});
|
||||
</script>
|
||||
<div id="mainFooter">
|
||||
<img style="width: 32px; height: 32px; margin-top: -5px; margin-bottom: -15px;" src="@Links.ClientSource.Style.Images.Icon32_png" alt="Disco Logo" />
|
||||
powered by Disco
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,62 +1,62 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
|
||||
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
|
||||
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
|
||||
<system.web.webPages.razor>
|
||||
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<pages pageBaseType="System.Web.Mvc.WebViewPage">
|
||||
<namespaces>
|
||||
<add namespace="Disco.Models.Repository" />
|
||||
<add namespace="Disco.BI.Extensions" />
|
||||
<add namespace="Disco.Web" />
|
||||
<add namespace="Disco.Web.Extensions" />
|
||||
<add namespace="System.Web.Mvc" />
|
||||
<add namespace="System.Web.Mvc.Ajax" />
|
||||
<add namespace="System.Web.Mvc.Html" />
|
||||
<add namespace="System.Web.Routing" />
|
||||
</namespaces>
|
||||
</pages>
|
||||
</system.web.webPages.razor>
|
||||
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
|
||||
</httpHandlers>
|
||||
|
||||
<!--
|
||||
Enabling request validation in view pages would cause validation to occur
|
||||
after the input has already been processed by the controller. By default
|
||||
MVC performs request validation before a controller processes the input.
|
||||
To change this behavior apply the ValidateInputAttribute to a
|
||||
controller or action.
|
||||
-->
|
||||
<pages
|
||||
validateRequest="false"
|
||||
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
||||
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
||||
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
|
||||
<controls>
|
||||
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
|
||||
</controls>
|
||||
</pages>
|
||||
</system.web>
|
||||
|
||||
<system.webServer>
|
||||
<validation validateIntegratedModeConfiguration="false" />
|
||||
|
||||
<handlers>
|
||||
<remove name="BlockViewHandler"/>
|
||||
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
|
||||
</handlers>
|
||||
</system.webServer>
|
||||
</configuration>
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
|
||||
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
|
||||
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
|
||||
<system.web.webPages.razor>
|
||||
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<pages pageBaseType="System.Web.Mvc.WebViewPage">
|
||||
<namespaces>
|
||||
<add namespace="Disco.Models.Repository" />
|
||||
<add namespace="Disco.BI.Extensions" />
|
||||
<add namespace="Disco.Web" />
|
||||
<add namespace="Disco.Web.Extensions" />
|
||||
<add namespace="System.Web.Mvc" />
|
||||
<add namespace="System.Web.Mvc.Ajax" />
|
||||
<add namespace="System.Web.Mvc.Html" />
|
||||
<add namespace="System.Web.Routing" />
|
||||
</namespaces>
|
||||
</pages>
|
||||
</system.web.webPages.razor>
|
||||
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
|
||||
</httpHandlers>
|
||||
|
||||
<!--
|
||||
Enabling request validation in view pages would cause validation to occur
|
||||
after the input has already been processed by the controller. By default
|
||||
MVC performs request validation before a controller processes the input.
|
||||
To change this behavior apply the ValidateInputAttribute to a
|
||||
controller or action.
|
||||
-->
|
||||
<pages
|
||||
validateRequest="false"
|
||||
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
||||
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
|
||||
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
|
||||
<controls>
|
||||
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
|
||||
</controls>
|
||||
</pages>
|
||||
</system.web>
|
||||
|
||||
<system.webServer>
|
||||
<validation validateIntegratedModeConfiguration="false" />
|
||||
|
||||
<handlers>
|
||||
<remove name="BlockViewHandler"/>
|
||||
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
|
||||
</handlers>
|
||||
</system.webServer>
|
||||
</configuration>
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
@{
|
||||
Layout = "~/Areas/Public/Views/Shared/_Layout.cshtml";
|
||||
@{
|
||||
Layout = "~/Areas/Public/Views/Shared/_Layout.cshtml";
|
||||
}
|
||||
@@ -1,54 +1,54 @@
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.17929
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Public.Views
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Public/Views/_ViewStart.cshtml")]
|
||||
public class ViewStart : System.Web.Mvc.ViewStartPage
|
||||
{
|
||||
public ViewStart()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 1 "..\..\Areas\Public\Views\_ViewStart.cshtml"
|
||||
|
||||
Layout = "~/Areas/Public/Views/Shared/_Layout.cshtml";
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.17929
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Public.Views
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Public/Views/_ViewStart.cshtml")]
|
||||
public class ViewStart : System.Web.Mvc.ViewStartPage
|
||||
{
|
||||
public ViewStart()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 1 "..\..\Areas\Public\Views\_ViewStart.cshtml"
|
||||
|
||||
Layout = "~/Areas/Public/Views/Shared/_Layout.cshtml";
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
|
||||
Reference in New Issue
Block a user