Feature: Quick Search
Device/Job/User Search refactoring. Quick-Search implemented.
This commit is contained in:
1 parent
9ea0273936
commit
cd31ba4a6c
53 files changed
+1043
-468
No files matched your search
@@ -1,76 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using Disco.Models.BI.Search;
|
|
||||||
using Disco.Models.Repository;
|
|
||||||
using Disco.Data.Repository;
|
|
||||||
|
|
||||||
namespace Disco.BI.DeviceBI
|
|
||||||
{
|
|
||||||
public static class Searching
|
|
||||||
{
|
|
||||||
private static List<DeviceSearchResultItem> Search_SelectDeviceSearchResultItem(IQueryable<Device> Query, int? LimitCount = null)
|
|
||||||
{
|
|
||||||
if (LimitCount.HasValue)
|
|
||||||
Query = Query.Take(LimitCount.Value);
|
|
||||||
|
|
||||||
return Query.Select(d => new DeviceSearchResultItem()
|
|
||||||
{
|
|
||||||
SerialNumber = d.SerialNumber,
|
|
||||||
AssetNumber = d.AssetNumber,
|
|
||||||
ComputerName = d.ComputerName,
|
|
||||||
DeviceModelDescription = d.DeviceModel.Description,
|
|
||||||
DeviceProfileDescription = d.DeviceProfile.Description,
|
|
||||||
DecommissionedDate = d.DecommissionedDate,
|
|
||||||
AssignedUserId = d.AssignedUserId,
|
|
||||||
AssignedUserDisplayName = d.AssignedUser.DisplayName,
|
|
||||||
JobCount = d.Jobs.Count()
|
|
||||||
}).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<DeviceSearchResultItem> Search(DiscoDataContext Database, string Term, int? LimitCount = null, bool SearchDetails = false)
|
|
||||||
{
|
|
||||||
IQueryable<Device> query;
|
|
||||||
|
|
||||||
query = null;
|
|
||||||
|
|
||||||
if (SearchDetails)
|
|
||||||
{
|
|
||||||
query = Database.Devices.Where(d =>
|
|
||||||
d.AssetNumber.Contains(Term) ||
|
|
||||||
d.ComputerName.Contains(Term) ||
|
|
||||||
d.SerialNumber.Contains(Term) ||
|
|
||||||
d.Location.Contains(Term) ||
|
|
||||||
Term.Contains(d.SerialNumber) ||
|
|
||||||
d.DeviceDetails.Any(dd => dd.Value.Contains(Term))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
query = Database.Devices.Where(d =>
|
|
||||||
d.AssetNumber.Contains(Term) ||
|
|
||||||
d.ComputerName.Contains(Term) ||
|
|
||||||
d.SerialNumber.Contains(Term) ||
|
|
||||||
d.Location.Contains(Term) ||
|
|
||||||
Term.Contains(d.SerialNumber));
|
|
||||||
}
|
|
||||||
|
|
||||||
return Search_SelectDeviceSearchResultItem(query, LimitCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<DeviceSearchResultItem> SearchDeviceModel(DiscoDataContext Database, int DeviceModelId, int? LimitCount = null)
|
|
||||||
{
|
|
||||||
return Search_SelectDeviceSearchResultItem(Database.Devices.Where(d => d.DeviceModelId == DeviceModelId), LimitCount);
|
|
||||||
}
|
|
||||||
public static List<DeviceSearchResultItem> SearchDeviceProfile(DiscoDataContext Database, int DeviceProfileId, int? LimitCount = null)
|
|
||||||
{
|
|
||||||
return Search_SelectDeviceSearchResultItem(Database.Devices.Where(d => d.DeviceProfileId == DeviceProfileId), LimitCount);
|
|
||||||
}
|
|
||||||
public static List<DeviceSearchResultItem> SearchDeviceBatch(DiscoDataContext Database, int DeviceBatchId, int? LimitCount = null)
|
|
||||||
{
|
|
||||||
return Search_SelectDeviceSearchResultItem(Database.Devices.Where(d => d.DeviceBatchId == DeviceBatchId), LimitCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
using Disco.Data.Repository;
|
|
||||||
using Disco.Models.Repository;
|
|
||||||
using Disco.Models.Services.Jobs.JobLists;
|
|
||||||
using Disco.Services;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace Disco.BI.JobBI
|
|
||||||
{
|
|
||||||
public static class Searching
|
|
||||||
{
|
|
||||||
public static JobTableModel Search(DiscoDataContext Database, string Term, int? LimitCount = null, bool IncludeJobStatus = true, bool SearchDetails = false)
|
|
||||||
{
|
|
||||||
int termInt = default(int);
|
|
||||||
|
|
||||||
IQueryable<Job> query = default(IQueryable<Job>);
|
|
||||||
|
|
||||||
if (int.TryParse(Term, out termInt))
|
|
||||||
{
|
|
||||||
// Term is a Number (int)
|
|
||||||
if (SearchDetails)
|
|
||||||
{
|
|
||||||
query = BuildJobTableModel(Database).Where(j =>
|
|
||||||
j.Id == termInt ||
|
|
||||||
j.DeviceHeldLocation.Contains(Term) ||
|
|
||||||
j.Device.SerialNumber.Contains(Term) ||
|
|
||||||
j.Device.AssetNumber.Contains(Term) ||
|
|
||||||
j.User.Id == Term ||
|
|
||||||
j.User.Surname.Contains(Term) ||
|
|
||||||
j.User.GivenName.Contains(Term) ||
|
|
||||||
j.User.DisplayName.Contains(Term) ||
|
|
||||||
j.JobLogs.Any(jl => jl.Comments.Contains(Term)) ||
|
|
||||||
j.JobAttachments.Any(ja => ja.Comments.Contains(Term)));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
query = BuildJobTableModel(Database).Where(j =>
|
|
||||||
j.Id == termInt ||
|
|
||||||
j.DeviceHeldLocation.Contains(Term) ||
|
|
||||||
j.Device.SerialNumber.Contains(Term) ||
|
|
||||||
j.Device.AssetNumber.Contains(Term) ||
|
|
||||||
j.User.Id == Term ||
|
|
||||||
j.User.Surname.Contains(Term) ||
|
|
||||||
j.User.GivenName.Contains(Term) ||
|
|
||||||
j.User.DisplayName.Contains(Term));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (SearchDetails)
|
|
||||||
{
|
|
||||||
query = BuildJobTableModel(Database).Where(j =>
|
|
||||||
j.DeviceHeldLocation.Contains(Term) ||
|
|
||||||
j.Device.SerialNumber.Contains(Term) ||
|
|
||||||
j.Device.AssetNumber.Contains(Term) ||
|
|
||||||
j.User.Id == Term ||
|
|
||||||
j.User.Surname.Contains(Term) ||
|
|
||||||
j.User.GivenName.Contains(Term) ||
|
|
||||||
j.User.DisplayName.Contains(Term) ||
|
|
||||||
j.JobLogs.Any(jl => jl.Comments.Contains(Term)) ||
|
|
||||||
j.JobAttachments.Any(ja => ja.Comments.Contains(Term)));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
query = BuildJobTableModel(Database).Where(j =>
|
|
||||||
j.DeviceHeldLocation.Contains(Term) ||
|
|
||||||
j.Device.SerialNumber.Contains(Term) ||
|
|
||||||
j.Device.AssetNumber.Contains(Term) ||
|
|
||||||
j.User.Id == Term ||
|
|
||||||
j.User.Surname.Contains(Term) ||
|
|
||||||
j.User.GivenName.Contains(Term) ||
|
|
||||||
j.User.DisplayName.Contains(Term));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (LimitCount.HasValue)
|
|
||||||
query = query.Take(LimitCount.Value);
|
|
||||||
|
|
||||||
JobTableModel model = new JobTableModel() { ShowStatus = IncludeJobStatus };
|
|
||||||
model.Fill(Database, query, true);
|
|
||||||
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IQueryable<Job> BuildJobTableModel(DiscoDataContext Database)
|
|
||||||
{
|
|
||||||
return Database.Jobs.Include("JobType").Include("Device").Include("User").Include("OpenedTechUser");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using Disco.Models.BI.Search;
|
|
||||||
using Disco.Models.Repository;
|
|
||||||
using Disco.Data.Repository;
|
|
||||||
using Disco.Services.Users;
|
|
||||||
|
|
||||||
namespace Disco.BI.UserBI
|
|
||||||
{
|
|
||||||
public static class Searching
|
|
||||||
{
|
|
||||||
|
|
||||||
public static List<User> SearchUpstream(string Term)
|
|
||||||
{
|
|
||||||
return Interop.ActiveDirectory.ActiveDirectory.SearchUsers(Term).Select(adU => adU.ToRepositoryUser()).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static List<UserSearchResultItem> Search_SelectUserSearchResultItems(IQueryable<User> Query, int? LimitCount = null)
|
|
||||||
{
|
|
||||||
if (LimitCount.HasValue)
|
|
||||||
Query = Query.Take(LimitCount.Value);
|
|
||||||
|
|
||||||
return Query.Select(u => new UserSearchResultItem()
|
|
||||||
{
|
|
||||||
Id = u.Id,
|
|
||||||
Surname = u.Surname,
|
|
||||||
GivenName = u.GivenName,
|
|
||||||
DisplayName = u.DisplayName,
|
|
||||||
AssignedDevicesCount = u.DeviceUserAssignments.Where(dua => !dua.UnassignedDate.HasValue).Count(),
|
|
||||||
JobCount = u.Jobs.Count()
|
|
||||||
}).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<UserSearchResultItem> Search(DiscoDataContext Database, string Term, int? LimitCount = null)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrWhiteSpace(Term) || Term.Length < 2)
|
|
||||||
throw new ArgumentException("Search Term must contain at least two characters", "Term");
|
|
||||||
|
|
||||||
// Search Active Directory & Import Relevant Users
|
|
||||||
var adImportedUsers = Interop.ActiveDirectory.ActiveDirectory.SearchUsers(Term).Select(adU => adU.ToRepositoryUser());
|
|
||||||
foreach (var adU in adImportedUsers)
|
|
||||||
{
|
|
||||||
var existingUser = Database.Users.Find(adU.Id);
|
|
||||||
if (existingUser != null)
|
|
||||||
existingUser.UpdateSelf(adU);
|
|
||||||
else
|
|
||||||
Database.Users.Add(adU);
|
|
||||||
Database.SaveChanges();
|
|
||||||
UserService.InvalidateCachedUser(adU.Id);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Search_SelectUserSearchResultItems(Database.Users.Where(u =>
|
|
||||||
u.Id.Contains(Term) ||
|
|
||||||
u.Surname.Contains(Term) ||
|
|
||||||
u.GivenName.Contains(Term) ||
|
|
||||||
u.DisplayName.Contains(Term)
|
|
||||||
), LimitCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -129,7 +129,6 @@
|
|||||||
<Compile Include="BI\DeviceBI\Importing\ImportParseTask.cs" />
|
<Compile Include="BI\DeviceBI\Importing\ImportParseTask.cs" />
|
||||||
<Compile Include="BI\DeviceBI\Importing\ImportProcessTask.cs" />
|
<Compile Include="BI\DeviceBI\Importing\ImportProcessTask.cs" />
|
||||||
<Compile Include="BI\DeviceBI\Migration\LogMacAddressImporting.cs" />
|
<Compile Include="BI\DeviceBI\Migration\LogMacAddressImporting.cs" />
|
||||||
<Compile Include="BI\DeviceBI\Searching.cs" />
|
|
||||||
<Compile Include="BI\DisposableImageCollection.cs" />
|
<Compile Include="BI\DisposableImageCollection.cs" />
|
||||||
<Compile Include="BI\DocumentTemplateBI\DocumentTemplateQRCodeLocationCache.cs" />
|
<Compile Include="BI\DocumentTemplateBI\DocumentTemplateQRCodeLocationCache.cs" />
|
||||||
<Compile Include="BI\Expressions\EvaluateExpressionParseException.cs" />
|
<Compile Include="BI\Expressions\EvaluateExpressionParseException.cs" />
|
||||||
@@ -196,10 +195,8 @@
|
|||||||
<Compile Include="BI\Interop\SignalRHandlers\ScheduledTasksStatusNotifications.cs" />
|
<Compile Include="BI\Interop\SignalRHandlers\ScheduledTasksStatusNotifications.cs" />
|
||||||
<Compile Include="BI\Interop\SignalRHandlers\SignalRAuthenticationWorkaround.cs" />
|
<Compile Include="BI\Interop\SignalRHandlers\SignalRAuthenticationWorkaround.cs" />
|
||||||
<Compile Include="BI\Interop\SignalRHandlers\UserHeldDeviceNotifications.cs" />
|
<Compile Include="BI\Interop\SignalRHandlers\UserHeldDeviceNotifications.cs" />
|
||||||
<Compile Include="BI\JobBI\Searching.cs" />
|
|
||||||
<Compile Include="BI\JobBI\Statistics\DailyOpenedClosed.cs" />
|
<Compile Include="BI\JobBI\Statistics\DailyOpenedClosed.cs" />
|
||||||
<Compile Include="BI\JobBI\Utilities.cs" />
|
<Compile Include="BI\JobBI\Utilities.cs" />
|
||||||
<Compile Include="BI\UserBI\Searching.cs" />
|
|
||||||
<Compile Include="BI\Extensions\UtilityExtensions.cs" />
|
<Compile Include="BI\Extensions\UtilityExtensions.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Properties\Resources.Designer.cs">
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
@@ -254,7 +251,7 @@
|
|||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
<VisualStudio>
|
<VisualStudio>
|
||||||
<UserProperties BuildVersion_StartDate="2011/7/1" BuildVersion_BuildAction="Both" BuildVersion_DetectChanges="False" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" />
|
<UserProperties BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_DetectChanges="False" BuildVersion_BuildAction="Both" BuildVersion_StartDate="2011/7/1" />
|
||||||
</VisualStudio>
|
</VisualStudio>
|
||||||
</ProjectExtensions>
|
</ProjectExtensions>
|
||||||
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
|
|
||||||
namespace Disco.Models.BI.Search
|
|
||||||
{
|
|
||||||
public class UserSearchResultItem
|
|
||||||
{
|
|
||||||
public int AssignedDevicesCount { get; set; }
|
|
||||||
public string DisplayName { get; set; }
|
|
||||||
public string GivenName { get; set; }
|
|
||||||
public string Id { get; set; }
|
|
||||||
public int JobCount { get; set; }
|
|
||||||
public string Surname { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -63,8 +63,6 @@
|
|||||||
<Compile Include="BI\Interop\Community\UpdateRequestV1.cs" />
|
<Compile Include="BI\Interop\Community\UpdateRequestV1.cs" />
|
||||||
<Compile Include="BI\Interop\Community\UpdateResponse.cs" />
|
<Compile Include="BI\Interop\Community\UpdateResponse.cs" />
|
||||||
<Compile Include="BI\Job\Statistics\DailyOpenedClosedItem.cs" />
|
<Compile Include="BI\Job\Statistics\DailyOpenedClosedItem.cs" />
|
||||||
<Compile Include="BI\Search\DeviceSearchResultItem.cs" />
|
|
||||||
<Compile Include="BI\Search\UserSearchResultItem.cs" />
|
|
||||||
<Compile Include="ClientServices\EnrolResponse.cs" />
|
<Compile Include="ClientServices\EnrolResponse.cs" />
|
||||||
<Compile Include="ClientServices\MacEnrol.cs" />
|
<Compile Include="ClientServices\MacEnrol.cs" />
|
||||||
<Compile Include="ClientServices\MacEnrolResponse.cs" />
|
<Compile Include="ClientServices\MacEnrolResponse.cs" />
|
||||||
@@ -111,6 +109,10 @@
|
|||||||
<Compile Include="Services\Jobs\JobLists\JobTableStatusItemModel.cs" />
|
<Compile Include="Services\Jobs\JobLists\JobTableStatusItemModel.cs" />
|
||||||
<Compile Include="Services\Jobs\JobLists\JobTableStatusQueueItemModel.cs" />
|
<Compile Include="Services\Jobs\JobLists\JobTableStatusQueueItemModel.cs" />
|
||||||
<Compile Include="Services\Jobs\JobQueues\IJobQueueToken.cs" />
|
<Compile Include="Services\Jobs\JobQueues\IJobQueueToken.cs" />
|
||||||
|
<Compile Include="Services\Searching\DeviceSearchResultItem.cs" />
|
||||||
|
<Compile Include="Services\Searching\ISearchResultItem.cs" />
|
||||||
|
<Compile Include="Services\Searching\JobSearchResultItem.cs" />
|
||||||
|
<Compile Include="Services\Searching\UserSearchResultItem.cs" />
|
||||||
<Compile Include="UI\BaseUIModel.cs" />
|
<Compile Include="UI\BaseUIModel.cs" />
|
||||||
<Compile Include="UI\Config\AuthorizationRole\ConfigAuthorizationRoleCreateModel.cs" />
|
<Compile Include="UI\Config\AuthorizationRole\ConfigAuthorizationRoleCreateModel.cs" />
|
||||||
<Compile Include="UI\Config\AuthorizationRole\ConfigAuthorizationRoleIndexModel.cs" />
|
<Compile Include="UI\Config\AuthorizationRole\ConfigAuthorizationRoleIndexModel.cs" />
|
||||||
@@ -165,7 +167,7 @@
|
|||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
<VisualStudio>
|
<VisualStudio>
|
||||||
<UserProperties BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_StartDate="2011/7/1" BuildVersion_DetectChanges="False" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildAction="Both" />
|
<UserProperties BuildVersion_BuildAction="Both" BuildVersion_UseGlobalSettings="False" BuildVersion_DetectChanges="False" BuildVersion_StartDate="2011/7/1" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" />
|
||||||
</VisualStudio>
|
</VisualStudio>
|
||||||
</ProjectExtensions>
|
</ProjectExtensions>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
@@ -1,22 +1,34 @@
|
|||||||
using System;
|
using Disco.Models.Services.Searching;
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace Disco.Models.Services.Jobs.JobLists
|
namespace Disco.Models.Services.Jobs.JobLists
|
||||||
{
|
{
|
||||||
public class JobTableItemModel
|
public class JobTableItemModel : JobSearchResultItem
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int JobId { get; set; }
|
||||||
|
|
||||||
|
[Obsolete("Use [int] JobId instead")]
|
||||||
|
public override string Id
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.JobId.ToString();
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
base.Id = value;
|
||||||
|
this.JobId = int.Parse(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
public DateTime OpenedDate { get; set; }
|
public DateTime OpenedDate { get; set; }
|
||||||
public DateTime? ClosedDate { get; set; }
|
public DateTime? ClosedDate { get; set; }
|
||||||
public string JobTypeId { get; set; }
|
public string JobTypeId { get; set; }
|
||||||
public string JobTypeDescription { get; set; }
|
public string JobTypeDescription { get; set; }
|
||||||
public string DeviceSerialNumber { get; set; }
|
|
||||||
public int? DeviceModelId { get; set; }
|
public int? DeviceModelId { get; set; }
|
||||||
public string DeviceModelDescription { get; set; }
|
public string DeviceModelDescription { get; set; }
|
||||||
public int? DeviceProfileId { get; set; }
|
public int? DeviceProfileId { get; set; }
|
||||||
public int? DeviceAddressId { get; set; }
|
public int? DeviceAddressId { get; set; }
|
||||||
public string DeviceAddress { get; set; }
|
public string DeviceAddress { get; set; }
|
||||||
public string UserId { get; set; }
|
|
||||||
public string UserDisplayName { get; set; }
|
|
||||||
public string OpenedTechUserId { get; set; }
|
public string OpenedTechUserId { get; set; }
|
||||||
public string OpenedTechUserDisplayName { get; set; }
|
public string OpenedTechUserDisplayName { get; set; }
|
||||||
public string StatusDescription { get; set; }
|
public string StatusDescription { get; set; }
|
||||||
|
|||||||
+13
-3
@@ -1,9 +1,20 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Disco.Models.BI.Search
|
namespace Disco.Models.Services.Searching
|
||||||
{
|
{
|
||||||
public class DeviceSearchResultItem
|
public class DeviceSearchResultItem : ISearchResultItem
|
||||||
{
|
{
|
||||||
|
private const string type = "Device";
|
||||||
|
|
||||||
|
public string Id { get; set; }
|
||||||
|
public string Type { get { return type; } }
|
||||||
|
public string Description { get { return string.Format("{0} ({1})", this.Id, this.ComputerName); } }
|
||||||
|
public string ScoreValue { get { return string.Format("{0} {1} {2} {3}", this.Id, this.AssignedUserId, this.AssignedUserDisplayName, this.AssetNumber); } }
|
||||||
|
|
||||||
public string AssetNumber { get; set; }
|
public string AssetNumber { get; set; }
|
||||||
public string AssignedUserDescription
|
public string AssignedUserDescription
|
||||||
{
|
{
|
||||||
@@ -26,6 +37,5 @@ namespace Disco.Models.BI.Search
|
|||||||
public string DeviceProfileDescription { get; set; }
|
public string DeviceProfileDescription { get; set; }
|
||||||
public int JobCount { get; set; }
|
public int JobCount { get; set; }
|
||||||
public DateTime? DecommissionedDate { get; set; }
|
public DateTime? DecommissionedDate { get; set; }
|
||||||
public string SerialNumber { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Disco.Models.Services.Searching
|
||||||
|
{
|
||||||
|
public interface ISearchResultItem
|
||||||
|
{
|
||||||
|
string Id { get; set; }
|
||||||
|
string Type { get; }
|
||||||
|
string Description { get; }
|
||||||
|
string ScoreValue { get; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Disco.Models.Services.Searching
|
||||||
|
{
|
||||||
|
public class JobSearchResultItem : ISearchResultItem
|
||||||
|
{
|
||||||
|
private const string type = "Job";
|
||||||
|
|
||||||
|
public virtual string Id { get; set; }
|
||||||
|
public string Type { get { return type; } }
|
||||||
|
public string Description { get { return string.Format("{0} ({1}; {2})", this.Id, this.UserId, this.DeviceSerialNumber); } }
|
||||||
|
public string ScoreValue { get { return string.Format("{0} {1} {2} {3}", this.Id, this.UserId, this.DeviceSerialNumber, this.UserDisplayName); } }
|
||||||
|
|
||||||
|
public string DeviceSerialNumber { get; set; }
|
||||||
|
|
||||||
|
public string UserId { get; set; }
|
||||||
|
public string UserDisplayName { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Disco.Models.Services.Searching
|
||||||
|
{
|
||||||
|
public class UserSearchResultItem : ISearchResultItem
|
||||||
|
{
|
||||||
|
private const string type = "User";
|
||||||
|
|
||||||
|
public string Id { get; set; }
|
||||||
|
public string Type { get { return type; } }
|
||||||
|
public string Description { get { return string.Format("{0} ({1})", this.DisplayName, this.Id); } }
|
||||||
|
public string ScoreValue { get { return string.Format("{0} {1}", this.Id, this.DisplayName); } }
|
||||||
|
|
||||||
|
public int AssignedDevicesCount { get; set; }
|
||||||
|
public string DisplayName { get; set; }
|
||||||
|
public string GivenName { get; set; }
|
||||||
|
public int JobCount { get; set; }
|
||||||
|
public string Surname { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
using Disco.Models.BI.Search;
|
using Disco.Models.Services.Jobs.JobLists;
|
||||||
using Disco.Models.Services.Jobs.JobLists;
|
using Disco.Models.Services.Searching;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Disco.Models.UI.Search
|
namespace Disco.Models.UI.Search
|
||||||
|
|||||||
@@ -173,6 +173,7 @@
|
|||||||
<Compile Include="Authorization\Roles\RoleClaims.cs" />
|
<Compile Include="Authorization\Roles\RoleClaims.cs" />
|
||||||
<Compile Include="Authorization\Roles\RoleToken.cs" />
|
<Compile Include="Authorization\Roles\RoleToken.cs" />
|
||||||
<Compile Include="Extensions\DateTimeExtensions.cs" />
|
<Compile Include="Extensions\DateTimeExtensions.cs" />
|
||||||
|
<Compile Include="Extensions\StringExtensions.cs" />
|
||||||
<Compile Include="Jobs\JobExtensions.cs" />
|
<Compile Include="Jobs\JobExtensions.cs" />
|
||||||
<Compile Include="Jobs\JobLists\JobTableExtensions.cs" />
|
<Compile Include="Jobs\JobLists\JobTableExtensions.cs" />
|
||||||
<Compile Include="Jobs\JobQueues\Cache.cs" />
|
<Compile Include="Jobs\JobQueues\Cache.cs" />
|
||||||
@@ -230,6 +231,7 @@
|
|||||||
<Compile Include="Plugins\PluginWebViewPage.cs" />
|
<Compile Include="Plugins\PluginWebViewPage.cs" />
|
||||||
<Compile Include="Plugins\WebPageHelper.cs" />
|
<Compile Include="Plugins\WebPageHelper.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="Searching\Search.cs" />
|
||||||
<Compile Include="Tasks\ScheduledTask.cs" />
|
<Compile Include="Tasks\ScheduledTask.cs" />
|
||||||
<Compile Include="Tasks\ScheduledTasks.cs" />
|
<Compile Include="Tasks\ScheduledTasks.cs" />
|
||||||
<Compile Include="Tasks\ScheduledTasksLog.cs" />
|
<Compile Include="Tasks\ScheduledTasksLog.cs" />
|
||||||
@@ -278,7 +280,7 @@
|
|||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
<VisualStudio>
|
<VisualStudio>
|
||||||
<UserProperties BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_StartDate="2011/7/1" BuildVersion_BuildAction="Both" BuildVersion_DetectChanges="False" BuildVersion_UseGlobalSettings="False" />
|
<UserProperties BuildVersion_UseGlobalSettings="False" BuildVersion_DetectChanges="False" BuildVersion_BuildAction="Both" BuildVersion_StartDate="2011/7/1" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" />
|
||||||
</VisualStudio>
|
</VisualStudio>
|
||||||
</ProjectExtensions>
|
</ProjectExtensions>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
@@ -0,0 +1,107 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Disco
|
||||||
|
{
|
||||||
|
public static class StringExtensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A fuzzy string search algorithm.
|
||||||
|
///
|
||||||
|
/// Based on: ScoreSharp (https://github.com/bltavares/scoresharp)
|
||||||
|
/// Based on: string_score from Joshaven Potter (https://github.com/joshaven/string_score)
|
||||||
|
///
|
||||||
|
/// MIT License
|
||||||
|
/// </summary>
|
||||||
|
public static double Score(this string Source, string Test, double Fuzziness = 0)
|
||||||
|
{
|
||||||
|
double total_char_score = 0, abbrv_size = Test.Length,
|
||||||
|
fuzzies = 1, final_score, abbrv_score;
|
||||||
|
int word_size = Source.Length;
|
||||||
|
bool start_of_word_bonus = false;
|
||||||
|
|
||||||
|
//If strings are equal, return 1.0
|
||||||
|
if (Source == Test) return 1.0;
|
||||||
|
|
||||||
|
int index_in_string,
|
||||||
|
index_char_lowercase,
|
||||||
|
index_char_uppercase,
|
||||||
|
min_index;
|
||||||
|
double char_score;
|
||||||
|
string c;
|
||||||
|
for (int i = 0; i < abbrv_size; i++)
|
||||||
|
{
|
||||||
|
c = Test[i].ToString();
|
||||||
|
index_char_uppercase = Source.IndexOf(c.ToUpper());
|
||||||
|
index_char_lowercase = Source.IndexOf(c.ToLower());
|
||||||
|
min_index = Math.Min(index_char_lowercase, index_char_uppercase);
|
||||||
|
|
||||||
|
//Finds first valid occurrence
|
||||||
|
//In upper or lowercase
|
||||||
|
index_in_string = min_index > -1 ?
|
||||||
|
min_index : Math.Max(index_char_lowercase, index_char_uppercase);
|
||||||
|
|
||||||
|
//If no value is found
|
||||||
|
//Check if fuzziness is allowed
|
||||||
|
if (index_in_string == -1)
|
||||||
|
{
|
||||||
|
if (Fuzziness > 0)
|
||||||
|
{
|
||||||
|
fuzzies += 1 - Fuzziness;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
char_score = 0.1;
|
||||||
|
|
||||||
|
//Check if current char is the same case
|
||||||
|
//Then add bonus
|
||||||
|
if (Source[index_in_string].ToString() == c) char_score += 0.1;
|
||||||
|
|
||||||
|
//Check if char matches the first letter
|
||||||
|
//And add bonus for consecutive letters
|
||||||
|
if (index_in_string == 0)
|
||||||
|
{
|
||||||
|
char_score += 0.6;
|
||||||
|
|
||||||
|
//Check if the abbreviation
|
||||||
|
//is in the start of the word
|
||||||
|
start_of_word_bonus = i == 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Acronym Bonus
|
||||||
|
// Weighing Logic: Typing the first character of an acronym is as if you
|
||||||
|
// preceded it with two perfect character matches.
|
||||||
|
if (Source.ElementAtOrDefault(index_in_string - 1).ToString() == " ") char_score += 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Remove the start of string, so we don't reprocess it
|
||||||
|
Source = Source.Substring(index_in_string + 1);
|
||||||
|
|
||||||
|
//sum chars scores
|
||||||
|
total_char_score += char_score;
|
||||||
|
}
|
||||||
|
|
||||||
|
abbrv_score = total_char_score / abbrv_size;
|
||||||
|
|
||||||
|
//Reduce penalty for longer words
|
||||||
|
final_score = ((abbrv_score * (abbrv_size / word_size)) + abbrv_score) / 2;
|
||||||
|
|
||||||
|
//Reduce using fuzzies;
|
||||||
|
final_score = final_score / fuzzies;
|
||||||
|
|
||||||
|
//Process start of string bonus
|
||||||
|
if (start_of_word_bonus && final_score <= 0.85)
|
||||||
|
final_score += 0.15;
|
||||||
|
|
||||||
|
return final_score;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,7 +14,7 @@ namespace Disco.Services
|
|||||||
{
|
{
|
||||||
var i = new JobTableStatusItemModel()
|
var i = new JobTableStatusItemModel()
|
||||||
{
|
{
|
||||||
Id = j.Id,
|
JobId = j.Id,
|
||||||
OpenedDate = j.OpenedDate,
|
OpenedDate = j.OpenedDate,
|
||||||
ClosedDate = j.ClosedDate,
|
ClosedDate = j.ClosedDate,
|
||||||
JobTypeId = j.JobTypeId,
|
JobTypeId = j.JobTypeId,
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ namespace Disco.Services
|
|||||||
|
|
||||||
var jobItems = Jobs.Select(j => new JobTableStatusItemModel()
|
var jobItems = Jobs.Select(j => new JobTableStatusItemModel()
|
||||||
{
|
{
|
||||||
Id = j.Id,
|
JobId = j.Id,
|
||||||
OpenedDate = j.OpenedDate,
|
OpenedDate = j.OpenedDate,
|
||||||
ClosedDate = j.ClosedDate,
|
ClosedDate = j.ClosedDate,
|
||||||
JobTypeId = j.JobTypeId,
|
JobTypeId = j.JobTypeId,
|
||||||
@@ -177,7 +177,7 @@ namespace Disco.Services
|
|||||||
{
|
{
|
||||||
items = Jobs.Select(j => new JobTableItemModel()
|
items = Jobs.Select(j => new JobTableItemModel()
|
||||||
{
|
{
|
||||||
Id = j.Id,
|
JobId = j.Id,
|
||||||
OpenedDate = j.OpenedDate,
|
OpenedDate = j.OpenedDate,
|
||||||
ClosedDate = j.ClosedDate,
|
ClosedDate = j.ClosedDate,
|
||||||
JobTypeId = j.JobTypeId,
|
JobTypeId = j.JobTypeId,
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ using Disco.Services.Authorization;
|
|||||||
if (existingItems == null)
|
if (existingItems == null)
|
||||||
throw new InvalidOperationException("Notification algorithm didn't indicate any Jobs for update");
|
throw new InvalidOperationException("Notification algorithm didn't indicate any Jobs for update");
|
||||||
else
|
else
|
||||||
jobIds = existingItems.Select(i => i.Id).ToList();
|
jobIds = existingItems.Select(i => i.JobId).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jobIds.Count == 0)
|
if (jobIds.Count == 0)
|
||||||
@@ -232,7 +232,7 @@ using Disco.Services.Authorization;
|
|||||||
{
|
{
|
||||||
// Check for existing items, if not handed them
|
// Check for existing items, if not handed them
|
||||||
if (existingItems == null)
|
if (existingItems == null)
|
||||||
existingItems = base.Items.Where(i => jobIds.Contains(i.Id)).ToArray();
|
existingItems = base.Items.Where(i => jobIds.Contains(i.JobId)).ToArray();
|
||||||
|
|
||||||
var updatedItems = this.DetermineItems(Database, this.FilterFunction(Database.Jobs.Where(j => jobIds.Contains(j.Id))), false);
|
var updatedItems = this.DetermineItems(Database, this.FilterFunction(Database.Jobs.Where(j => jobIds.Contains(j.Id))), false);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,247 @@
|
|||||||
|
using Disco.Data.Repository;
|
||||||
|
using Disco.Models.Interop.ActiveDirectory;
|
||||||
|
using Disco.Models.Repository;
|
||||||
|
using Disco.Models.Services.Jobs.JobLists;
|
||||||
|
using Disco.Models.Services.Searching;
|
||||||
|
using Disco.Services.Users;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Disco.Services.Searching
|
||||||
|
{
|
||||||
|
public static class Search
|
||||||
|
{
|
||||||
|
|
||||||
|
#region Jobs
|
||||||
|
public static List<JobSearchResultItem> SearchJobs(DiscoDataContext Database, string Term, int? LimitCount = null)
|
||||||
|
{
|
||||||
|
int termInt = default(int);
|
||||||
|
|
||||||
|
IQueryable<Job> query = default(IQueryable<Job>);
|
||||||
|
|
||||||
|
if (int.TryParse(Term, out termInt))
|
||||||
|
{
|
||||||
|
// Term is a Number (int)
|
||||||
|
query = Database.Jobs.Where(j =>
|
||||||
|
j.Id == termInt ||
|
||||||
|
j.Device.SerialNumber.Contains(Term) ||
|
||||||
|
j.Device.AssetNumber.Contains(Term) ||
|
||||||
|
j.User.Id == Term ||
|
||||||
|
j.User.DisplayName.Contains(Term));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
query = Database.Jobs.Where(j =>
|
||||||
|
j.Device.SerialNumber.Contains(Term) ||
|
||||||
|
j.Device.AssetNumber.Contains(Term) ||
|
||||||
|
j.User.Id == Term ||
|
||||||
|
j.User.DisplayName.Contains(Term));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (LimitCount.HasValue)
|
||||||
|
query = query.Take(LimitCount.Value);
|
||||||
|
|
||||||
|
return query.Select(j => new
|
||||||
|
{
|
||||||
|
Id = j.Id,
|
||||||
|
DeviceSerialNumber = j.DeviceSerialNumber,
|
||||||
|
UserId = j.UserId,
|
||||||
|
UserDisplayName = j.User.DisplayName
|
||||||
|
}).ToArray().Select(i => new JobSearchResultItem()
|
||||||
|
{
|
||||||
|
Id = i.Id.ToString(),
|
||||||
|
DeviceSerialNumber = i.DeviceSerialNumber,
|
||||||
|
UserId = i.UserId,
|
||||||
|
UserDisplayName = i.UserDisplayName
|
||||||
|
}).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static JobTableModel SearchJobsTable(DiscoDataContext Database, string Term, int? LimitCount = null, bool IncludeJobStatus = true, bool SearchDetails = false)
|
||||||
|
{
|
||||||
|
int termInt = default(int);
|
||||||
|
|
||||||
|
IQueryable<Job> query = default(IQueryable<Job>);
|
||||||
|
|
||||||
|
if (int.TryParse(Term, out termInt))
|
||||||
|
{
|
||||||
|
// Term is a Number (int)
|
||||||
|
if (SearchDetails)
|
||||||
|
{
|
||||||
|
query = BuildJobTableModel(Database).Where(j =>
|
||||||
|
j.Id == termInt ||
|
||||||
|
j.DeviceHeldLocation.Contains(Term) ||
|
||||||
|
j.Device.SerialNumber.Contains(Term) ||
|
||||||
|
j.Device.AssetNumber.Contains(Term) ||
|
||||||
|
j.User.Id == Term ||
|
||||||
|
j.User.Surname.Contains(Term) ||
|
||||||
|
j.User.GivenName.Contains(Term) ||
|
||||||
|
j.User.DisplayName.Contains(Term) ||
|
||||||
|
j.JobLogs.Any(jl => jl.Comments.Contains(Term)) ||
|
||||||
|
j.JobAttachments.Any(ja => ja.Comments.Contains(Term)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
query = BuildJobTableModel(Database).Where(j =>
|
||||||
|
j.Id == termInt ||
|
||||||
|
j.DeviceHeldLocation.Contains(Term) ||
|
||||||
|
j.Device.SerialNumber.Contains(Term) ||
|
||||||
|
j.Device.AssetNumber.Contains(Term) ||
|
||||||
|
j.User.Id == Term ||
|
||||||
|
j.User.Surname.Contains(Term) ||
|
||||||
|
j.User.GivenName.Contains(Term) ||
|
||||||
|
j.User.DisplayName.Contains(Term));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (SearchDetails)
|
||||||
|
{
|
||||||
|
query = BuildJobTableModel(Database).Where(j =>
|
||||||
|
j.DeviceHeldLocation.Contains(Term) ||
|
||||||
|
j.Device.SerialNumber.Contains(Term) ||
|
||||||
|
j.Device.AssetNumber.Contains(Term) ||
|
||||||
|
j.User.Id == Term ||
|
||||||
|
j.User.Surname.Contains(Term) ||
|
||||||
|
j.User.GivenName.Contains(Term) ||
|
||||||
|
j.User.DisplayName.Contains(Term) ||
|
||||||
|
j.JobLogs.Any(jl => jl.Comments.Contains(Term)) ||
|
||||||
|
j.JobAttachments.Any(ja => ja.Comments.Contains(Term)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
query = BuildJobTableModel(Database).Where(j =>
|
||||||
|
j.DeviceHeldLocation.Contains(Term) ||
|
||||||
|
j.Device.SerialNumber.Contains(Term) ||
|
||||||
|
j.Device.AssetNumber.Contains(Term) ||
|
||||||
|
j.User.Id == Term ||
|
||||||
|
j.User.Surname.Contains(Term) ||
|
||||||
|
j.User.GivenName.Contains(Term) ||
|
||||||
|
j.User.DisplayName.Contains(Term));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (LimitCount.HasValue)
|
||||||
|
query = query.Take(LimitCount.Value);
|
||||||
|
|
||||||
|
JobTableModel model = new JobTableModel() { ShowStatus = IncludeJobStatus };
|
||||||
|
model.Fill(Database, query, true);
|
||||||
|
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IQueryable<Job> BuildJobTableModel(DiscoDataContext Database)
|
||||||
|
{
|
||||||
|
return Database.Jobs.Include("JobType").Include("Device").Include("User").Include("OpenedTechUser");
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Users
|
||||||
|
public static List<UserSearchResultItem> SearchUsers(DiscoDataContext Database, string Term, int? LimitCount = null)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(Term) || Term.Length < 2)
|
||||||
|
throw new ArgumentException("Search Term must contain at least two characters", "Term");
|
||||||
|
|
||||||
|
// Search Active Directory & Import Relevant Users
|
||||||
|
UserService.SearchUsers(Database, Term);
|
||||||
|
|
||||||
|
var matches = Database.Users.Where(u =>
|
||||||
|
u.Id.Contains(Term) ||
|
||||||
|
u.Surname.Contains(Term) ||
|
||||||
|
u.GivenName.Contains(Term) ||
|
||||||
|
u.DisplayName.Contains(Term)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (LimitCount.HasValue)
|
||||||
|
matches = matches.Take(LimitCount.Value);
|
||||||
|
|
||||||
|
return matches.Select(u => new UserSearchResultItem()
|
||||||
|
{
|
||||||
|
Id = u.Id,
|
||||||
|
Surname = u.Surname,
|
||||||
|
GivenName = u.GivenName,
|
||||||
|
DisplayName = u.DisplayName,
|
||||||
|
AssignedDevicesCount = u.DeviceUserAssignments.Where(dua => !dua.UnassignedDate.HasValue).Count(),
|
||||||
|
JobCount = u.Jobs.Count()
|
||||||
|
}).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<User> SearchUsersUpstream(string Term, int? LimitCount = null)
|
||||||
|
{
|
||||||
|
IEnumerable<ActiveDirectoryUserAccount> matches = UserService.SearchUsers(Term);
|
||||||
|
|
||||||
|
if (LimitCount.HasValue)
|
||||||
|
matches = matches.Take(LimitCount.Value);
|
||||||
|
|
||||||
|
return matches.Select(m => m.ToRepositoryUser()).ToList();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Devices
|
||||||
|
public static List<DeviceSearchResultItem> SearchDevices(DiscoDataContext Database, string Term, int? LimitCount = null, bool SearchDetails = false)
|
||||||
|
{
|
||||||
|
IQueryable<Device> query;
|
||||||
|
|
||||||
|
query = null;
|
||||||
|
|
||||||
|
if (SearchDetails)
|
||||||
|
{
|
||||||
|
query = Database.Devices.Where(d =>
|
||||||
|
d.AssetNumber.Contains(Term) ||
|
||||||
|
d.ComputerName.Contains(Term) ||
|
||||||
|
d.SerialNumber.Contains(Term) ||
|
||||||
|
d.Location.Contains(Term) ||
|
||||||
|
Term.Contains(d.SerialNumber) ||
|
||||||
|
d.DeviceDetails.Any(dd => dd.Value.Contains(Term))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
query = Database.Devices.Where(d =>
|
||||||
|
d.AssetNumber.Contains(Term) ||
|
||||||
|
d.ComputerName.Contains(Term) ||
|
||||||
|
d.SerialNumber.Contains(Term) ||
|
||||||
|
d.Location.Contains(Term) ||
|
||||||
|
Term.Contains(d.SerialNumber));
|
||||||
|
}
|
||||||
|
|
||||||
|
return query.ToDeviceSearchResultItems(LimitCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<DeviceSearchResultItem> SearchDeviceModel(DiscoDataContext Database, int DeviceModelId, int? LimitCount = null)
|
||||||
|
{
|
||||||
|
return Database.Devices.Where(d => d.DeviceModelId == DeviceModelId).ToDeviceSearchResultItems(LimitCount);
|
||||||
|
}
|
||||||
|
public static List<DeviceSearchResultItem> SearchDeviceProfile(DiscoDataContext Database, int DeviceProfileId, int? LimitCount = null)
|
||||||
|
{
|
||||||
|
return Database.Devices.Where(d => d.DeviceProfileId == DeviceProfileId).ToDeviceSearchResultItems(LimitCount);
|
||||||
|
}
|
||||||
|
public static List<DeviceSearchResultItem> SearchDeviceBatch(DiscoDataContext Database, int DeviceBatchId, int? LimitCount = null)
|
||||||
|
{
|
||||||
|
return Database.Devices.Where(d => d.DeviceBatchId == DeviceBatchId).ToDeviceSearchResultItems(LimitCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<DeviceSearchResultItem> ToDeviceSearchResultItems(this IQueryable<Device> Query, int? LimitCount = null)
|
||||||
|
{
|
||||||
|
if (LimitCount.HasValue)
|
||||||
|
Query = Query.Take(LimitCount.Value);
|
||||||
|
|
||||||
|
return Query.Select(d => new DeviceSearchResultItem()
|
||||||
|
{
|
||||||
|
Id = d.SerialNumber,
|
||||||
|
AssetNumber = d.AssetNumber,
|
||||||
|
ComputerName = d.ComputerName,
|
||||||
|
DeviceModelDescription = d.DeviceModel.Description,
|
||||||
|
DeviceProfileDescription = d.DeviceProfile.Description,
|
||||||
|
DecommissionedDate = d.DecommissionedDate,
|
||||||
|
AssignedUserId = d.AssignedUserId,
|
||||||
|
AssignedUserDisplayName = d.AssignedUser.DisplayName,
|
||||||
|
JobCount = d.Jobs.Count()
|
||||||
|
}).ToList();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,13 +22,16 @@ namespace Disco.Services.Users
|
|||||||
private const string _cacheHttpRequestKey = "Disco_CurrentUserToken";
|
private const string _cacheHttpRequestKey = "Disco_CurrentUserToken";
|
||||||
private static Func<string, string[], ActiveDirectoryUserAccount> _GetActiveDirectoryUserAccount;
|
private static Func<string, string[], ActiveDirectoryUserAccount> _GetActiveDirectoryUserAccount;
|
||||||
private static Func<string, string[], ActiveDirectoryMachineAccount> _GetActiveDirectoryMachineAccount;
|
private static Func<string, string[], ActiveDirectoryMachineAccount> _GetActiveDirectoryMachineAccount;
|
||||||
|
private static Func<string, List<ActiveDirectoryUserAccount>> _SearchActiveDirectoryUsers;
|
||||||
|
|
||||||
public static void Initialize(DiscoDataContext Database,
|
public static void Initialize(DiscoDataContext Database,
|
||||||
Func<string, string[], ActiveDirectoryUserAccount> GetActiveDirectoryUserAccount,
|
Func<string, string[], ActiveDirectoryUserAccount> GetActiveDirectoryUserAccount,
|
||||||
Func<string, string[], ActiveDirectoryMachineAccount> GetActiveDirectoryMachineAccount)
|
Func<string, string[], ActiveDirectoryMachineAccount> GetActiveDirectoryMachineAccount,
|
||||||
|
Func<string, List<ActiveDirectoryUserAccount>> SearchActiveDirectoryUsers)
|
||||||
{
|
{
|
||||||
_GetActiveDirectoryUserAccount = GetActiveDirectoryUserAccount;
|
_GetActiveDirectoryUserAccount = GetActiveDirectoryUserAccount;
|
||||||
_GetActiveDirectoryMachineAccount = GetActiveDirectoryMachineAccount;
|
_GetActiveDirectoryMachineAccount = GetActiveDirectoryMachineAccount;
|
||||||
|
_SearchActiveDirectoryUsers = SearchActiveDirectoryUsers;
|
||||||
|
|
||||||
Authorization.Roles.RoleCache.Initialize(Database);
|
Authorization.Roles.RoleCache.Initialize(Database);
|
||||||
}
|
}
|
||||||
@@ -201,6 +204,27 @@ namespace Disco.Services.Users
|
|||||||
Cache.FlushCache();
|
Cache.FlushCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static List<ActiveDirectoryUserAccount> SearchUsers(string Term)
|
||||||
|
{
|
||||||
|
return _SearchActiveDirectoryUsers(Term);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static List<ActiveDirectoryUserAccount> SearchUsers(DiscoDataContext Database, string Term)
|
||||||
|
{
|
||||||
|
var adImportedUsers = SearchUsers(Term);
|
||||||
|
foreach (var adU in adImportedUsers.Select(adU => adU.ToRepositoryUser()))
|
||||||
|
{
|
||||||
|
var existingUser = Database.Users.Find(adU.Id);
|
||||||
|
if (existingUser != null)
|
||||||
|
existingUser.UpdateSelf(adU);
|
||||||
|
else
|
||||||
|
Database.Users.Add(adU);
|
||||||
|
Database.SaveChanges();
|
||||||
|
UserService.InvalidateCachedUser(adU.Id);
|
||||||
|
}
|
||||||
|
return adImportedUsers;
|
||||||
|
}
|
||||||
|
|
||||||
internal static Tuple<User, AuthorizationToken> ImportUser(DiscoDataContext Database, string UserId)
|
internal static Tuple<User, AuthorizationToken> ImportUser(DiscoDataContext Database, string UserId)
|
||||||
{
|
{
|
||||||
if (_GetActiveDirectoryUserAccount == null)
|
if (_GetActiveDirectoryUserAccount == null)
|
||||||
|
|||||||
@@ -45,7 +45,8 @@ namespace Disco.Web
|
|||||||
// Initialize User Service Interop
|
// Initialize User Service Interop
|
||||||
Disco.Services.Users.UserService.Initialize(Database,
|
Disco.Services.Users.UserService.Initialize(Database,
|
||||||
(UserId, AdditionalProperties) => Disco.BI.Interop.ActiveDirectory.ActiveDirectory.GetUserAccount(UserId, AdditionalProperties),
|
(UserId, AdditionalProperties) => Disco.BI.Interop.ActiveDirectory.ActiveDirectory.GetUserAccount(UserId, AdditionalProperties),
|
||||||
(UserId, AdditionalProperties) => Disco.BI.Interop.ActiveDirectory.ActiveDirectory.GetMachineAccount(UserId, null, null, AdditionalProperties));
|
(UserId, AdditionalProperties) => Disco.BI.Interop.ActiveDirectory.ActiveDirectory.GetMachineAccount(UserId, null, null, AdditionalProperties),
|
||||||
|
(Term) => Disco.BI.Interop.ActiveDirectory.ActiveDirectory.SearchUsers(Term));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,8 @@ namespace Disco.Web
|
|||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: "SearchQuery",
|
name: "SearchQuery",
|
||||||
url: "Search/Query/{SearchQuery}",
|
url: "Search/Query/{SearchQuery}",
|
||||||
defaults: new { controller = "Search", action = "Query", SearchQuery = UrlParameter.Optional }
|
defaults: new { controller = "Search", action = "Query", SearchQuery = UrlParameter.Optional },
|
||||||
|
namespaces: new string[] { "Disco.Web.Controllers" } // Controllers Namespace Only
|
||||||
);
|
);
|
||||||
// User Route
|
// User Route
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
|
|||||||
@@ -35,7 +35,8 @@ namespace Disco.Web.Areas.API
|
|||||||
context.MapRoute(
|
context.MapRoute(
|
||||||
"API_default",
|
"API_default",
|
||||||
"API/{controller}/{action}/{id}",
|
"API/{controller}/{action}/{id}",
|
||||||
new { id = UrlParameter.Optional }
|
new { id = UrlParameter.Optional },
|
||||||
|
new string[] { "Disco.Web.Areas.API.Controllers" }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -324,13 +324,13 @@ namespace Disco.Web.Areas.API.Controllers
|
|||||||
switch (searchScope)
|
switch (searchScope)
|
||||||
{
|
{
|
||||||
case DocumentTemplate.DocumentTemplateScopes.Device:
|
case DocumentTemplate.DocumentTemplateScopes.Device:
|
||||||
results = BI.DeviceBI.Searching.Search(Database, term, limitCount).Select(sr => Models.DocumentTemplate.ImporterUndetectedDataIdLookupModel.FromSearchResultItem(sr)).ToArray();
|
results = Disco.Services.Searching.Search.SearchDevices(Database, term, limitCount).Select(sr => Models.DocumentTemplate.ImporterUndetectedDataIdLookupModel.FromSearchResultItem(sr)).ToArray();
|
||||||
break;
|
break;
|
||||||
case DocumentTemplate.DocumentTemplateScopes.Job:
|
case DocumentTemplate.DocumentTemplateScopes.Job:
|
||||||
results = BI.JobBI.Searching.Search(Database, term, limitCount, false).Items.Select(sr => Models.DocumentTemplate.ImporterUndetectedDataIdLookupModel.FromSearchResultItem(sr)).ToArray();
|
results = Disco.Services.Searching.Search.SearchJobsTable(Database, term, limitCount, false).Items.Select(sr => Models.DocumentTemplate.ImporterUndetectedDataIdLookupModel.FromSearchResultItem(sr)).ToArray();
|
||||||
break;
|
break;
|
||||||
case DocumentTemplate.DocumentTemplateScopes.User:
|
case DocumentTemplate.DocumentTemplateScopes.User:
|
||||||
results = BI.UserBI.Searching.Search(Database, term, limitCount).Select(sr => Models.DocumentTemplate.ImporterUndetectedDataIdLookupModel.FromSearchResultItem(sr)).ToArray();
|
results = Disco.Services.Searching.Search.SearchUsers(Database, term, limitCount).Select(sr => Models.DocumentTemplate.ImporterUndetectedDataIdLookupModel.FromSearchResultItem(sr)).ToArray();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
results = null;
|
results = null;
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
using Disco.Models.Services.Searching;
|
||||||
|
using Disco.Services.Authorization;
|
||||||
|
using Disco.Services.Searching;
|
||||||
|
using Disco.Services.Web;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Web;
|
||||||
|
using System.Web.Mvc;
|
||||||
|
|
||||||
|
namespace Disco.Web.Areas.API.Controllers
|
||||||
|
{
|
||||||
|
public partial class SearchController : AuthorizedDatabaseController
|
||||||
|
{
|
||||||
|
[DiscoAuthorizeAny(Claims.Job.Search, Claims.Device.Search, Claims.User.Search)]
|
||||||
|
public virtual ActionResult QuickQuery(string Term, int Limit = 15)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(Term))
|
||||||
|
throw new ArgumentNullException("Term", "The search query term is required");
|
||||||
|
if (Term.Length < 2)
|
||||||
|
throw new ArgumentException("The search query term must be at least two characters", "Term");
|
||||||
|
if (Limit < 1)
|
||||||
|
throw new ArgumentException("The search query limit cannot be less than 1", "Limit");
|
||||||
|
|
||||||
|
IEnumerable<ISearchResultItem> results = Enumerable.Empty<ISearchResultItem>();
|
||||||
|
|
||||||
|
if (Authorization.Has(Claims.Job.Search))
|
||||||
|
{
|
||||||
|
var jobMatches = Search.SearchJobs(Database, Term, Limit);
|
||||||
|
results = results.Concat(jobMatches);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Authorization.Has(Claims.User.Search))
|
||||||
|
{
|
||||||
|
var userMatches = Search.SearchUsers(Database, Term, Limit);
|
||||||
|
results = results.Concat(userMatches);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Authorization.Has(Claims.Device.Search))
|
||||||
|
{
|
||||||
|
var deviceMatches = Search.SearchDevices(Database, Term, Limit);
|
||||||
|
results = results.Concat(deviceMatches);
|
||||||
|
}
|
||||||
|
|
||||||
|
results = results.OrderByDescending(i => i.ScoreValue.Score(Term, .5)).Take(Limit);
|
||||||
|
|
||||||
|
return Json(results, JsonRequestBehavior.AllowGet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,7 +14,7 @@ namespace Disco.Web.Areas.API.Controllers
|
|||||||
[DiscoAuthorize(Claims.User.Search)]
|
[DiscoAuthorize(Claims.User.Search)]
|
||||||
public virtual ActionResult UpstreamUsers(string term)
|
public virtual ActionResult UpstreamUsers(string term)
|
||||||
{
|
{
|
||||||
return Json(BI.UserBI.Searching.SearchUpstream(term), JsonRequestBehavior.AllowGet);
|
return Json(Disco.Services.Searching.Search.SearchUsersUpstream(term), JsonRequestBehavior.AllowGet);
|
||||||
}
|
}
|
||||||
|
|
||||||
#region User Attachements
|
#region User Attachements
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
using Disco.Models.BI.Search;
|
using Disco.Models.Services.Jobs.JobLists;
|
||||||
using Disco.Models.Services.Jobs.JobLists;
|
using Disco.Models.Services.Searching;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -12,20 +12,20 @@ namespace Disco.Web.Areas.API.Models.DocumentTemplate
|
|||||||
public string value { get; set; }
|
public string value { get; set; }
|
||||||
public string label { get; set; }
|
public string label { get; set; }
|
||||||
|
|
||||||
public static ImporterUndetectedDataIdLookupModel FromSearchResultItem(Disco.Models.BI.Search.DeviceSearchResultItem item)
|
public static ImporterUndetectedDataIdLookupModel FromSearchResultItem(DeviceSearchResultItem item)
|
||||||
{
|
{
|
||||||
return new ImporterUndetectedDataIdLookupModel
|
return new ImporterUndetectedDataIdLookupModel
|
||||||
{
|
{
|
||||||
value = item.SerialNumber,
|
value = item.Id,
|
||||||
label = string.Format("{0} - {1} - {2}", item.SerialNumber, item.ComputerName, item.DeviceModelDescription)
|
label = string.Format("{0} - {1} - {2}", item.Id, item.ComputerName, item.DeviceModelDescription)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
public static ImporterUndetectedDataIdLookupModel FromSearchResultItem(JobTableItemModel item)
|
public static ImporterUndetectedDataIdLookupModel FromSearchResultItem(JobTableItemModel item)
|
||||||
{
|
{
|
||||||
return new ImporterUndetectedDataIdLookupModel
|
return new ImporterUndetectedDataIdLookupModel
|
||||||
{
|
{
|
||||||
value = item.Id.ToString(),
|
value = item.JobId.ToString(),
|
||||||
label = string.Format("{0} ({1}; {2})", item.Id, item.DeviceSerialNumber, item.UserDisplayName)
|
label = string.Format("{0} ({1}; {2})", item.JobId, item.DeviceSerialNumber, item.UserDisplayName)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
public static ImporterUndetectedDataIdLookupModel FromSearchResultItem(UserSearchResultItem item)
|
public static ImporterUndetectedDataIdLookupModel FromSearchResultItem(UserSearchResultItem item)
|
||||||
|
|||||||
@@ -41936,13 +41936,76 @@ jQuery.fn.DataTable.defaults.aLengthMenu = [[10, 20, 50, -1], [10, 20, 50, "All"
|
|||||||
$(function () {
|
$(function () {
|
||||||
|
|
||||||
// Search Functionality
|
// Search Functionality
|
||||||
|
var quickSearchInited = false;
|
||||||
$('#SearchQuery').watermark('Search').keypress(function (e) {
|
$('#SearchQuery').watermark('Search').keypress(function (e) {
|
||||||
if (e.keyCode == 13) {
|
if (e.keyCode == 13) {
|
||||||
$(this).closest('form').submit();
|
$(this).closest('form').submit();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}).focus(function () {
|
}).focus(function () {
|
||||||
$(this).select();
|
$this = $(this);
|
||||||
|
$this.select();
|
||||||
|
|
||||||
|
if (!quickSearchInited) {
|
||||||
|
var quickSearchUrl = $this.attr('data-quicksearchurl');
|
||||||
|
if (quickSearchUrl) {
|
||||||
|
$this.autocomplete({
|
||||||
|
source: quickSearchUrl,
|
||||||
|
minLength: 2,
|
||||||
|
select: function (e, ui) {
|
||||||
|
$this.val(ui.item.tag);
|
||||||
|
$this.closest('form').submit();
|
||||||
|
},
|
||||||
|
response: function (e, ui) {
|
||||||
|
for (var i = 0; i < ui.content.length; i++) {
|
||||||
|
var item = ui.content[i];
|
||||||
|
switch (item.Type) {
|
||||||
|
case 'Device':
|
||||||
|
item.tag = '!' + item.Id;
|
||||||
|
break;
|
||||||
|
case 'Job':
|
||||||
|
item.tag = '#' + item.Id;
|
||||||
|
break;
|
||||||
|
case 'User':
|
||||||
|
item.tag = '@' + item.Id;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).autocomplete("widget").attr('id', 'QuickSearchMenu');
|
||||||
|
|
||||||
|
$this.data('ui-autocomplete')._renderItem = function (ul, item) {
|
||||||
|
var template;
|
||||||
|
|
||||||
|
//"<a><strong>" + item.DisplayName + "</strong><br>" + item.Id + " (" + item.Type + ")</a>"
|
||||||
|
|
||||||
|
switch (item.Type) {
|
||||||
|
case 'Device':
|
||||||
|
template = $('<a>').append('<i class="fa fa-desktop fa-fw">').append($('<strong>').text('Device ' + item.Id)).append($('<div>').text(item.ComputerName + '; ' + item.DeviceModelDescription))
|
||||||
|
break;
|
||||||
|
case 'Job':
|
||||||
|
if (item.DeviceSerialNumber && item.UserId) {
|
||||||
|
template = $('<a>').append('<i class="fa fa-question-circle fa-fw">').append($('<strong>').text('Job ' + item.Id)).append($('<div>').text(item.UserId + '; ' + item.DeviceSerialNumber))
|
||||||
|
} else if (item.DeviceSerialNumber) {
|
||||||
|
template = $('<a>').append('<i class="fa fa-question-circle fa-fw">').append($('<strong>').text('Job ' + item.Id)).append($('<div>').text(item.DeviceSerialNumber))
|
||||||
|
} else if (item.UserId) {
|
||||||
|
template = $('<a>').append('<i class="fa fa-question-circle fa-fw">').append($('<strong>').text('Job ' + item.Id)).append($('<div>').text(item.UserId))
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'User':
|
||||||
|
template = $('<a>').append('<i class="fa fa-user fa-fw">').append($('<strong>').text(item.DisplayName)).append($('<div>').text(item.Id))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $("<li>")
|
||||||
|
.data("item.autocomplete", item)
|
||||||
|
.append(template)
|
||||||
|
.appendTo(ul);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
quickSearchInited = true;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Menu Functionality
|
// Menu Functionality
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
window.Modernizr=function(n,t,i){function a(n){c.cssText=n}function vt(n,t){return a(y.join(n+";")+(t||""))}function h(n,t){return typeof n===t}function v(n,t){return!!~(""+n).indexOf(t)}function lt(n,t){var u,r;for(u in n)if(r=n[u],!v(r,"-")&&c[r]!==i)return t=="pfx"?r:!0;return!1}function yt(n,t,r){var f,u;for(f in n)if(u=t[n[f]],u!==i)return r===!1?n[f]:h(u,"function")?u.bind(r||t):u;return!1}function f(n,t,i){var r=n.charAt(0).toUpperCase()+n.slice(1),u=(n+" "+ot.join(r+" ")+r).split(" ");return h(t,"string")||h(t,"undefined")?lt(u,t):(u=(n+" "+st.join(r+" ")+r).split(" "),yt(u,t,i))}function pt(){u.input=function(i){for(var r=0,u=i.length;r<u;r++)w[i[r]]=!!(i[r]in o);return w.list&&(w.list=!!(t.createElement("datalist")&&n.HTMLDataListElement)),w}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" "));u.inputtypes=function(n){for(var u=0,r,f,e,h=n.length;u<h;u++)o.setAttribute("type",f=n[u]),r=o.type!=="text",r&&(o.value=g,o.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&o.style.WebkitAppearance!==i?(s.appendChild(o),e=t.defaultView,r=e.getComputedStyle&&e.getComputedStyle(o,null).WebkitAppearance!=="textfield"&&o.offsetHeight!==0,s.removeChild(o)):/^(search|tel)$/.test(f)||(r=/^(url|email)$/.test(f)?o.checkValidity&&o.checkValidity()===!1:o.value!=g)),ht[n[u]]=!!r;return ht}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var u={},d=!0,s=t.documentElement,e="modernizr",ut=t.createElement(e),c=ut.style,o=t.createElement("input"),g=":)",ft={}.toString,y=" -webkit- -moz- -o- -ms- ".split(" "),et="Webkit Moz O ms",ot=et.split(" "),st=et.toLowerCase().split(" "),p={svg:"http://www.w3.org/2000/svg"},r={},ht={},w={},nt=[],tt=nt.slice,b,l=function(n,i,r,u){var l,a,c,v,f=t.createElement("div"),h=t.body,o=h||t.createElement("body");if(parseInt(r,10))while(r--)c=t.createElement("div"),c.id=u?u[r]:e+(r+1),f.appendChild(c);return l=["­",'<style id="s',e,'">',n,"<\/style>"].join(""),f.id=e,(h?f:o).innerHTML+=l,o.appendChild(f),h||(o.style.background="",o.style.overflow="hidden",v=s.style.overflow,s.style.overflow="hidden",s.appendChild(o)),a=i(f,n),h?f.parentNode.removeChild(f):(o.parentNode.removeChild(o),s.style.overflow=v),!!a},at=function(t){var i=n.matchMedia||n.msMatchMedia,r;return i?i(t).matches:(l("@media "+t+" { #"+e+" { position: absolute; } }",function(t){r=(n.getComputedStyle?getComputedStyle(t,null):t.currentStyle).position=="absolute"}),r)},ct=function(){function r(r,u){u=u||t.createElement(n[r]||"div");r="on"+r;var f=r in u;return f||(u.setAttribute||(u=t.createElement("div")),u.setAttribute&&u.removeAttribute&&(u.setAttribute(r,""),f=h(u[r],"function"),h(u[r],"undefined")||(u[r]=i),u.removeAttribute(r))),u=null,f}var n={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return r}(),it={}.hasOwnProperty,rt,k;rt=h(it,"undefined")||h(it.call,"undefined")?function(n,t){return t in n&&h(n.constructor.prototype[t],"undefined")}:function(n,t){return it.call(n,t)};Function.prototype.bind||(Function.prototype.bind=function(n){var t=this,i,r;if(typeof t!="function")throw new TypeError;return i=tt.call(arguments,1),r=function(){var f,e,u;return this instanceof r?(f=function(){},f.prototype=t.prototype,e=new f,u=t.apply(e,i.concat(tt.call(arguments))),Object(u)===u)?u:e:t.apply(n,i.concat(tt.call(arguments)))},r});r.flexbox=function(){return f("flexWrap")};r.flexboxlegacy=function(){return f("boxDirection")};r.canvas=function(){var n=t.createElement("canvas");return!!(n.getContext&&n.getContext("2d"))};r.canvastext=function(){return!!(u.canvas&&h(t.createElement("canvas").getContext("2d").fillText,"function"))};r.webgl=function(){return!!n.WebGLRenderingContext};r.touch=function(){var i;return"ontouchstart"in n||n.DocumentTouch&&t instanceof DocumentTouch?i=!0:l(["@media (",y.join("touch-enabled),("),e,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(n){i=n.offsetTop===9}),i};r.geolocation=function(){return"geolocation"in navigator};r.postmessage=function(){return!!n.postMessage};r.websqldatabase=function(){return!!n.openDatabase};r.indexedDB=function(){return!!f("indexedDB",n)};r.hashchange=function(){return ct("hashchange",n)&&(t.documentMode===i||t.documentMode>7)};r.history=function(){return!!(n.history&&history.pushState)};r.draganddrop=function(){var n=t.createElement("div");return"draggable"in n||"ondragstart"in n&&"ondrop"in n};r.websockets=function(){return"WebSocket"in n||"MozWebSocket"in n};r.rgba=function(){return a("background-color:rgba(150,255,150,.5)"),v(c.backgroundColor,"rgba")};r.hsla=function(){return a("background-color:hsla(120,40%,100%,.5)"),v(c.backgroundColor,"rgba")||v(c.backgroundColor,"hsla")};r.multiplebgs=function(){return a("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(c.background)};r.backgroundsize=function(){return f("backgroundSize")};r.borderimage=function(){retuLine truncated
|
window.Modernizr=function(n,t,i){function a(n){c.cssText=n}function vt(n,t){return a(y.join(n+";")+(t||""))}function h(n,t){return typeof n===t}function v(n,t){return!!~(""+n).indexOf(t)}function lt(n,t){var u,r;for(u in n)if(r=n[u],!v(r,"-")&&c[r]!==i)return t=="pfx"?r:!0;return!1}function yt(n,t,r){var f,u;for(f in n)if(u=t[n[f]],u!==i)return r===!1?n[f]:h(u,"function")?u.bind(r||t):u;return!1}function f(n,t,i){var r=n.charAt(0).toUpperCase()+n.slice(1),u=(n+" "+ot.join(r+" ")+r).split(" ");return h(t,"string")||h(t,"undefined")?lt(u,t):(u=(n+" "+st.join(r+" ")+r).split(" "),yt(u,t,i))}function pt(){u.input=function(i){for(var r=0,u=i.length;r<u;r++)w[i[r]]=!!(i[r]in o);return w.list&&(w.list=!!(t.createElement("datalist")&&n.HTMLDataListElement)),w}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" "));u.inputtypes=function(n){for(var u=0,r,f,e,h=n.length;u<h;u++)o.setAttribute("type",f=n[u]),r=o.type!=="text",r&&(o.value=g,o.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&o.style.WebkitAppearance!==i?(s.appendChild(o),e=t.defaultView,r=e.getComputedStyle&&e.getComputedStyle(o,null).WebkitAppearance!=="textfield"&&o.offsetHeight!==0,s.removeChild(o)):/^(search|tel)$/.test(f)||(r=/^(url|email)$/.test(f)?o.checkValidity&&o.checkValidity()===!1:o.value!=g)),ht[n[u]]=!!r;return ht}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var u={},d=!0,s=t.documentElement,e="modernizr",ut=t.createElement(e),c=ut.style,o=t.createElement("input"),g=":)",ft={}.toString,y=" -webkit- -moz- -o- -ms- ".split(" "),et="Webkit Moz O ms",ot=et.split(" "),st=et.toLowerCase().split(" "),p={svg:"http://www.w3.org/2000/svg"},r={},ht={},w={},nt=[],tt=nt.slice,b,l=function(n,i,r,u){var l,a,c,v,f=t.createElement("div"),h=t.body,o=h||t.createElement("body");if(parseInt(r,10))while(r--)c=t.createElement("div"),c.id=u?u[r]:e+(r+1),f.appendChild(c);return l=["­",'<style id="s',e,'">',n,"<\/style>"].join(""),f.id=e,(h?f:o).innerHTML+=l,o.appendChild(f),h||(o.style.background="",o.style.overflow="hidden",v=s.style.overflow,s.style.overflow="hidden",s.appendChild(o)),a=i(f,n),h?f.parentNode.removeChild(f):(o.parentNode.removeChild(o),s.style.overflow=v),!!a},at=function(t){var i=n.matchMedia||n.msMatchMedia,r;return i?i(t).matches:(l("@media "+t+" { #"+e+" { position: absolute; } }",function(t){r=(n.getComputedStyle?getComputedStyle(t,null):t.currentStyle).position=="absolute"}),r)},ct=function(){function r(r,u){u=u||t.createElement(n[r]||"div");r="on"+r;var f=r in u;return f||(u.setAttribute||(u=t.createElement("div")),u.setAttribute&&u.removeAttribute&&(u.setAttribute(r,""),f=h(u[r],"function"),h(u[r],"undefined")||(u[r]=i),u.removeAttribute(r))),u=null,f}var n={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return r}(),it={}.hasOwnProperty,rt,k;rt=h(it,"undefined")||h(it.call,"undefined")?function(n,t){return t in n&&h(n.constructor.prototype[t],"undefined")}:function(n,t){return it.call(n,t)};Function.prototype.bind||(Function.prototype.bind=function(n){var t=this,i,r;if(typeof t!="function")throw new TypeError;return i=tt.call(arguments,1),r=function(){var f,e,u;return this instanceof r?(f=function(){},f.prototype=t.prototype,e=new f,u=t.apply(e,i.concat(tt.call(arguments))),Object(u)===u)?u:e:t.apply(n,i.concat(tt.call(arguments)))},r});r.flexbox=function(){return f("flexWrap")};r.flexboxlegacy=function(){return f("boxDirection")};r.canvas=function(){var n=t.createElement("canvas");return!!(n.getContext&&n.getContext("2d"))};r.canvastext=function(){return!!(u.canvas&&h(t.createElement("canvas").getContext("2d").fillText,"function"))};r.webgl=function(){return!!n.WebGLRenderingContext};r.touch=function(){var i;return"ontouchstart"in n||n.DocumentTouch&&t instanceof DocumentTouch?i=!0:l(["@media (",y.join("touch-enabled),("),e,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(n){i=n.offsetTop===9}),i};r.geolocation=function(){return"geolocation"in navigator};r.postmessage=function(){return!!n.postMessage};r.websqldatabase=function(){return!!n.openDatabase};r.indexedDB=function(){return!!f("indexedDB",n)};r.hashchange=function(){return ct("hashchange",n)&&(t.documentMode===i||t.documentMode>7)};r.history=function(){return!!(n.history&&history.pushState)};r.draganddrop=function(){var n=t.createElement("div");return"draggable"in n||"ondragstart"in n&&"ondrop"in n};r.websockets=function(){return"WebSocket"in n||"MozWebSocket"in n};r.rgba=function(){return a("background-color:rgba(150,255,150,.5)"),v(c.backgroundColor,"rgba")};r.hsla=function(){return a("background-color:hsla(120,40%,100%,.5)"),v(c.backgroundColor,"rgba")||v(c.backgroundColor,"hsla")};r.multiplebgs=function(){return a("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(c.background)};r.backgroundsize=function(){return f("backgroundSize")};r.borderimage=function(){retuLine truncated
|
||||||
/*
|
/*
|
||||||
//# sourceMappingURL=Core.min.js.map
|
//# sourceMappingURL=Core.min.js.map
|
||||||
*/
|
*/
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"version":3,
|
"version":3,
|
||||||
"file":"Core.min.js",
|
"file":"Core.min.js",
|
||||||
"lineCount":1,
|
"lineCount":1,
|
||||||
"mappings":"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 truncated
|
"mappings":"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 truncated
|
||||||
"sources":["/ClientSource/Scripts/Core/jquery.dataTables.js","/ClientSource/Scripts/Core/modernizr-2.6.2.js","/ClientSource/Scripts/Core/jquery-2.0.3.js","/ClientSource/Scripts/Core/jquery.validate.js","/ClientSource/Scripts/Core/jquery.validate.unobtrusive.js","/ClientSource/Scripts/Core/disco.unobtrusiveValidation.extensions.js","/ClientSource/Scripts/Core/jquery-ui-1.10.3.js","/ClientSource/Scripts/Core/jquery.watermark.js","/ClientSource/Scripts/Core/moment.js","/ClientSource/Scripts/Core/moment.en-au.js","/ClientSource/Scripts/Core/disco.moment.extensions.js","/ClientSource/Scripts/Core/disco.dataTables.extensions.js","/ClientSource/Scripts/Core/disco.uicore.js"],
|
"sources":["/ClientSource/Scripts/Core/jquery.dataTables.js","/ClientSource/Scripts/Core/modernizr-2.6.2.js","/ClientSource/Scripts/Core/jquery-2.0.3.js","/ClientSource/Scripts/Core/jquery.validate.js","/ClientSource/Scripts/Core/jquery.validate.unobtrusive.js","/ClientSource/Scripts/Core/disco.unobtrusiveValidation.extensions.js","/ClientSource/Scripts/Core/jquery-ui-1.10.3.js","/ClientSource/Scripts/Core/jquery.watermark.js","/ClientSource/Scripts/Core/moment.js","/ClientSource/Scripts/Core/moment.en-au.js","/ClientSource/Scripts/Core/disco.moment.extensions.js","/ClientSource/Scripts/Core/disco.dataTables.extensions.js","/ClientSource/Scripts/Core/disco.uicore.js"],
|
||||||
"names":["join","window","Modernizr","document","undefined","setCss","str","mStyle","cssText","setCssAll","str1","str2","prefixes","is","obj","type","contains","substr","indexOf","testProps","props","prefixed","i","prop","testDOMProps","elem","item","bind","testPropsAll","ucProp","charAt","toUpperCase","slice","cssomPrefixes","split","domPrefixes","webforms","input","len","length","attrs","inputElem","list","createElement","HTMLDataListElement","inputtypes","bool","inputElemType","defaultView","setAttribute","value","smile","style","test","WebkitAppearance","docElement","appendChild","getComputedStyle","offsetHeight","removeChild","checkValidity","inputs","enableClasses","documentElement","mod","modElem","toString","omPrefixes","toLowerCase","ns","tests","classes","featureName","injectElementWithStyles","rule","callback","nodes","testnames","ret","node","docOverflow","div","body","fakeBody","parseInt","id","innerHTML","background","overflow","parentNode","testMediaQuery","mq","matchMedia","msMatchMedia","matches","currentStyle","position","isEventSupported","eventName","element","TAGNAMES","isSupported","removeAttribute","_hasOwnProperty","hasOwnProperty","hasOwnProp","feature","call","object","property","constructor","prototype","Function","Function.prototype.bind","that","target","args","bound","TypeError","arguments","F","self","result","apply","concat","Object","flexbox","tests.flexbox","flexboxlegacy","tests.flexboxlegacy","canvas","tests.canvas","getContext","canvastext","tests.canvastext","fillText","webgl","tests.webgl","WebGLRenderingContext","touch","tests.touch","DocumentTouch","offsetTop","geolocation","tests.geolocation","navigator","postmessage","tests.postmessage","postMessage","websqldatabase","tests.websqldatabase","openDatabase","indexedDB","tests.indexedDB","hashchange","tests.hashchange","documentMode","history","tests.history","pushState","draganddrop","tests.draganddrop","websockets","tests.websockets","rgba","tests.rgba","backgroundColor","hsla","tests.hsla","multiplebgs","tests.multiplebgs","backgroundsize","tests.backgroundsize","borderimage","tests.borderimage","borderradius","tests.borderradius","boxshadow","tests.boxshadow","textshadow","tests.textshadow","textShadow","opacity","tests.opacity","cssanimations","tests.cssanimations","csscolumns","tests.csscolumns","cssgradients","tests.cssgradients","backgroundImage","cssreflections","tests.cssreflections","csstransforms","tests.csstransforms","csstransforms3d","tests.csstransforms3d","offsetLeft","csstransitions","tests.csstransitions","fontface","tests.fontface","getElementById","sheet","styleSheet","cssRules","generatedcontent","tests.generatedcontent","video","tests.video","canPlayType","Boolean","ogg","replace","h264","webm","e","audio","tests.audio","mp3","wav","m4a","localstorage","tests.localstorage","localStorage","setItem","removeItem","sessionstorage","tests.sessionstorage","sessionStorage","webworkers","tests.webworkers","Worker","applicationcache","tests.applicationcache","applicationCache","svg","tests.svg","createElementNS","createSVGRect","inlinesvg","tests.inlinesvg","firstChild","namespaceURI","smil","tests.smil","svgclippaths","tests.svgclippaths","push","addTest","Modernizr.addTest","key","className","addStyleSheet","ownerDocument","p","parent","getElementsByTagName","insertBefore","lastChild","getElements","elements","html5","getExpandoData","data","expandoData","expando","expanID","nodeName","supportsUnknownElements","cache","cloneNode","saveClones","createElem","canHaveChildren","reSkip","frag","createDocumentFragment","clone","elems","l","shivMethods","createFrag","ownerDocument.createElement","shivDocument","shivCSS","supportsHtml5Styles","hasCSS","options","a","childNodes","_version","_prefixes","_domPrefixes","_cssomPrefixes","hasEvent","testProp","Modernizr.testProp","testAllProps","testStyles","Modernizr.prefixed","isArraylike","jQuery","isWindow","nodeType","createOptions","optionsCache","each","match","core_rnotwhite","_","flag","Data","defineProperty","get","Math","random","dataAttr","name","rmultiDash","getAttribute","rbrace","JSON","parse","data_user","set","returnTrue","returnFalse","safeActiveElement","activeElement","err","sibling","cur","dir","winnow","qualifier","not","isFunction","grep","isSimple","filter","core_indexOf","manipulationTarget","content","disableScript","restoreScript","rscriptTypeMasked","exec","setGlobalEval","refElements","data_priv","cloneCopyEvent","src","dest","pdataOld","pdataCur","udataOld","udataCur","events","hasData","access","handle","event","add","extend","getAll","context","tag","querySelectorAll","merge","fixInput","manipulation_rcheckableType","checked","defaultValue","vendorPropName","capName","origName","cssPrefixes","isHidden","el","css","getStyles","showHide","show","display","hidden","values","index","css_defaultDisplay","setPositiveNumber","subtract","rnumsplit","max","augmentWidthOrHeight","extra","isBorderBox","styles","val","cssExpand","getWidthOrHeightLine truncated
|
"names":["join","window","Modernizr","document","undefined","setCss","str","mStyle","cssText","setCssAll","str1","str2","prefixes","is","obj","type","contains","substr","indexOf","testProps","props","prefixed","i","prop","testDOMProps","elem","item","bind","testPropsAll","ucProp","charAt","toUpperCase","slice","cssomPrefixes","split","domPrefixes","webforms","input","len","length","attrs","inputElem","list","createElement","HTMLDataListElement","inputtypes","bool","inputElemType","defaultView","setAttribute","value","smile","style","test","WebkitAppearance","docElement","appendChild","getComputedStyle","offsetHeight","removeChild","checkValidity","inputs","enableClasses","documentElement","mod","modElem","toString","omPrefixes","toLowerCase","ns","tests","classes","featureName","injectElementWithStyles","rule","callback","nodes","testnames","ret","node","docOverflow","div","body","fakeBody","parseInt","id","innerHTML","background","overflow","parentNode","testMediaQuery","mq","matchMedia","msMatchMedia","matches","currentStyle","position","isEventSupported","eventName","element","TAGNAMES","isSupported","removeAttribute","_hasOwnProperty","hasOwnProperty","hasOwnProp","feature","call","object","property","constructor","prototype","Function","Function.prototype.bind","that","target","args","bound","TypeError","arguments","F","self","result","apply","concat","Object","flexbox","tests.flexbox","flexboxlegacy","tests.flexboxlegacy","canvas","tests.canvas","getContext","canvastext","tests.canvastext","fillText","webgl","tests.webgl","WebGLRenderingContext","touch","tests.touch","DocumentTouch","offsetTop","geolocation","tests.geolocation","navigator","postmessage","tests.postmessage","postMessage","websqldatabase","tests.websqldatabase","openDatabase","indexedDB","tests.indexedDB","hashchange","tests.hashchange","documentMode","history","tests.history","pushState","draganddrop","tests.draganddrop","websockets","tests.websockets","rgba","tests.rgba","backgroundColor","hsla","tests.hsla","multiplebgs","tests.multiplebgs","backgroundsize","tests.backgroundsize","borderimage","tests.borderimage","borderradius","tests.borderradius","boxshadow","tests.boxshadow","textshadow","tests.textshadow","textShadow","opacity","tests.opacity","cssanimations","tests.cssanimations","csscolumns","tests.csscolumns","cssgradients","tests.cssgradients","backgroundImage","cssreflections","tests.cssreflections","csstransforms","tests.csstransforms","csstransforms3d","tests.csstransforms3d","offsetLeft","csstransitions","tests.csstransitions","fontface","tests.fontface","getElementById","sheet","styleSheet","cssRules","generatedcontent","tests.generatedcontent","video","tests.video","canPlayType","Boolean","ogg","replace","h264","webm","e","audio","tests.audio","mp3","wav","m4a","localstorage","tests.localstorage","localStorage","setItem","removeItem","sessionstorage","tests.sessionstorage","sessionStorage","webworkers","tests.webworkers","Worker","applicationcache","tests.applicationcache","applicationCache","svg","tests.svg","createElementNS","createSVGRect","inlinesvg","tests.inlinesvg","firstChild","namespaceURI","smil","tests.smil","svgclippaths","tests.svgclippaths","push","addTest","Modernizr.addTest","key","className","addStyleSheet","ownerDocument","p","parent","getElementsByTagName","insertBefore","lastChild","getElements","elements","html5","getExpandoData","data","expandoData","expando","expanID","nodeName","supportsUnknownElements","cache","cloneNode","saveClones","createElem","canHaveChildren","reSkip","frag","createDocumentFragment","clone","elems","l","shivMethods","createFrag","ownerDocument.createElement","shivDocument","shivCSS","supportsHtml5Styles","hasCSS","options","a","childNodes","_version","_prefixes","_domPrefixes","_cssomPrefixes","hasEvent","testProp","Modernizr.testProp","testAllProps","testStyles","Modernizr.prefixed","isArraylike","jQuery","isWindow","nodeType","createOptions","optionsCache","each","match","core_rnotwhite","_","flag","Data","defineProperty","get","Math","random","dataAttr","name","rmultiDash","getAttribute","rbrace","JSON","parse","data_user","set","returnTrue","returnFalse","safeActiveElement","activeElement","err","sibling","cur","dir","winnow","qualifier","not","isFunction","grep","isSimple","filter","core_indexOf","manipulationTarget","content","disableScript","restoreScript","rscriptTypeMasked","exec","setGlobalEval","refElements","data_priv","cloneCopyEvent","src","dest","pdataOld","pdataCur","udataOld","udataCur","events","hasData","access","handle","event","add","extend","getAll","context","tag","querySelectorAll","merge","fixInput","manipulation_rcheckableType","checked","defaultValue","vendorPropName","capName","origName","cssPrefixes","isHidden","el","css","getStyles","showHide","show","display","hidden","values","index","css_defaultDisplay","setPositiveNumber","subtract","rnumsplit","max","augmentWidthOrHeight","extra","isBorderBox","styles","val","cssExpand","getWidthOrHeightLine truncated
|
||||||
}
|
}
|
||||||
@@ -4,13 +4,76 @@
|
|||||||
$(function () {
|
$(function () {
|
||||||
|
|
||||||
// Search Functionality
|
// Search Functionality
|
||||||
|
var quickSearchInited = false;
|
||||||
$('#SearchQuery').watermark('Search').keypress(function (e) {
|
$('#SearchQuery').watermark('Search').keypress(function (e) {
|
||||||
if (e.keyCode == 13) {
|
if (e.keyCode == 13) {
|
||||||
$(this).closest('form').submit();
|
$(this).closest('form').submit();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}).focus(function () {
|
}).focus(function () {
|
||||||
$(this).select();
|
$this = $(this);
|
||||||
|
$this.select();
|
||||||
|
|
||||||
|
if (!quickSearchInited) {
|
||||||
|
var quickSearchUrl = $this.attr('data-quicksearchurl');
|
||||||
|
if (quickSearchUrl) {
|
||||||
|
$this.autocomplete({
|
||||||
|
source: quickSearchUrl,
|
||||||
|
minLength: 2,
|
||||||
|
select: function (e, ui) {
|
||||||
|
$this.val(ui.item.tag);
|
||||||
|
$this.closest('form').submit();
|
||||||
|
},
|
||||||
|
response: function (e, ui) {
|
||||||
|
for (var i = 0; i < ui.content.length; i++) {
|
||||||
|
var item = ui.content[i];
|
||||||
|
switch (item.Type) {
|
||||||
|
case 'Device':
|
||||||
|
item.tag = '!' + item.Id;
|
||||||
|
break;
|
||||||
|
case 'Job':
|
||||||
|
item.tag = '#' + item.Id;
|
||||||
|
break;
|
||||||
|
case 'User':
|
||||||
|
item.tag = '@' + item.Id;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).autocomplete("widget").attr('id', 'QuickSearchMenu');
|
||||||
|
|
||||||
|
$this.data('ui-autocomplete')._renderItem = function (ul, item) {
|
||||||
|
var template;
|
||||||
|
|
||||||
|
//"<a><strong>" + item.DisplayName + "</strong><br>" + item.Id + " (" + item.Type + ")</a>"
|
||||||
|
|
||||||
|
switch (item.Type) {
|
||||||
|
case 'Device':
|
||||||
|
template = $('<a>').append('<i class="fa fa-desktop fa-fw">').append($('<strong>').text('Device ' + item.Id)).append($('<div>').text(item.ComputerName + '; ' + item.DeviceModelDescription))
|
||||||
|
break;
|
||||||
|
case 'Job':
|
||||||
|
if (item.DeviceSerialNumber && item.UserId) {
|
||||||
|
template = $('<a>').append('<i class="fa fa-question-circle fa-fw">').append($('<strong>').text('Job ' + item.Id)).append($('<div>').text(item.UserId + '; ' + item.DeviceSerialNumber))
|
||||||
|
} else if (item.DeviceSerialNumber) {
|
||||||
|
template = $('<a>').append('<i class="fa fa-question-circle fa-fw">').append($('<strong>').text('Job ' + item.Id)).append($('<div>').text(item.DeviceSerialNumber))
|
||||||
|
} else if (item.UserId) {
|
||||||
|
template = $('<a>').append('<i class="fa fa-question-circle fa-fw">').append($('<strong>').text('Job ' + item.Id)).append($('<div>').text(item.UserId))
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'User':
|
||||||
|
template = $('<a>').append('<i class="fa fa-user fa-fw">').append($('<strong>').text(item.DisplayName)).append($('<div>').text(item.Id))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $("<li>")
|
||||||
|
.data("item.autocomplete", item)
|
||||||
|
.append(template)
|
||||||
|
.appendTo(ul);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
quickSearchInited = true;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Menu Functionality
|
// Menu Functionality
|
||||||
|
|||||||
@@ -3492,6 +3492,25 @@ header .watermark,
|
|||||||
#header .watermark {
|
#header .watermark {
|
||||||
background-color: #888;
|
background-color: #888;
|
||||||
}
|
}
|
||||||
|
#QuickSearchMenu {
|
||||||
|
max-height: 400px;
|
||||||
|
font-size: .9em;
|
||||||
|
background: none;
|
||||||
|
background-color: #fafafa;
|
||||||
|
}
|
||||||
|
#QuickSearchMenu li:not(:last-child) {
|
||||||
|
border-bottom: 1px solid #d8d8d8;
|
||||||
|
}
|
||||||
|
#QuickSearchMenu li > a {
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
#QuickSearchMenu li > a > i {
|
||||||
|
margin-right: 2px;
|
||||||
|
}
|
||||||
|
#QuickSearchMenu li > a > div {
|
||||||
|
padding-left: 1.2857142857142858em;
|
||||||
|
margin-left: 2px;
|
||||||
|
}
|
||||||
#layout_PageHeading {
|
#layout_PageHeading {
|
||||||
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) /*Images/BackgroundPage.png*/ left top repeat-x #ffffff;
|
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) /*Images/BackgroundPage.png*/ left top repeat-x #ffffff;
|
||||||
background: linear-gradient(to bottom, #f2f2f2 0px, #ffffff 50px) #ffffff;
|
background: linear-gradient(to bottom, #f2f2f2 0px, #ffffff 50px) #ffffff;
|
||||||
@@ -4509,7 +4528,6 @@ input:-moz-placeholder {
|
|||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
/* add padding to account for vertical scrollbar */
|
/* add padding to account for vertical scrollbar */
|
||||||
|
|
||||||
padding-right: 20px;
|
|
||||||
}
|
}
|
||||||
/* IE 6 doesn't support max-height
|
/* IE 6 doesn't support max-height
|
||||||
* we use height instead, but this forces the menu to always be this tall
|
* we use height instead, but this forces the menu to always be this tall
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:transparent}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"“" "”" "‘" "’"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:alpha(opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{paddiLine truncated
|
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:transparent}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"“" "”" "‘" "’"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:alpha(opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{paddiLine truncated
|
||||||
@@ -291,6 +291,25 @@ header .watermark,
|
|||||||
#header .watermark {
|
#header .watermark {
|
||||||
background-color: #888;
|
background-color: #888;
|
||||||
}
|
}
|
||||||
|
#QuickSearchMenu {
|
||||||
|
max-height: 400px;
|
||||||
|
font-size: .9em;
|
||||||
|
background: none;
|
||||||
|
background-color: #fafafa;
|
||||||
|
}
|
||||||
|
#QuickSearchMenu li:not(:last-child) {
|
||||||
|
border-bottom: 1px solid #d8d8d8;
|
||||||
|
}
|
||||||
|
#QuickSearchMenu li > a {
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
#QuickSearchMenu li > a > i {
|
||||||
|
margin-right: 2px;
|
||||||
|
}
|
||||||
|
#QuickSearchMenu li > a > div {
|
||||||
|
padding-left: 1.2857142857142858em;
|
||||||
|
margin-left: 2px;
|
||||||
|
}
|
||||||
#layout_PageHeading {
|
#layout_PageHeading {
|
||||||
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) /*Images/BackgroundPage.png*/ left top repeat-x #ffffff;
|
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) /*Images/BackgroundPage.png*/ left top repeat-x #ffffff;
|
||||||
background: linear-gradient(to bottom, #f2f2f2 0px, #ffffff 50px) #ffffff;
|
background: linear-gradient(to bottom, #f2f2f2 0px, #ffffff 50px) #ffffff;
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ header, #header {
|
|||||||
&:first-child {
|
&:first-child {
|
||||||
border-top: 1px solid @BackgroundColour;
|
border-top: 1px solid @BackgroundColour;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
border-bottom: 1px solid @BackgroundColour;
|
border-bottom: 1px solid @BackgroundColour;
|
||||||
}
|
}
|
||||||
@@ -215,6 +216,31 @@ header, #header {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#QuickSearchMenu {
|
||||||
|
max-height: 400px;
|
||||||
|
font-size: .9em;
|
||||||
|
background: none;
|
||||||
|
background-color: @BackgroundColourLight;
|
||||||
|
|
||||||
|
li {
|
||||||
|
&:not(:last-child) {
|
||||||
|
border-bottom: 1px solid @TableDataDarkBorderColour;
|
||||||
|
}
|
||||||
|
|
||||||
|
& > a {
|
||||||
|
padding: 2px;
|
||||||
|
& > i {
|
||||||
|
margin-right: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
& > div {
|
||||||
|
padding-left: 1.2857142857142858em;
|
||||||
|
margin-left: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#layout_PageHeading {
|
#layout_PageHeading {
|
||||||
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) /*Images/BackgroundPage.png*/ left top repeat-x @white;
|
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) /*Images/BackgroundPage.png*/ left top repeat-x @white;
|
||||||
background: linear-gradient(to bottom, @BackgroundColourGradient 0px, @white 50px) @white;
|
background: linear-gradient(to bottom, @BackgroundColourGradient 0px, @white 50px) @white;
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
.tableData{border:solid 1px #f4f4f4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}.tableData>tbody>tr:hover>td{background-color:#fefefe}.tableData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}body{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;margin:0;padding:0;color:#333}body.layout{background:url(data:image/png;base64,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) left top repeat-x #d1d1d1;background:linear-gradient(to bottom,#f2f2f2 0,#d1d1d1 370px) left top repeat-x #d1d1d1;min-height:370px}.page{max-width:1232px;min-width:768px;margin-left:auto;margin-right:auto}header,#header{position:relative;background-color:#333;margin:0;padding:0;height:34px}header #heading,#header #heading{float:left;height:34px}header #heading i,#header #headiLine truncated
|
.tableData{border:solid 1px #f4f4f4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}.tableData>tbody>tr:hover>td{background-color:#fefefe}.tableData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}body{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;margin:0;padding:0;color:#333}body.layout{background:url(data:image/png;base64,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) left top repeat-x #d1d1d1;background:linear-gradient(to bottom,#f2f2f2 0,#d1d1d1 370px) left top repeat-x #d1d1d1;min-height:370px}.page{max-width:1232px;min-width:768px;margin-left:auto;margin-right:auto}header,#header{position:relative;background-color:#333;margin:0;padding:0;height:34px}header #heading,#header #heading{float:left;height:34px}header #heading i,#header #headiLine truncated
|
||||||
@@ -106,7 +106,6 @@ input:-moz-placeholder {
|
|||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
/* add padding to account for vertical scrollbar */
|
/* add padding to account for vertical scrollbar */
|
||||||
|
|
||||||
padding-right: 20px;
|
|
||||||
}
|
}
|
||||||
/* IE 6 doesn't support max-height
|
/* IE 6 doesn't support max-height
|
||||||
* we use height instead, but this forces the menu to always be this tall
|
* we use height instead, but this forces the menu to always be this tall
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ input:-moz-placeholder {
|
|||||||
/* prevent horizontal scrollbar */
|
/* prevent horizontal scrollbar */
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
/* add padding to account for vertical scrollbar */
|
/* add padding to account for vertical scrollbar */
|
||||||
padding-right: 20px;
|
//padding-right: 20px;
|
||||||
}
|
}
|
||||||
/* IE 6 doesn't support max-height
|
/* IE 6 doesn't support max-height
|
||||||
* we use height instead, but this forces the menu to always be this tall
|
* we use height instead, but this forces the menu to always be this tall
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
.tableData{border:solid 1px #f4f4f4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}.tableData>tbody>tr:hover>td{background-color:#fefefe}.tableData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}.watermark{color:#888!important}::-webkit-input-placeholder{color:#888}::-moz-placeholder{color:#888}:-ms-input-placeholder{color:#888}input:-moz-placeholder{color:#888}.ui-autocomplete-loading{background:#fff url(data:image/gif;base64,R0lGODlhEAALAPQAAP///zNah+Hm7dng6O7x9DddiTNah1d3nJqtw3+Xs8fS3k5vlm6JqaGzx4KatcrU4FFymDZciHGMq+ru8t/l7Pb3+V9+oeLo7vT2+MTP3LLB0dTc5fHz9gAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA) right center no-repeat}.ui-autocomplete{max-height:150px;overflow-y:auto;overflow-x:hidden;padding-right:20px}* html .ui-autocomplete{height:150px}.ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:0 10px 10px 45%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:none;border:none;margin:0;padding:0}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 45% 10px 10px}@-moz-keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}@-webkit-keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}@keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}.ui-progressbar-value{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAYCAYAAAC8/X7cAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QwYAwcRFZ4/TAAAAmtJREFUWMO1l+lu2kAQx/+WlqMYCGmMzRGwcUhoVbWq1Ifq2+RF+hJ9hVRpohLuCB9AwAaqfqiPfjBEhtrcO5/wrGf2N4eXWeb223cXlCSeyUHIJGi5hzqagPny9ZZKAOfyZ9TyaWrw940u5noXJB4lJ3eeqXzCtUAP/qHZgzXpIx4lILFIcACuCzBM+HOY7kz6iGs+uRHABcAcCP/YUWAZCpbcJBZWgaDGYjbs7gJp8QOqC/igBACezr+2/nv5TtBavavCmvQ9+IWexMhqAMsNwiQICgDSpRpknl7bPPU0WIYCf8u77qYK7CHp4g2kbIoafLM/hGWqCGIl8chxAaQKVZQ5evBtdQTbUBDGeVQFkvkrlC9YavAdbQw7JPOvAUQPrADLlVDm6WW+q49hmRq28R3UQgmuiEvujBr882ACZzrALmx7t9Cb8xyK2Qw1+P7QgDMfYlcu0lZfdm+brAg5EoNm/DnZH5NfWsoLfg+7e9kQy3Z2g+dFiLm3sB06s19LHWOut/e22ykAlhch5S9gu3Tgm8oYc611kO3WAJKCBLnAwaGV+cEMZr9xsP3GAJK5CuQCR61tmoMZzN7jUT6I7QQHwAoVXBWzsCldd5r6FGbv4Wg/gRVgs2VUL3lqmW9o5kngvQrYzsoxmOBF3IgF2I77Oj2HTdOuTxc6va6tP+kzTDv3/9mE7YUtvlcqwAoSagt4GlLXZzDbP07qk/y1be+D5UXUpAK1o7KuTTFp3Z3cL7FsBylBwju5dNRRuV5+v+6XOoXRvltcQlwwDBNwhfX029b9z94wx5Xw/kj4jRfw5xHM3k9qs9M/9mQP+uNoCX0AAAAASUVORK5CYII=);background-position:0 0;-moz-animation:progressBarKeyframes 2s linear infinite;-o-animation:progressBarKeyframes 2s linear infinite;-webkit-animation:progressBarKeyframes 2s linear infinite;animation:progressBarKeyframes 2s linear infinite;-moz-transition-property:width;-o-transition-property:width;-webkit-transition-property:width;transition-property:width;-moz-transition-duration:.1s;-o-transition-durationLine truncated
|
.tableData{border:solid 1px #f4f4f4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}.tableData>tbody>tr:hover>td{background-color:#fefefe}.tableData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}.watermark{color:#888!important}::-webkit-input-placeholder{color:#888}::-moz-placeholder{color:#888}:-ms-input-placeholder{color:#888}input:-moz-placeholder{color:#888}.ui-autocomplete-loading{background:#fff url(data:image/gif;base64,R0lGODlhEAALAPQAAP///zNah+Hm7dng6O7x9DddiTNah1d3nJqtw3+Xs8fS3k5vlm6JqaGzx4KatcrU4FFymDZciHGMq+ru8t/l7Pb3+V9+oeLo7vT2+MTP3LLB0dTc5fHz9gAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA) right center no-repeat}.ui-autocomplete{max-height:150px;overflow-y:auto;overflow-x:hidden}* html .ui-autocomplete{height:150px}.ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:0 10px 10px 45%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:none;border:none;margin:0;padding:0}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 45% 10px 10px}@-moz-keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}@-webkit-keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}@keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}.ui-progressbar-value{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAYCAYAAAC8/X7cAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QwYAwcRFZ4/TAAAAmtJREFUWMO1l+lu2kAQx/+WlqMYCGmMzRGwcUhoVbWq1Ifq2+RF+hJ9hVRpohLuCB9AwAaqfqiPfjBEhtrcO5/wrGf2N4eXWeb223cXlCSeyUHIJGi5hzqagPny9ZZKAOfyZ9TyaWrw940u5noXJB4lJ3eeqXzCtUAP/qHZgzXpIx4lILFIcACuCzBM+HOY7kz6iGs+uRHABcAcCP/YUWAZCpbcJBZWgaDGYjbs7gJp8QOqC/igBACezr+2/nv5TtBavavCmvQ9+IWexMhqAMsNwiQICgDSpRpknl7bPPU0WIYCf8u77qYK7CHp4g2kbIoafLM/hGWqCGIl8chxAaQKVZQ5evBtdQTbUBDGeVQFkvkrlC9YavAdbQw7JPOvAUQPrADLlVDm6WW+q49hmRq28R3UQgmuiEvujBr882ACZzrALmx7t9Cb8xyK2Qw1+P7QgDMfYlcu0lZfdm+brAg5EoNm/DnZH5NfWsoLfg+7e9kQy3Z2g+dFiLm3sB06s19LHWOut/e22ykAlhch5S9gu3Tgm8oYc611kO3WAJKCBLnAwaGV+cEMZr9xsP3GAJK5CuQCR61tmoMZzN7jUT6I7QQHwAoVXBWzsCldd5r6FGbv4Wg/gRVgs2VUL3lqmW9o5kngvQrYzsoxmOBF3IgF2I77Oj2HTdOuTxc6va6tP+kzTDv3/9mE7YUtvlcqwAoSagt4GlLXZzDbP07qk/y1be+D5UXUpAK1o7KuTTFp3Z3cL7FsBylBwju5dNRRuV5+v+6XOoXRvltcQlwwDBNwhfX029b9z94wx5Xw/kj4jRfw5xHM3k9qs9M/9mQP+uNoCX0AAAAASUVORK5CYII=);background-position:0 0;-moz-animation:progressBarKeyframes 2s linear infinite;-o-animation:progressBarKeyframes 2s linear infinite;-webkit-animation:progressBarKeyframes 2s linear infinite;animation:progressBarKeyframes 2s linear infinite;-moz-transition-property:width;-o-transition-property:width;-webkit-transition-property:width;transition-property:width;-moz-transition-duration:.1s;-o-transition-duration:.1s;-webkit-transiLine truncated
|
||||||
@@ -160,7 +160,7 @@ namespace Disco.Web.Controllers
|
|||||||
HideClosedJobs = true,
|
HideClosedJobs = true,
|
||||||
EnablePaging = false
|
EnablePaging = false
|
||||||
};
|
};
|
||||||
m.Jobs.Fill(Database, BI.JobBI.Searching.BuildJobTableModel(Database).Where(j => j.DeviceSerialNumber == m.Device.SerialNumber).OrderByDescending(j => j.Id), true);
|
m.Jobs.Fill(Database, Disco.Services.Searching.Search.BuildJobTableModel(Database).Where(j => j.DeviceSerialNumber == m.Device.SerialNumber).OrderByDescending(j => j.Id), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Authorization.Has(Claims.Device.ShowCertificates))
|
if (Authorization.Has(Claims.Device.ShowCertificates))
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace Disco.Web.Controllers
|
|||||||
if (Authorization.Has(Claims.Job.Lists.LongRunningJobs))
|
if (Authorization.Has(Claims.Job.Lists.LongRunningJobs))
|
||||||
{
|
{
|
||||||
var longRunningThreshold = DateTime.Today.AddDays(Database.DiscoConfiguration.JobPreferences.LongRunningJobDaysThreshold * -1);
|
var longRunningThreshold = DateTime.Today.AddDays(Database.DiscoConfiguration.JobPreferences.LongRunningJobDaysThreshold * -1);
|
||||||
m.LongRunningJobs = ManagedJobList.OpenJobsTable(q => q.Where(j => j.OpenedDate < longRunningThreshold).OrderBy(j => j.Id));
|
m.LongRunningJobs = ManagedJobList.OpenJobsTable(q => q.Where(j => j.OpenedDate < longRunningThreshold).OrderBy(j => j.JobId));
|
||||||
}
|
}
|
||||||
if (Authorization.Has(Claims.Job.ShowDailyChart))
|
if (Authorization.Has(Claims.Job.ShowDailyChart))
|
||||||
m.DailyOpenedClosedStatistics = Disco.BI.JobBI.Statistics.DailyOpenedClosed.Data(Database, true);
|
m.DailyOpenedClosedStatistics = Disco.BI.JobBI.Statistics.DailyOpenedClosed.Data(Database, true);
|
||||||
@@ -68,7 +68,7 @@ namespace Disco.Web.Controllers
|
|||||||
public virtual ActionResult AllOpen()
|
public virtual ActionResult AllOpen()
|
||||||
{
|
{
|
||||||
var m = new Models.Job.ListModel() { Title = "All Open Jobs" };
|
var m = new Models.Job.ListModel() { Title = "All Open Jobs" };
|
||||||
m.JobTable = ManagedJobList.OpenJobsTable(q => q.OrderBy(j => j.Id));
|
m.JobTable = ManagedJobList.OpenJobsTable(q => q.OrderBy(j => j.JobId));
|
||||||
|
|
||||||
// UI Extensions
|
// UI Extensions
|
||||||
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
||||||
@@ -97,7 +97,7 @@ namespace Disco.Web.Controllers
|
|||||||
m.JobTable = ManagedJobList.OpenJobsTable(q => q.Where(j => !j.WaitingForUserAction.HasValue
|
m.JobTable = ManagedJobList.OpenJobsTable(q => q.Where(j => !j.WaitingForUserAction.HasValue
|
||||||
&& j.DeviceHeld != null && j.DeviceReturnedDate == null && j.DeviceReadyForReturn != null &&
|
&& j.DeviceHeld != null && j.DeviceReturnedDate == null && j.DeviceReadyForReturn != null &&
|
||||||
((!j.JobMetaNonWarranty_AccountingChargeRequiredDate.HasValue && !j.JobMetaNonWarranty_AccountingChargeAddedDate.HasValue) || j.JobMetaNonWarranty_AccountingChargePaidDate.HasValue))
|
((!j.JobMetaNonWarranty_AccountingChargeRequiredDate.HasValue && !j.JobMetaNonWarranty_AccountingChargeAddedDate.HasValue) || j.JobMetaNonWarranty_AccountingChargePaidDate.HasValue))
|
||||||
.OrderBy(j => j.Id));
|
.OrderBy(j => j.JobId));
|
||||||
|
|
||||||
// UI Extensions
|
// UI Extensions
|
||||||
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
||||||
@@ -113,7 +113,7 @@ namespace Disco.Web.Controllers
|
|||||||
m.JobTable = ManagedJobList.OpenJobsTable(q => q.Where(j =>
|
m.JobTable = ManagedJobList.OpenJobsTable(q => q.Where(j =>
|
||||||
(j.JobMetaNonWarranty_RepairerLoggedDate != null && j.JobMetaNonWarranty_RepairerCompletedDate == null) ||
|
(j.JobMetaNonWarranty_RepairerLoggedDate != null && j.JobMetaNonWarranty_RepairerCompletedDate == null) ||
|
||||||
(j.JobMetaWarranty_ExternalLoggedDate != null && j.JobMetaWarranty_ExternalCompletedDate == null)
|
(j.JobMetaWarranty_ExternalLoggedDate != null && j.JobMetaWarranty_ExternalCompletedDate == null)
|
||||||
).OrderBy(j => j.Id));
|
).OrderBy(j => j.JobId));
|
||||||
|
|
||||||
// UI Extensions
|
// UI Extensions
|
||||||
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
||||||
@@ -145,7 +145,7 @@ namespace Disco.Web.Controllers
|
|||||||
var m = new Models.Job.ListModel() { Title = "Jobs Awaiting Finance - Accounting Charge" };
|
var m = new Models.Job.ListModel() { Title = "Jobs Awaiting Finance - Accounting Charge" };
|
||||||
m.JobTable = ManagedJobList.OpenJobsTable(q => q.Where(j =>
|
m.JobTable = ManagedJobList.OpenJobsTable(q => q.Where(j =>
|
||||||
j.JobTypeId == JobType.JobTypeIds.HNWar && (j.JobMetaNonWarranty_AccountingChargeRequiredDate.HasValue && (!j.JobMetaNonWarranty_AccountingChargeAddedDate.HasValue && !j.JobMetaNonWarranty_AccountingChargePaidDate.HasValue))
|
j.JobTypeId == JobType.JobTypeIds.HNWar && (j.JobMetaNonWarranty_AccountingChargeRequiredDate.HasValue && (!j.JobMetaNonWarranty_AccountingChargeAddedDate.HasValue && !j.JobMetaNonWarranty_AccountingChargePaidDate.HasValue))
|
||||||
).OrderBy(j => j.Id));
|
).OrderBy(j => j.JobId));
|
||||||
|
|
||||||
// UI Extensions
|
// UI Extensions
|
||||||
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
||||||
@@ -159,7 +159,7 @@ namespace Disco.Web.Controllers
|
|||||||
var m = new Models.Job.ListModel() { Title = "Jobs Awaiting Finance - Accounting Payment" };
|
var m = new Models.Job.ListModel() { Title = "Jobs Awaiting Finance - Accounting Payment" };
|
||||||
m.JobTable = ManagedJobList.OpenJobsTable(q => q.Where(j =>
|
m.JobTable = ManagedJobList.OpenJobsTable(q => q.Where(j =>
|
||||||
j.JobTypeId == JobType.JobTypeIds.HNWar && ((j.JobMetaNonWarranty_AccountingChargeRequiredDate.HasValue || j.JobMetaNonWarranty_AccountingChargeAddedDate.HasValue) && !j.JobMetaNonWarranty_AccountingChargePaidDate.HasValue)
|
j.JobTypeId == JobType.JobTypeIds.HNWar && ((j.JobMetaNonWarranty_AccountingChargeRequiredDate.HasValue || j.JobMetaNonWarranty_AccountingChargeAddedDate.HasValue) && !j.JobMetaNonWarranty_AccountingChargePaidDate.HasValue)
|
||||||
).OrderBy(j => j.Id));
|
).OrderBy(j => j.JobId));
|
||||||
|
|
||||||
// UI Extensions
|
// UI Extensions
|
||||||
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
||||||
@@ -173,7 +173,7 @@ namespace Disco.Web.Controllers
|
|||||||
var m = new Models.Job.ListModel() { Title = "Jobs Awaiting Finance - Insurance Processing" };
|
var m = new Models.Job.ListModel() { Title = "Jobs Awaiting Finance - Insurance Processing" };
|
||||||
m.JobTable = ManagedJobList.OpenJobsTable(q => q.Where(j =>
|
m.JobTable = ManagedJobList.OpenJobsTable(q => q.Where(j =>
|
||||||
j.JobTypeId == JobType.JobTypeIds.HNWar && (j.JobMetaNonWarranty_IsInsuranceClaim.Value && !j.JobMetaInsurance_ClaimFormSentDate.HasValue)
|
j.JobTypeId == JobType.JobTypeIds.HNWar && (j.JobMetaNonWarranty_IsInsuranceClaim.Value && !j.JobMetaInsurance_ClaimFormSentDate.HasValue)
|
||||||
).OrderBy(j => j.Id));
|
).OrderBy(j => j.JobId));
|
||||||
|
|
||||||
// UI Extensions
|
// UI Extensions
|
||||||
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
||||||
@@ -187,7 +187,7 @@ namespace Disco.Web.Controllers
|
|||||||
var m = new Models.Job.ListModel() { Title = "Jobs Awaiting Finance - Agreement Breach" };
|
var m = new Models.Job.ListModel() { Title = "Jobs Awaiting Finance - Agreement Breach" };
|
||||||
m.JobTable = ManagedJobList.OpenJobsTable(q => q.Where(j =>
|
m.JobTable = ManagedJobList.OpenJobsTable(q => q.Where(j =>
|
||||||
j.JobTypeId == JobType.JobTypeIds.UMgmt && Job.UserManagementFlags.Infringement_BreachFinancialAgreement == (j.Flags & Job.UserManagementFlags.Infringement_BreachFinancialAgreement)
|
j.JobTypeId == JobType.JobTypeIds.UMgmt && Job.UserManagementFlags.Infringement_BreachFinancialAgreement == (j.Flags & Job.UserManagementFlags.Infringement_BreachFinancialAgreement)
|
||||||
).OrderBy(j => j.Id));
|
).OrderBy(j => j.JobId));
|
||||||
|
|
||||||
// UI Extensions
|
// UI Extensions
|
||||||
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
||||||
@@ -204,7 +204,7 @@ namespace Disco.Web.Controllers
|
|||||||
j.WaitingForUserAction.HasValue ||
|
j.WaitingForUserAction.HasValue ||
|
||||||
(j.JobMetaNonWarranty_AccountingChargeAddedDate != null && j.JobMetaNonWarranty_AccountingChargePaidDate == null) ||
|
(j.JobMetaNonWarranty_AccountingChargeAddedDate != null && j.JobMetaNonWarranty_AccountingChargePaidDate == null) ||
|
||||||
(j.JobMetaNonWarranty_AccountingChargeRequiredDate != null && j.JobMetaNonWarranty_AccountingChargePaidDate == null)
|
(j.JobMetaNonWarranty_AccountingChargeRequiredDate != null && j.JobMetaNonWarranty_AccountingChargePaidDate == null)
|
||||||
).OrderBy(j => j.Id));
|
).OrderBy(j => j.JobId));
|
||||||
|
|
||||||
// UI Extensions
|
// UI Extensions
|
||||||
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
||||||
@@ -224,7 +224,7 @@ namespace Disco.Web.Controllers
|
|||||||
closedThreshold = closedThreshold.AddDays(-2);
|
closedThreshold = closedThreshold.AddDays(-2);
|
||||||
if (dateTimeNow.DayOfWeek == DayOfWeek.Tuesday)
|
if (dateTimeNow.DayOfWeek == DayOfWeek.Tuesday)
|
||||||
closedThreshold = closedThreshold.AddDays(-1);
|
closedThreshold = closedThreshold.AddDays(-1);
|
||||||
m.JobTable.Fill(Database, BI.JobBI.Searching.BuildJobTableModel(Database).Where(j => j.ClosedDate > closedThreshold).OrderBy(j => j.Id), true);
|
m.JobTable.Fill(Database, Disco.Services.Searching.Search.BuildJobTableModel(Database).Where(j => j.ClosedDate > closedThreshold).OrderBy(j => j.Id), true);
|
||||||
|
|
||||||
// UI Extensions
|
// UI Extensions
|
||||||
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
UIExtensions.ExecuteExtensions<JobListModel>(this.ControllerContext, m);
|
||||||
|
|||||||
@@ -62,13 +62,13 @@ namespace Disco.Web.Controllers
|
|||||||
return View(m);
|
return View(m);
|
||||||
}
|
}
|
||||||
if (Authorization.Has(Claims.Job.Search))
|
if (Authorization.Has(Claims.Job.Search))
|
||||||
m.Jobs = BI.JobBI.Searching.Search(Database, term, null, true, searchDetails);
|
m.Jobs = Services.Searching.Search.SearchJobsTable(Database, term, null, true, searchDetails);
|
||||||
|
|
||||||
if (Authorization.Has(Claims.Device.Search))
|
if (Authorization.Has(Claims.Device.Search))
|
||||||
m.Devices = BI.DeviceBI.Searching.Search(Database, term, null, searchDetails);
|
m.Devices = Services.Searching.Search.SearchDevices(Database, term, null, searchDetails);
|
||||||
|
|
||||||
if (Authorization.Has(Claims.User.Search))
|
if (Authorization.Has(Claims.User.Search))
|
||||||
m.Users = BI.UserBI.Searching.Search(Database, term);
|
m.Users = Services.Searching.Search.SearchUsers(Database, term);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -83,7 +83,7 @@ namespace Disco.Web.Controllers
|
|||||||
if (vm != null)
|
if (vm != null)
|
||||||
{
|
{
|
||||||
m.FriendlyTerm = string.Format("Device Model: {0}", vm.ToString());
|
m.FriendlyTerm = string.Format("Device Model: {0}", vm.ToString());
|
||||||
m.Devices = BI.DeviceBI.Searching.SearchDeviceModel(Database, vm.Id);
|
m.Devices = Services.Searching.Search.SearchDeviceModel(Database, vm.Id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -100,7 +100,7 @@ namespace Disco.Web.Controllers
|
|||||||
if (dp != null)
|
if (dp != null)
|
||||||
{
|
{
|
||||||
m.FriendlyTerm = string.Format("Device Profile: {0}", dp.ToString());
|
m.FriendlyTerm = string.Format("Device Profile: {0}", dp.ToString());
|
||||||
m.Devices = BI.DeviceBI.Searching.SearchDeviceProfile(Database, dp.Id);
|
m.Devices = Services.Searching.Search.SearchDeviceProfile(Database, dp.Id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -117,7 +117,7 @@ namespace Disco.Web.Controllers
|
|||||||
if (db != null)
|
if (db != null)
|
||||||
{
|
{
|
||||||
m.FriendlyTerm = string.Format("Device Batch: {0}", db.ToString());
|
m.FriendlyTerm = string.Format("Device Batch: {0}", db.ToString());
|
||||||
m.Devices = BI.DeviceBI.Searching.SearchDeviceBatch(Database, db.Id);
|
m.Devices = Services.Searching.Search.SearchDeviceBatch(Database, db.Id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -133,10 +133,10 @@ namespace Disco.Web.Controllers
|
|||||||
m.ErrorMessage = "A search term of at least two characters is required";
|
m.ErrorMessage = "A search term of at least two characters is required";
|
||||||
return View(m);
|
return View(m);
|
||||||
}
|
}
|
||||||
m.Devices = BI.DeviceBI.Searching.Search(Database, term, null, searchDetails);
|
m.Devices = Services.Searching.Search.SearchDevices(Database, term, null, searchDetails);
|
||||||
if (m.Devices.Count == 1)
|
if (m.Devices.Count == 1)
|
||||||
{
|
{
|
||||||
return RedirectToAction(MVC.Device.Show(m.Devices[0].SerialNumber));
|
return RedirectToAction(MVC.Device.Show(m.Devices[0].Id));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "jobs":
|
case "jobs":
|
||||||
@@ -154,7 +154,7 @@ namespace Disco.Web.Controllers
|
|||||||
return RedirectToAction(MVC.Job.Show(termInt));
|
return RedirectToAction(MVC.Job.Show(termInt));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m.Jobs = BI.JobBI.Searching.Search(Database, term, null, true, searchDetails);
|
m.Jobs = Services.Searching.Search.SearchJobsTable(Database, term, null, true, searchDetails);
|
||||||
break;
|
break;
|
||||||
case "users":
|
case "users":
|
||||||
Authorization.Require(Claims.User.Search);
|
Authorization.Require(Claims.User.Search);
|
||||||
@@ -164,7 +164,7 @@ namespace Disco.Web.Controllers
|
|||||||
m.ErrorMessage = "A search term of at least two characters is required";
|
m.ErrorMessage = "A search term of at least two characters is required";
|
||||||
return View(m);
|
return View(m);
|
||||||
}
|
}
|
||||||
m.Users = BI.UserBI.Searching.Search(Database, term);
|
m.Users = Services.Searching.Search.SearchUsers(Database, term);
|
||||||
if (m.Users.Count == 1)
|
if (m.Users.Count == 1)
|
||||||
{
|
{
|
||||||
return RedirectToAction(MVC.User.Show(m.Users[0].Id));
|
return RedirectToAction(MVC.User.Show(m.Users[0].Id));
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ namespace Disco.Web.Controllers
|
|||||||
HideClosedJobs = true,
|
HideClosedJobs = true,
|
||||||
EnablePaging = false
|
EnablePaging = false
|
||||||
};
|
};
|
||||||
m.Jobs.Fill(Database, BI.JobBI.Searching.BuildJobTableModel(Database).Where(j => j.UserId == id).OrderByDescending(j => j.Id), true);
|
m.Jobs.Fill(Database, Disco.Services.Searching.Search.BuildJobTableModel(Database).Where(j => j.UserId == id).OrderByDescending(j => j.Id), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -192,6 +192,7 @@
|
|||||||
<Compile Include="Areas\API\Controllers\JobQueueController.cs" />
|
<Compile Include="Areas\API\Controllers\JobQueueController.cs" />
|
||||||
<Compile Include="Areas\API\Controllers\JobQueueJobController.cs" />
|
<Compile Include="Areas\API\Controllers\JobQueueJobController.cs" />
|
||||||
<Compile Include="Areas\API\Controllers\PluginController.cs" />
|
<Compile Include="Areas\API\Controllers\PluginController.cs" />
|
||||||
|
<Compile Include="Areas\API\Controllers\SearchController.cs" />
|
||||||
<Compile Include="Areas\API\Models\AuthorizationRole\SubjectItem.cs" />
|
<Compile Include="Areas\API\Models\AuthorizationRole\SubjectItem.cs" />
|
||||||
<Compile Include="Areas\API\Models\JobQueue\SubjectItem.cs" />
|
<Compile Include="Areas\API\Models\JobQueue\SubjectItem.cs" />
|
||||||
<Compile Include="Areas\Config\Controllers\AuthorizationRoleController.cs" />
|
<Compile Include="Areas\Config\Controllers\AuthorizationRoleController.cs" />
|
||||||
@@ -1957,6 +1958,7 @@
|
|||||||
<None Include="_bin_deployableAssemblies\x86\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest" />
|
<None Include="_bin_deployableAssemblies\x86\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Folder Include="Areas\API\Models\Search\" />
|
||||||
<Folder Include="Areas\API\Models\WirelessCertificate\" />
|
<Folder Include="Areas\API\Models\WirelessCertificate\" />
|
||||||
<Folder Include="Areas\Services\Models\" />
|
<Folder Include="Areas\Services\Models\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using Disco.Models.BI.Search;
|
using Disco.Models.Services.Searching;
|
||||||
using Disco.Models.Services.Jobs.JobLists;
|
using Disco.Models.Services.Jobs.JobLists;
|
||||||
using Disco.Models.UI.Search;
|
using Disco.Models.UI.Search;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|||||||
+106
-7
@@ -63,6 +63,7 @@ namespace T4MVC
|
|||||||
public Disco.Web.Areas.API.Controllers.JobQueueJobController JobQueueJob = new Disco.Web.Areas.API.Controllers.T4MVC_JobQueueJobController();
|
public Disco.Web.Areas.API.Controllers.JobQueueJobController JobQueueJob = new Disco.Web.Areas.API.Controllers.T4MVC_JobQueueJobController();
|
||||||
public Disco.Web.Areas.API.Controllers.LoggingController Logging = new Disco.Web.Areas.API.Controllers.T4MVC_LoggingController();
|
public Disco.Web.Areas.API.Controllers.LoggingController Logging = new Disco.Web.Areas.API.Controllers.T4MVC_LoggingController();
|
||||||
public Disco.Web.Areas.API.Controllers.PluginController Plugin = new Disco.Web.Areas.API.Controllers.T4MVC_PluginController();
|
public Disco.Web.Areas.API.Controllers.PluginController Plugin = new Disco.Web.Areas.API.Controllers.T4MVC_PluginController();
|
||||||
|
public Disco.Web.Areas.API.Controllers.SearchController Search = new Disco.Web.Areas.API.Controllers.T4MVC_SearchController();
|
||||||
public Disco.Web.Areas.API.Controllers.SystemController System = new Disco.Web.Areas.API.Controllers.T4MVC_SystemController();
|
public Disco.Web.Areas.API.Controllers.SystemController System = new Disco.Web.Areas.API.Controllers.T4MVC_SystemController();
|
||||||
public Disco.Web.Areas.API.Controllers.UserController User = new Disco.Web.Areas.API.Controllers.T4MVC_UserController();
|
public Disco.Web.Areas.API.Controllers.UserController User = new Disco.Web.Areas.API.Controllers.T4MVC_UserController();
|
||||||
}
|
}
|
||||||
@@ -474,7 +475,7 @@ namespace Links
|
|||||||
private const string URLPATH = "~/ClientSource/Style";
|
private const string URLPATH = "~/ClientSource/Style";
|
||||||
public static string Url() { return T4MVCHelpers.ProcessVirtualPath(URLPATH); }
|
public static string Url() { return T4MVCHelpers.ProcessVirtualPath(URLPATH); }
|
||||||
public static string Url(string fileName) { return T4MVCHelpers.ProcessVirtualPath(URLPATH + "/" + fileName); }
|
public static string Url(string fileName) { return T4MVCHelpers.ProcessVirtualPath(URLPATH + "/" + fileName); }
|
||||||
public static readonly string BundleSite_css_bundle = Url("BundleSite.css.bundle");
|
public static readonly string BundleSite_less = Url("BundleSite.less");
|
||||||
public static readonly string BundleSite_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/BundleSite.min.css") ? Url("BundleSite.min.css") : Url("BundleSite.css");
|
public static readonly string BundleSite_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/BundleSite.min.css") ? Url("BundleSite.min.css") : Url("BundleSite.css");
|
||||||
|
|
||||||
public static readonly string BundleSite_min_css = Url("BundleSite.min.css");
|
public static readonly string BundleSite_min_css = Url("BundleSite.min.css");
|
||||||
@@ -549,8 +550,7 @@ namespace Links
|
|||||||
private const string URLPATH = "~/ClientSource/Style/FontAwesome";
|
private const string URLPATH = "~/ClientSource/Style/FontAwesome";
|
||||||
public static string Url() { return T4MVCHelpers.ProcessVirtualPath(URLPATH); }
|
public static string Url() { return T4MVCHelpers.ProcessVirtualPath(URLPATH); }
|
||||||
public static string Url(string fileName) { return T4MVCHelpers.ProcessVirtualPath(URLPATH + "/" + fileName); }
|
public static string Url(string fileName) { return T4MVCHelpers.ProcessVirtualPath(URLPATH + "/" + fileName); }
|
||||||
public static readonly string font_awesome_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/font-awesome.min.css") ? Url("font-awesome.min.css") : Url("font-awesome.css");
|
public static readonly string font_awesome_less = Url("font-awesome.less");
|
||||||
|
|
||||||
public static readonly string fontawesome_webfont_eot = Url("fontawesome-webfont.eot");
|
public static readonly string fontawesome_webfont_eot = Url("fontawesome-webfont.eot");
|
||||||
public static readonly string fontawesome_webfont_svg = Url("fontawesome-webfont.svg");
|
public static readonly string fontawesome_webfont_svg = Url("fontawesome-webfont.svg");
|
||||||
public static readonly string fontawesome_webfont_ttf = Url("fontawesome-webfont.ttf");
|
public static readonly string fontawesome_webfont_ttf = Url("fontawesome-webfont.ttf");
|
||||||
@@ -678,16 +678,17 @@ namespace Links
|
|||||||
public static readonly string ui_icons_cd0a0a_256x240_png = Url("ui-icons_cd0a0a_256x240.png");
|
public static readonly string ui_icons_cd0a0a_256x240_png = Url("ui-icons_cd0a0a_256x240.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static readonly string jquery_ui_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/jquery-ui.min.css") ? Url("jquery-ui.min.css") : Url("jquery-ui.css");
|
public static readonly string jquery_ui_less = Url("jquery-ui.less");
|
||||||
|
|
||||||
public static readonly string old_jquery_ui_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/old_jquery-ui.min.css") ? Url("old_jquery-ui.min.css") : Url("old_jquery-ui.css");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static readonly string jQueryUIExtensions_less = Url("jQueryUIExtensions.less");
|
public static readonly string jQueryUIExtensions_less = Url("jQueryUIExtensions.less");
|
||||||
public static readonly string jQueryUIExtensions_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/jQueryUIExtensions.min.css") ? Url("jQueryUIExtensions.min.css") : Url("jQueryUIExtensions.css");
|
public static readonly string jQueryUIExtensions_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/jQueryUIExtensions.min.css") ? Url("jQueryUIExtensions.min.css") : Url("jQueryUIExtensions.css");
|
||||||
|
|
||||||
public static readonly string jQueryUIExtensions_min_css = Url("jQueryUIExtensions.min.css");
|
public static readonly string jQueryUIExtensions_min_css = Url("jQueryUIExtensions.min.css");
|
||||||
|
public static readonly string normalize_less = Url("normalize.less");
|
||||||
|
public static readonly string normalize_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/normalize.min.css") ? Url("normalize.min.css") : Url("normalize.css");
|
||||||
|
|
||||||
|
public static readonly string normalize_min_css = Url("normalize.min.css");
|
||||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
public static class Public {
|
public static class Public {
|
||||||
private const string URLPATH = "~/ClientSource/Style/Public";
|
private const string URLPATH = "~/ClientSource/Style/Public";
|
||||||
@@ -8883,6 +8884,104 @@ namespace Disco.Web.Areas.API.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace Disco.Web.Areas.API.Controllers
|
||||||
|
{
|
||||||
|
public partial class SearchController
|
||||||
|
{
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
public SearchController() { }
|
||||||
|
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
protected SearchController(Dummy d) { }
|
||||||
|
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
protected RedirectToRouteResult RedirectToAction(ActionResult result)
|
||||||
|
{
|
||||||
|
var callInfo = result.GetT4MVCResult();
|
||||||
|
return RedirectToRoute(callInfo.RouteValueDictionary);
|
||||||
|
}
|
||||||
|
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
protected RedirectToRouteResult RedirectToActionPermanent(ActionResult result)
|
||||||
|
{
|
||||||
|
var callInfo = result.GetT4MVCResult();
|
||||||
|
return RedirectToRoutePermanent(callInfo.RouteValueDictionary);
|
||||||
|
}
|
||||||
|
|
||||||
|
[NonAction]
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
public virtual System.Web.Mvc.ActionResult QuickQuery()
|
||||||
|
{
|
||||||
|
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.QuickQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
public SearchController Actions { get { return MVC.API.Search; } }
|
||||||
|
[GeneratedCode("T4MVC", "2.0")]
|
||||||
|
public readonly string Area = "API";
|
||||||
|
[GeneratedCode("T4MVC", "2.0")]
|
||||||
|
public readonly string Name = "Search";
|
||||||
|
[GeneratedCode("T4MVC", "2.0")]
|
||||||
|
public const string NameConst = "Search";
|
||||||
|
|
||||||
|
static readonly ActionNamesClass s_actions = new ActionNamesClass();
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
public ActionNamesClass ActionNames { get { return s_actions; } }
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
public class ActionNamesClass
|
||||||
|
{
|
||||||
|
public readonly string QuickQuery = "QuickQuery";
|
||||||
|
}
|
||||||
|
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
public class ActionNameConstants
|
||||||
|
{
|
||||||
|
public const string QuickQuery = "QuickQuery";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static readonly ActionParamsClass_QuickQuery s_params_QuickQuery = new ActionParamsClass_QuickQuery();
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
public ActionParamsClass_QuickQuery QuickQueryParams { get { return s_params_QuickQuery; } }
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
public class ActionParamsClass_QuickQuery
|
||||||
|
{
|
||||||
|
public readonly string Term = "Term";
|
||||||
|
public readonly string Limit = "Limit";
|
||||||
|
}
|
||||||
|
static readonly ViewsClass s_views = new ViewsClass();
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
public ViewsClass Views { get { return s_views; } }
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
public class ViewsClass
|
||||||
|
{
|
||||||
|
static readonly _ViewNamesClass s_ViewNames = new _ViewNamesClass();
|
||||||
|
public _ViewNamesClass ViewNames { get { return s_ViewNames; } }
|
||||||
|
public class _ViewNamesClass
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
|
public partial class T4MVC_SearchController : Disco.Web.Areas.API.Controllers.SearchController
|
||||||
|
{
|
||||||
|
public T4MVC_SearchController() : base(Dummy.Instance) { }
|
||||||
|
|
||||||
|
partial void QuickQueryOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string Term, int Limit);
|
||||||
|
|
||||||
|
public override System.Web.Mvc.ActionResult QuickQuery(string Term, int Limit)
|
||||||
|
{
|
||||||
|
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.QuickQuery);
|
||||||
|
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Term", Term);
|
||||||
|
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Limit", Limit);
|
||||||
|
QuickQueryOverride(callInfo, Term, Limit);
|
||||||
|
return callInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
namespace Disco.Web.Areas.API.Controllers
|
namespace Disco.Web.Areas.API.Controllers
|
||||||
{
|
{
|
||||||
public partial class SystemController
|
public partial class SystemController
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@model IEnumerable<Disco.Models.BI.Search.DeviceSearchResultItem>
|
@model IEnumerable<Disco.Models.Services.Searching.DeviceSearchResultItem>
|
||||||
@{
|
@{
|
||||||
var canShowDevices = Authorization.Has(Claims.Device.Show);
|
var canShowDevices = Authorization.Has(Claims.Device.Show);
|
||||||
}
|
}
|
||||||
@@ -30,9 +30,9 @@
|
|||||||
<tr class="@(item.DecommissionedDate.HasValue ? "decommissioned" : string.Empty)">
|
<tr class="@(item.DecommissionedDate.HasValue ? "decommissioned" : string.Empty)">
|
||||||
<td>
|
<td>
|
||||||
@if (canShowDevices)
|
@if (canShowDevices)
|
||||||
{@Html.ActionLink(item.SerialNumber, MVC.Device.Show(item.SerialNumber))}
|
{@Html.ActionLink(item.Id, MVC.Device.Show(item.Id))}
|
||||||
else
|
else
|
||||||
{@item.SerialNumber}
|
{@item.Id}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
@item.AssetNumber
|
@item.AssetNumber
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Device
|
|||||||
using Disco;
|
using Disco;
|
||||||
using Disco.BI.Extensions;
|
using Disco.BI.Extensions;
|
||||||
using Disco.Models.Repository;
|
using Disco.Models.Repository;
|
||||||
|
using Disco.Services;
|
||||||
using Disco.Services.Authorization;
|
using Disco.Services.Authorization;
|
||||||
using Disco.Services.Web;
|
using Disco.Services.Web;
|
||||||
using Disco.Web;
|
using Disco.Web;
|
||||||
@@ -36,7 +37,7 @@ namespace Disco.Web.Views.Device
|
|||||||
|
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
|
||||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/_DeviceTable.cshtml")]
|
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/_DeviceTable.cshtml")]
|
||||||
public partial class DeviceTable : Disco.Services.Web.WebViewPage<IEnumerable<Disco.Models.BI.Search.DeviceSearchResultItem>>
|
public partial class DeviceTable : Disco.Services.Web.WebViewPage<IEnumerable<Disco.Models.Services.Searching.DeviceSearchResultItem>>
|
||||||
{
|
{
|
||||||
public DeviceTable()
|
public DeviceTable()
|
||||||
{
|
{
|
||||||
@@ -113,14 +114,14 @@ WriteLiteral(@">
|
|||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral(" <tr");
|
WriteLiteral(" <tr");
|
||||||
|
|
||||||
WriteAttribute("class", Tuple.Create(" class=\"", 895), Tuple.Create("\"", 972)
|
WriteAttribute("class", Tuple.Create(" class=\"", 904), Tuple.Create("\"", 981)
|
||||||
|
|
||||||
#line 30 "..\..\Views\Device\_DeviceTable.cshtml"
|
#line 30 "..\..\Views\Device\_DeviceTable.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 903), Tuple.Create<System.Object, System.Int32>(item.DecommissionedDate.HasValue ? "decommissioned" : string.Empty
|
, Tuple.Create(Tuple.Create("", 912), Tuple.Create<System.Object, System.Int32>(item.DecommissionedDate.HasValue ? "decommissioned" : string.Empty
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 903), false)
|
, 912), false)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteLiteral(">\r\n <td>\r\n");
|
WriteLiteral(">\r\n <td>\r\n");
|
||||||
@@ -140,14 +141,14 @@ WriteLiteral(">\r\n <td>\r\n");
|
|||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 33 "..\..\Views\Device\_DeviceTable.cshtml"
|
#line 33 "..\..\Views\Device\_DeviceTable.cshtml"
|
||||||
Write(Html.ActionLink(item.SerialNumber, MVC.Device.Show(item.SerialNumber)));
|
Write(Html.ActionLink(item.Id, MVC.Device.Show(item.Id)));
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 33 "..\..\Views\Device\_DeviceTable.cshtml"
|
#line 33 "..\..\Views\Device\_DeviceTable.cshtml"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -155,14 +156,14 @@ WriteLiteral(">\r\n <td>\r\n");
|
|||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 35 "..\..\Views\Device\_DeviceTable.cshtml"
|
#line 35 "..\..\Views\Device\_DeviceTable.cshtml"
|
||||||
Write(item.SerialNumber);
|
Write(item.Id);
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 35 "..\..\Views\Device\_DeviceTable.cshtml"
|
#line 35 "..\..\Views\Device\_DeviceTable.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
|
|||||||
@@ -59,9 +59,9 @@
|
|||||||
@if (Model.ShowId)
|
@if (Model.ShowId)
|
||||||
{<td class="id">
|
{<td class="id">
|
||||||
@if (Authorization.Has(Claims.Job.Show))
|
@if (Authorization.Has(Claims.Job.Show))
|
||||||
{@Html.ActionLink(item.Id.ToString(), MVC.Job.Show(item.Id))}
|
{@Html.ActionLink(item.JobId.ToString(), MVC.Job.Show(item.JobId))}
|
||||||
else
|
else
|
||||||
{@item.Id.ToString()}</td>}
|
{@item.JobId.ToString()}</td>}
|
||||||
@if (Model.ShowStatus)
|
@if (Model.ShowStatus)
|
||||||
{
|
{
|
||||||
var statusItem = (JobTableStatusItemModel)item;
|
var statusItem = (JobTableStatusItemModel)item;
|
||||||
|
|||||||
@@ -397,14 +397,14 @@ WriteLiteral(">\r\n");
|
|||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 62 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 62 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
Write(Html.ActionLink(item.Id.ToString(), MVC.Job.Show(item.Id)));
|
Write(Html.ActionLink(item.JobId.ToString(), MVC.Job.Show(item.JobId)));
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 62 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 62 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -412,14 +412,14 @@ WriteLiteral(">\r\n");
|
|||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 64 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 64 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
Write(item.Id.ToString());
|
Write(item.JobId.ToString());
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 64 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 64 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
@@ -427,7 +427,7 @@ WriteLiteral("</td>");
|
|||||||
|
|
||||||
|
|
||||||
#line 64 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 64 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
@@ -449,17 +449,17 @@ WriteLiteral(" class=\"status\"");
|
|||||||
|
|
||||||
WriteLiteral("><i");
|
WriteLiteral("><i");
|
||||||
|
|
||||||
WriteAttribute("class", Tuple.Create(" class=\"", 3230), Tuple.Create("\"", 3277)
|
WriteAttribute("class", Tuple.Create(" class=\"", 3239), Tuple.Create("\"", 3286)
|
||||||
, Tuple.Create(Tuple.Create("", 3238), Tuple.Create("fa", 3238), true)
|
, Tuple.Create(Tuple.Create("", 3247), Tuple.Create("fa", 3247), true)
|
||||||
, Tuple.Create(Tuple.Create(" ", 3240), Tuple.Create("fa-square", 3241), true)
|
, Tuple.Create(Tuple.Create(" ", 3249), Tuple.Create("fa-square", 3250), true)
|
||||||
, Tuple.Create(Tuple.Create(" ", 3250), Tuple.Create("jobStatus", 3251), true)
|
, Tuple.Create(Tuple.Create(" ", 3259), Tuple.Create("jobStatus", 3260), true)
|
||||||
|
|
||||||
#line 68 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 68 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
, Tuple.Create(Tuple.Create(" ", 3260), Tuple.Create<System.Object, System.Int32>(item.StatusId
|
, Tuple.Create(Tuple.Create(" ", 3269), Tuple.Create<System.Object, System.Int32>(item.StatusId
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 3261), false)
|
, 3270), false)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteLiteral("></i> ");
|
WriteLiteral("></i> ");
|
||||||
@@ -508,44 +508,44 @@ WriteLiteral(">\r\n");
|
|||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral(" <i");
|
WriteLiteral(" <i");
|
||||||
|
|
||||||
WriteAttribute("class", Tuple.Create(" class=\"", 3809), Tuple.Create("\"", 3898)
|
WriteAttribute("class", Tuple.Create(" class=\"", 3818), Tuple.Create("\"", 3907)
|
||||||
, Tuple.Create(Tuple.Create("", 3817), Tuple.Create("fa", 3817), true)
|
, Tuple.Create(Tuple.Create("", 3826), Tuple.Create("fa", 3826), true)
|
||||||
, Tuple.Create(Tuple.Create(" ", 3819), Tuple.Create("fa-", 3820), true)
|
, Tuple.Create(Tuple.Create(" ", 3828), Tuple.Create("fa-", 3829), true)
|
||||||
|
|
||||||
#line 73 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 73 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 3823), Tuple.Create<System.Object, System.Int32>(jqToken.Item2.JobQueue.Icon
|
, Tuple.Create(Tuple.Create("", 3832), Tuple.Create<System.Object, System.Int32>(jqToken.Item2.JobQueue.Icon
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 3823), false)
|
, 3832), false)
|
||||||
, Tuple.Create(Tuple.Create(" ", 3853), Tuple.Create("fa-fw", 3854), true)
|
, Tuple.Create(Tuple.Create(" ", 3862), Tuple.Create("fa-fw", 3863), true)
|
||||||
, Tuple.Create(Tuple.Create(" ", 3859), Tuple.Create("d-", 3860), true)
|
, Tuple.Create(Tuple.Create(" ", 3868), Tuple.Create("d-", 3869), true)
|
||||||
|
|
||||||
#line 73 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 73 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 3862), Tuple.Create<System.Object, System.Int32>(jqToken.Item2.JobQueue.IconColour
|
, Tuple.Create(Tuple.Create("", 3871), Tuple.Create<System.Object, System.Int32>(jqToken.Item2.JobQueue.IconColour
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 3862), false)
|
, 3871), false)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteAttribute("title", Tuple.Create(" title=\"", 3899), Tuple.Create("\"", 3965)
|
WriteAttribute("title", Tuple.Create(" title=\"", 3908), Tuple.Create("\"", 3974)
|
||||||
|
|
||||||
#line 73 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 73 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 3907), Tuple.Create<System.Object, System.Int32>(jqToken.Item2.JobQueue.Name
|
, Tuple.Create(Tuple.Create("", 3916), Tuple.Create<System.Object, System.Int32>(jqToken.Item2.JobQueue.Name
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 3907), false)
|
, 3916), false)
|
||||||
, Tuple.Create(Tuple.Create(" ", 3937), Tuple.Create("[", 3938), true)
|
, Tuple.Create(Tuple.Create(" ", 3946), Tuple.Create("[", 3947), true)
|
||||||
|
|
||||||
#line 73 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 73 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 3939), Tuple.Create<System.Object, System.Int32>(jqToken.Item1.Priority
|
, Tuple.Create(Tuple.Create("", 3948), Tuple.Create<System.Object, System.Int32>(jqToken.Item1.Priority
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 3939), false)
|
, 3948), false)
|
||||||
, Tuple.Create(Tuple.Create("", 3964), Tuple.Create("]", 3964), true)
|
, Tuple.Create(Tuple.Create("", 3973), Tuple.Create("]", 3973), true)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteLiteral("></i>\r\n");
|
WriteLiteral("></i>\r\n");
|
||||||
@@ -649,14 +649,14 @@ WriteLiteral(" class=\"type\"");
|
|||||||
|
|
||||||
WriteLiteral("><span");
|
WriteLiteral("><span");
|
||||||
|
|
||||||
WriteAttribute("title", Tuple.Create(" title=\"", 4547), Tuple.Create("\"", 4579)
|
WriteAttribute("title", Tuple.Create(" title=\"", 4556), Tuple.Create("\"", 4588)
|
||||||
|
|
||||||
#line 83 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 83 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 4555), Tuple.Create<System.Object, System.Int32>(item.JobTypeDescription
|
, Tuple.Create(Tuple.Create("", 4564), Tuple.Create<System.Object, System.Int32>(item.JobTypeDescription
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 4555), false)
|
, 4564), false)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteLiteral(">");
|
WriteLiteral(">");
|
||||||
@@ -724,14 +724,14 @@ WriteLiteral(">\r\n");
|
|||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral("<span");
|
WriteLiteral("<span");
|
||||||
|
|
||||||
WriteAttribute("title", Tuple.Create(" title=\"", 5119), Tuple.Create("\"", 5155)
|
WriteAttribute("title", Tuple.Create(" title=\"", 5128), Tuple.Create("\"", 5164)
|
||||||
|
|
||||||
#line 91 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 91 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 5127), Tuple.Create<System.Object, System.Int32>(item.DeviceModelDescription
|
, Tuple.Create(Tuple.Create("", 5136), Tuple.Create<System.Object, System.Int32>(item.DeviceModelDescription
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 5127), false)
|
, 5136), false)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteLiteral(">");
|
WriteLiteral(">");
|
||||||
@@ -872,14 +872,14 @@ WriteLiteral(" class=\"technician\"");
|
|||||||
|
|
||||||
WriteLiteral("><span");
|
WriteLiteral("><span");
|
||||||
|
|
||||||
WriteAttribute("title", Tuple.Create(" title=\"", 6107), Tuple.Create("\"", 6146)
|
WriteAttribute("title", Tuple.Create(" title=\"", 6116), Tuple.Create("\"", 6155)
|
||||||
|
|
||||||
#line 107 "..\..\Views\Shared\_JobTableRender.cshtml"
|
#line 107 "..\..\Views\Shared\_JobTableRender.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 6115), Tuple.Create<System.Object, System.Int32>(item.OpenedTechUserDisplayName
|
, Tuple.Create(Tuple.Create("", 6124), Tuple.Create<System.Object, System.Int32>(item.OpenedTechUserDisplayName
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 6115), false)
|
, 6124), false)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteLiteral(">");
|
WriteLiteral(">");
|
||||||
|
|||||||
@@ -28,14 +28,14 @@
|
|||||||
var queues = Disco.Services.Jobs.JobQueues.JobQueueService.GetQueues();
|
var queues = Disco.Services.Jobs.JobQueues.JobQueueService.GetQueues();
|
||||||
if (queues.Count > 0)
|
if (queues.Count > 0)
|
||||||
{
|
{
|
||||||
<li class="d-sm"><i class="fa fa-caret-right"></i><a>Queues</a>
|
<li class="d-sm"><i class="fa fa-caret-right"></i><a>Queues</a>
|
||||||
<ul>
|
<ul>
|
||||||
@foreach (var queueToken in queues)
|
@foreach (var queueToken in queues)
|
||||||
{
|
{
|
||||||
<li><a href="@Url.Action(MVC.Job.Queue(queueToken.JobQueue.Id))"><i class="fa fa-@(queueToken.JobQueue.Icon) fa-fw d-@(queueToken.JobQueue.IconColour)"></i> @(queueToken.JobQueue.Name)</a></li>
|
<li><a href="@Url.Action(MVC.Job.Queue(queueToken.JobQueue.Id))"><i class="fa fa-@(queueToken.JobQueue.Icon) fa-fw d-@(queueToken.JobQueue.IconColour)"></i>@(queueToken.JobQueue.Name)</a></li>
|
||||||
}
|
}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@if (Authorization.Has(Claims.Job.Lists.AwaitingTechnicianAction))
|
@if (Authorization.Has(Claims.Job.Lists.AwaitingTechnicianAction))
|
||||||
@@ -98,11 +98,13 @@
|
|||||||
}
|
}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@if (Authorization.HasAny(Claims.Device.Search, Claims.Device.Actions.Import, Claims.Device.Actions.Export, Claims.Device.Actions.EnrolDevices)){
|
@if (Authorization.HasAny(Claims.Device.Search, Claims.Device.Actions.Import, Claims.Device.Actions.Export, Claims.Device.Actions.EnrolDevices))
|
||||||
<li class="@((string)ViewContext.ViewData["MenuArea"] == MVC.Device.Name ? "active" : null)">@Html.ActionLink("Devices", MVC.Device.Index(), accesskey: "2")</li>
|
{
|
||||||
|
<li class="@((string)ViewContext.ViewData["MenuArea"] == MVC.Device.Name ? "active" : null)">@Html.ActionLink("Devices", MVC.Device.Index(), accesskey: "2")</li>
|
||||||
}
|
}
|
||||||
@if (Authorization.HasAny(Claims.User.Search)){
|
@if (Authorization.HasAny(Claims.User.Search))
|
||||||
<li class="@((string)ViewContext.ViewData["MenuArea"] == MVC.User.Name ? "active" : null)">@Html.ActionLink("Users", MVC.User.Index(), accesskey: "3")</li>
|
{
|
||||||
|
<li class="@((string)ViewContext.ViewData["MenuArea"] == MVC.User.Name ? "active" : null)">@Html.ActionLink("Users", MVC.User.Index(), accesskey: "3")</li>
|
||||||
}
|
}
|
||||||
<li class="moveRight@((string)ViewContext.ViewData["MenuArea"] == MVC.Public.Name ? " active" : null)">@Html.ActionLink("Reports", MVC.Public.Public.Index())</li>
|
<li class="moveRight@((string)ViewContext.ViewData["MenuArea"] == MVC.Public.Name ? " active" : null)">@Html.ActionLink("Reports", MVC.Public.Public.Index())</li>
|
||||||
@if (Authorization.Has(Claims.Config.Show))
|
@if (Authorization.Has(Claims.Config.Show))
|
||||||
@@ -116,9 +118,11 @@
|
|||||||
{ @Html.ActionLink(CurrentUser.ToString(), MVC.User.Show(CurrentUser.Id))}
|
{ @Html.ActionLink(CurrentUser.ToString(), MVC.User.Show(CurrentUser.Id))}
|
||||||
else
|
else
|
||||||
{@CurrentUser.ToString()}</span>
|
{@CurrentUser.ToString()}</span>
|
||||||
@if (Authorization.HasAny(Claims.Job.Search, Claims.Device.Search, Claims.User.Search)){
|
@if (Authorization.HasAny(Claims.Job.Search, Claims.Device.Search, Claims.User.Search))
|
||||||
using (Html.BeginForm(MVC.Search.Query(), FormMethod.Get))
|
{
|
||||||
{ @Html.TextBox("term", null, new { id="SearchQuery", accesskey = "s", placeholder="Search" }) }}
|
using (Html.BeginForm(MVC.Search.Query(), FormMethod.Get))
|
||||||
|
{ @Html.TextBox("term", null, new { id = "SearchQuery", accesskey = "s", placeholder = "Search", data_quicksearchurl = Url.Action(MVC.API.Search.QuickQuery()) }) }
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div id="layout_PageHeading">@CommonHelpers.Breadcrumbs(ViewBag.Title ?? string.Empty)</div>
|
<div id="layout_PageHeading">@CommonHelpers.Breadcrumbs(ViewBag.Title ?? string.Empty)</div>
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ WriteLiteral("\r\n <ul>\r\n");
|
|||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral(" <li");
|
WriteLiteral(" <li");
|
||||||
|
|
||||||
WriteLiteral(" class=\"d-sm\"");
|
WriteLiteral(" class=\"d-sm\"");
|
||||||
|
|
||||||
@@ -191,7 +191,7 @@ WriteLiteral("><i");
|
|||||||
|
|
||||||
WriteLiteral(" class=\"fa fa-caret-right\"");
|
WriteLiteral(" class=\"fa fa-caret-right\"");
|
||||||
|
|
||||||
WriteLiteral("></i><a>Queues</a>\r\n <ul>\r\n");
|
WriteLiteral("></i><a>Queues</a>\r\n <ul>\r\n");
|
||||||
|
|
||||||
|
|
||||||
#line 33 "..\..\Views\Shared\_Layout.cshtml"
|
#line 33 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
@@ -201,52 +201,52 @@ WriteLiteral("></i><a>Queues</a>\r\n <ul>
|
|||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 33 "..\..\Views\Shared\_Layout.cshtml"
|
#line 33 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
foreach (var queueToken in queues)
|
foreach (var queueToken in queues)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral(" <li><a");
|
WriteLiteral(" <li><a");
|
||||||
|
|
||||||
WriteAttribute("href", Tuple.Create(" href=\"", 1672), Tuple.Create("\"", 1729)
|
WriteAttribute("href", Tuple.Create(" href=\"", 1652), Tuple.Create("\"", 1709)
|
||||||
|
|
||||||
#line 35 "..\..\Views\Shared\_Layout.cshtml"
|
#line 35 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 1679), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Job.Queue(queueToken.JobQueue.Id))
|
, Tuple.Create(Tuple.Create("", 1659), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Job.Queue(queueToken.JobQueue.Id))
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 1679), false)
|
, 1659), false)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteLiteral("><i");
|
WriteLiteral("><i");
|
||||||
|
|
||||||
WriteAttribute("class", Tuple.Create(" class=\"", 1733), Tuple.Create("\"", 1816)
|
WriteAttribute("class", Tuple.Create(" class=\"", 1713), Tuple.Create("\"", 1796)
|
||||||
, Tuple.Create(Tuple.Create("", 1741), Tuple.Create("fa", 1741), true)
|
, Tuple.Create(Tuple.Create("", 1721), Tuple.Create("fa", 1721), true)
|
||||||
, Tuple.Create(Tuple.Create(" ", 1743), Tuple.Create("fa-", 1744), true)
|
, Tuple.Create(Tuple.Create(" ", 1723), Tuple.Create("fa-", 1724), true)
|
||||||
|
|
||||||
#line 35 "..\..\Views\Shared\_Layout.cshtml"
|
#line 35 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 1747), Tuple.Create<System.Object, System.Int32>(queueToken.JobQueue.Icon
|
, Tuple.Create(Tuple.Create("", 1727), Tuple.Create<System.Object, System.Int32>(queueToken.JobQueue.Icon
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 1747), false)
|
, 1727), false)
|
||||||
, Tuple.Create(Tuple.Create(" ", 1774), Tuple.Create("fa-fw", 1775), true)
|
, Tuple.Create(Tuple.Create(" ", 1754), Tuple.Create("fa-fw", 1755), true)
|
||||||
, Tuple.Create(Tuple.Create(" ", 1780), Tuple.Create("d-", 1781), true)
|
, Tuple.Create(Tuple.Create(" ", 1760), Tuple.Create("d-", 1761), true)
|
||||||
|
|
||||||
#line 35 "..\..\Views\Shared\_Layout.cshtml"
|
#line 35 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 1783), Tuple.Create<System.Object, System.Int32>(queueToken.JobQueue.IconColour
|
, Tuple.Create(Tuple.Create("", 1763), Tuple.Create<System.Object, System.Int32>(queueToken.JobQueue.IconColour
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 1783), false)
|
, 1763), false)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteLiteral("></i> ");
|
WriteLiteral("></i>");
|
||||||
|
|
||||||
|
|
||||||
#line 35 "..\..\Views\Shared\_Layout.cshtml"
|
#line 35 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(queueToken.JobQueue.Name);
|
Write(queueToken.JobQueue.Name);
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
@@ -255,13 +255,13 @@ WriteLiteral("</a></li>\r\n");
|
|||||||
|
|
||||||
|
|
||||||
#line 36 "..\..\Views\Shared\_Layout.cshtml"
|
#line 36 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral(" </ul>\r\n " +
|
WriteLiteral(" </ul>\r\n </li>\r" +
|
||||||
" </li>\r\n");
|
"\n");
|
||||||
|
|
||||||
|
|
||||||
#line 39 "..\..\Views\Shared\_Layout.cshtml"
|
#line 39 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
@@ -655,28 +655,29 @@ WriteLiteral(" </ul>\r\n </li>\r\n");
|
|||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 101 "..\..\Views\Shared\_Layout.cshtml"
|
#line 101 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
if (Authorization.HasAny(Claims.Device.Search, Claims.Device.Actions.Import, Claims.Device.Actions.Export, Claims.Device.Actions.EnrolDevices)){
|
if (Authorization.HasAny(Claims.Device.Search, Claims.Device.Actions.Import, Claims.Device.Actions.Export, Claims.Device.Actions.EnrolDevices))
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral(" <li");
|
WriteLiteral(" <li");
|
||||||
|
|
||||||
WriteAttribute("class", Tuple.Create(" class=\"", 6398), Tuple.Create("\"", 6486)
|
WriteAttribute("class", Tuple.Create(" class=\"", 6391), Tuple.Create("\"", 6479)
|
||||||
|
|
||||||
#line 102 "..\..\Views\Shared\_Layout.cshtml"
|
#line 103 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 6406), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Device.Name ? "active" : null
|
, Tuple.Create(Tuple.Create("", 6399), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Device.Name ? "active" : null
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 6406), false)
|
, 6399), false)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteLiteral(">");
|
WriteLiteral(">");
|
||||||
|
|
||||||
|
|
||||||
#line 102 "..\..\Views\Shared\_Layout.cshtml"
|
#line 103 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(Html.ActionLink("Devices", MVC.Device.Index(), accesskey: "2"));
|
Write(Html.ActionLink("Devices", MVC.Device.Index(), accesskey: "2"));
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
@@ -684,7 +685,7 @@ WriteLiteral(">");
|
|||||||
WriteLiteral("</li>\r\n");
|
WriteLiteral("</li>\r\n");
|
||||||
|
|
||||||
|
|
||||||
#line 103 "..\..\Views\Shared\_Layout.cshtml"
|
#line 104 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -693,29 +694,30 @@ WriteLiteral("</li>\r\n");
|
|||||||
WriteLiteral(" ");
|
WriteLiteral(" ");
|
||||||
|
|
||||||
|
|
||||||
#line 104 "..\..\Views\Shared\_Layout.cshtml"
|
|
||||||
if (Authorization.HasAny(Claims.User.Search)){
|
|
||||||
|
|
||||||
|
|
||||||
#line default
|
|
||||||
#line hidden
|
|
||||||
WriteLiteral(" <li");
|
|
||||||
|
|
||||||
WriteAttribute("class", Tuple.Create(" class=\"", 6673), Tuple.Create("\"", 6759)
|
|
||||||
|
|
||||||
#line 105 "..\..\Views\Shared\_Layout.cshtml"
|
#line 105 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 6681), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.User.Name ? "active" : null
|
if (Authorization.HasAny(Claims.User.Search))
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 6681), false)
|
WriteLiteral(" <li");
|
||||||
|
|
||||||
|
WriteAttribute("class", Tuple.Create(" class=\"", 6692), Tuple.Create("\"", 6778)
|
||||||
|
|
||||||
|
#line 107 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
|
, Tuple.Create(Tuple.Create("", 6700), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.User.Name ? "active" : null
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
, 6700), false)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteLiteral(">");
|
WriteLiteral(">");
|
||||||
|
|
||||||
|
|
||||||
#line 105 "..\..\Views\Shared\_Layout.cshtml"
|
#line 107 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(Html.ActionLink("Users", MVC.User.Index(), accesskey: "3"));
|
Write(Html.ActionLink("Users", MVC.User.Index(), accesskey: "3"));
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
@@ -723,7 +725,7 @@ WriteLiteral(">");
|
|||||||
WriteLiteral("</li>\r\n");
|
WriteLiteral("</li>\r\n");
|
||||||
|
|
||||||
|
|
||||||
#line 106 "..\..\Views\Shared\_Layout.cshtml"
|
#line 108 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -731,21 +733,21 @@ WriteLiteral("</li>\r\n");
|
|||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral(" <li");
|
WriteLiteral(" <li");
|
||||||
|
|
||||||
WriteAttribute("class", Tuple.Create(" class=\"", 6873), Tuple.Create("\"", 6971)
|
WriteAttribute("class", Tuple.Create(" class=\"", 6892), Tuple.Create("\"", 6990)
|
||||||
, Tuple.Create(Tuple.Create("", 6881), Tuple.Create("moveRight", 6881), true)
|
, Tuple.Create(Tuple.Create("", 6900), Tuple.Create("moveRight", 6900), true)
|
||||||
|
|
||||||
#line 107 "..\..\Views\Shared\_Layout.cshtml"
|
#line 109 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 6890), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Public.Name ? " active" : null
|
, Tuple.Create(Tuple.Create("", 6909), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Public.Name ? " active" : null
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 6890), false)
|
, 6909), false)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteLiteral(">");
|
WriteLiteral(">");
|
||||||
|
|
||||||
|
|
||||||
#line 107 "..\..\Views\Shared\_Layout.cshtml"
|
#line 109 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(Html.ActionLink("Reports", MVC.Public.Public.Index()));
|
Write(Html.ActionLink("Reports", MVC.Public.Public.Index()));
|
||||||
|
|
||||||
|
|
||||||
@@ -754,13 +756,13 @@ WriteLiteral(">");
|
|||||||
WriteLiteral("</li>\r\n");
|
WriteLiteral("</li>\r\n");
|
||||||
|
|
||||||
|
|
||||||
#line 108 "..\..\Views\Shared\_Layout.cshtml"
|
#line 110 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 108 "..\..\Views\Shared\_Layout.cshtml"
|
#line 110 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
if (Authorization.Has(Claims.Config.Show))
|
if (Authorization.Has(Claims.Config.Show))
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -769,20 +771,20 @@ WriteLiteral("</li>\r\n");
|
|||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral(" <li");
|
WriteLiteral(" <li");
|
||||||
|
|
||||||
WriteAttribute("class", Tuple.Create(" class=\"", 7149), Tuple.Create("\"", 7237)
|
WriteAttribute("class", Tuple.Create(" class=\"", 7168), Tuple.Create("\"", 7256)
|
||||||
|
|
||||||
#line 110 "..\..\Views\Shared\_Layout.cshtml"
|
#line 112 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
, Tuple.Create(Tuple.Create("", 7157), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Config.Name ? "active" : null
|
, Tuple.Create(Tuple.Create("", 7176), Tuple.Create<System.Object, System.Int32>((string)ViewContext.ViewData["MenuArea"] == MVC.Config.Name ? "active" : null
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
, 7157), false)
|
, 7176), false)
|
||||||
);
|
);
|
||||||
|
|
||||||
WriteLiteral(">");
|
WriteLiteral(">");
|
||||||
|
|
||||||
|
|
||||||
#line 110 "..\..\Views\Shared\_Layout.cshtml"
|
#line 112 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(Html.ActionLink("Configuration", MVC.Config.Config.Index(), accesskey: "0"));
|
Write(Html.ActionLink("Configuration", MVC.Config.Config.Index(), accesskey: "0"));
|
||||||
|
|
||||||
|
|
||||||
@@ -791,7 +793,7 @@ WriteLiteral(">");
|
|||||||
WriteLiteral("</li>\r\n");
|
WriteLiteral("</li>\r\n");
|
||||||
|
|
||||||
|
|
||||||
#line 111 "..\..\Views\Shared\_Layout.cshtml"
|
#line 113 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -804,21 +806,21 @@ WriteLiteral(" id=\"headerMenu\"");
|
|||||||
WriteLiteral(">\r\n <span>");
|
WriteLiteral(">\r\n <span>");
|
||||||
|
|
||||||
|
|
||||||
#line 115 "..\..\Views\Shared\_Layout.cshtml"
|
#line 117 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
if (Authorization.Has(Claims.User.Show))
|
if (Authorization.Has(Claims.User.Show))
|
||||||
{
|
{
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 116 "..\..\Views\Shared\_Layout.cshtml"
|
#line 118 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(Html.ActionLink(CurrentUser.ToString(), MVC.User.Show(CurrentUser.Id)));
|
Write(Html.ActionLink(CurrentUser.ToString(), MVC.User.Show(CurrentUser.Id)));
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 116 "..\..\Views\Shared\_Layout.cshtml"
|
#line 118 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -826,14 +828,14 @@ WriteLiteral(">\r\n <span>");
|
|||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 118 "..\..\Views\Shared\_Layout.cshtml"
|
#line 120 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(CurrentUser.ToString());
|
Write(CurrentUser.ToString());
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 118 "..\..\Views\Shared\_Layout.cshtml"
|
#line 120 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
@@ -841,29 +843,31 @@ WriteLiteral(">\r\n <span>");
|
|||||||
WriteLiteral("</span>\r\n");
|
WriteLiteral("</span>\r\n");
|
||||||
|
|
||||||
|
|
||||||
#line 119 "..\..\Views\Shared\_Layout.cshtml"
|
#line 121 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 119 "..\..\Views\Shared\_Layout.cshtml"
|
#line 121 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
if (Authorization.HasAny(Claims.Job.Search, Claims.Device.Search, Claims.User.Search)){
|
if (Authorization.HasAny(Claims.Job.Search, Claims.Device.Search, Claims.User.Search))
|
||||||
using (Html.BeginForm(MVC.Search.Query(), FormMethod.Get))
|
|
||||||
{
|
{
|
||||||
|
using (Html.BeginForm(MVC.Search.Query(), FormMethod.Get))
|
||||||
|
{
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 121 "..\..\Views\Shared\_Layout.cshtml"
|
#line 124 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(Html.TextBox("term", null, new { id="SearchQuery", accesskey = "s", placeholder="Search" }));
|
Write(Html.TextBox("term", null, new { id = "SearchQuery", accesskey = "s", placeholder = "Search", data_quicksearchurl = Url.Action(MVC.API.Search.QuickQuery()) }));
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 121 "..\..\Views\Shared\_Layout.cshtml"
|
#line 124 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
@@ -875,7 +879,7 @@ WriteLiteral(" id=\"layout_PageHeading\"");
|
|||||||
WriteLiteral(">");
|
WriteLiteral(">");
|
||||||
|
|
||||||
|
|
||||||
#line 124 "..\..\Views\Shared\_Layout.cshtml"
|
#line 128 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(CommonHelpers.Breadcrumbs(ViewBag.Title ?? string.Empty));
|
Write(CommonHelpers.Breadcrumbs(ViewBag.Title ?? string.Empty));
|
||||||
|
|
||||||
|
|
||||||
@@ -890,7 +894,7 @@ WriteLiteral(">\r\n");
|
|||||||
WriteLiteral(" ");
|
WriteLiteral(" ");
|
||||||
|
|
||||||
|
|
||||||
#line 126 "..\..\Views\Shared\_Layout.cshtml"
|
#line 130 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(RenderBody());
|
Write(RenderBody());
|
||||||
|
|
||||||
|
|
||||||
@@ -899,7 +903,7 @@ WriteLiteral(" ");
|
|||||||
WriteLiteral("\r\n </section>\r\n <footer>\r\n Disco v");
|
WriteLiteral("\r\n </section>\r\n <footer>\r\n Disco v");
|
||||||
|
|
||||||
|
|
||||||
#line 129 "..\..\Views\Shared\_Layout.cshtml"
|
#line 133 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(Disco.Web.DiscoApplication.Version);
|
Write(Disco.Web.DiscoApplication.Version);
|
||||||
|
|
||||||
|
|
||||||
@@ -910,7 +914,7 @@ WriteLiteral(" ");
|
|||||||
WriteLiteral("@ ");
|
WriteLiteral("@ ");
|
||||||
|
|
||||||
|
|
||||||
#line 129 "..\..\Views\Shared\_Layout.cshtml"
|
#line 133 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(Disco.Web.DiscoApplication.OrganisationName);
|
Write(Disco.Web.DiscoApplication.OrganisationName);
|
||||||
|
|
||||||
|
|
||||||
@@ -920,7 +924,7 @@ WriteLiteral(" | <a\r\n href=\"https://discoict.com.au/\" target=
|
|||||||
"om.au</a> | ");
|
"om.au</a> | ");
|
||||||
|
|
||||||
|
|
||||||
#line 130 "..\..\Views\Shared\_Layout.cshtml"
|
#line 134 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(Html.ActionLink("Credits", MVC.Public.Public.Credits()));
|
Write(Html.ActionLink("Credits", MVC.Public.Public.Credits()));
|
||||||
|
|
||||||
|
|
||||||
@@ -929,7 +933,7 @@ WriteLiteral(" | <a\r\n href=\"https://discoict.com.au/\" target=
|
|||||||
WriteLiteral(" | ");
|
WriteLiteral(" | ");
|
||||||
|
|
||||||
|
|
||||||
#line 130 "..\..\Views\Shared\_Layout.cshtml"
|
#line 134 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Write(Html.ActionLink("Licence", MVC.Public.Public.Licence()));
|
Write(Html.ActionLink("Licence", MVC.Public.Public.Licence()));
|
||||||
|
|
||||||
|
|
||||||
@@ -938,13 +942,13 @@ WriteLiteral(" | ");
|
|||||||
WriteLiteral("\r\n </footer>\r\n </div>\r\n");
|
WriteLiteral("\r\n </footer>\r\n </div>\r\n");
|
||||||
|
|
||||||
|
|
||||||
#line 133 "..\..\Views\Shared\_Layout.cshtml"
|
#line 137 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
|
|
||||||
#line 133 "..\..\Views\Shared\_Layout.cshtml"
|
#line 137 "..\..\Views\Shared\_Layout.cshtml"
|
||||||
Disco.Services.Plugins.Features.UIExtension.UIExtensions.ExecuteExtensionResult(this);
|
Disco.Services.Plugins.Features.UIExtension.UIExtensions.ExecuteExtensionResult(this);
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@model IEnumerable<Disco.Models.BI.Search.UserSearchResultItem>
|
@model IEnumerable<Disco.Models.Services.Searching.UserSearchResultItem>
|
||||||
<div class="genericData userTable">
|
<div class="genericData userTable">
|
||||||
@if (Model != null && Model.Count() > 0)
|
@if (Model != null && Model.Count() > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.User
|
|||||||
using Disco;
|
using Disco;
|
||||||
using Disco.BI.Extensions;
|
using Disco.BI.Extensions;
|
||||||
using Disco.Models.Repository;
|
using Disco.Models.Repository;
|
||||||
|
using Disco.Services;
|
||||||
using Disco.Services.Authorization;
|
using Disco.Services.Authorization;
|
||||||
using Disco.Services.Web;
|
using Disco.Services.Web;
|
||||||
using Disco.Web;
|
using Disco.Web;
|
||||||
@@ -36,7 +37,7 @@ namespace Disco.Web.Views.User
|
|||||||
|
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
|
||||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/User/_UserTable.cshtml")]
|
[System.Web.WebPages.PageVirtualPathAttribute("~/Views/User/_UserTable.cshtml")]
|
||||||
public partial class UserTable : Disco.Services.Web.WebViewPage<IEnumerable<Disco.Models.BI.Search.UserSearchResultItem>>
|
public partial class UserTable : Disco.Services.Web.WebViewPage<IEnumerable<Disco.Models.Services.Searching.UserSearchResultItem>>
|
||||||
{
|
{
|
||||||
public UserTable()
|
public UserTable()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in new issue
Block a user