private IEnumerable <TabEntryDto> GetEntries( DeviceConfig config, PaginationRequest pagination, SortRequest sort, IEnumerable <AdvancedFilterRequest> filter, string tabSelector) { var actionDefs = _configHandler.GetActions(config.Actions).AsQueryable() .Where(x => string.Equals(x.Tab, tabSelector, StringComparison.Ordinal)); var entries = actionDefs.Select(x => new TabEntryDto { ListUi = x }); foreach (var f in filter) { TabEntryFilter.AddFilter(ref entries, f.FilterBy, f.FilterString, f.FilterExcluding); } TabEntryFilter.AddSort(ref entries, sort.SortBy, sort.SortOrderAscending); List <TabEntryDto> list; if (pagination.PageNumber > 0 && pagination.PageSize > 0) { list = entries.ToPagedList(pagination.PageNumber, pagination.PageSize); } else { list = entries.ToList(); } return(list); }
public void SingleSortTest() { var request = new SortRequest { Sorts = new ISort[] { new Sort { Field = nameof(Track.Name), Direction = SortDirection.Ascending } } }; using (var dbContext = new TestDataContext()) { var items = dbContext.Tracks.ToList(); var queryable = dbContext.Tracks.Sort(request); var sql = ""; // ((DbSet<Track>)queryable).Sql; var sorted = queryable.ToList(); Debug.WriteLine(sql); Assert.AreEqual(items.Count, sorted.Count); Assert.AreNotEqual(items[0].Name, sorted[0].Name); Assert.AreEqual("\"40\"", sorted[0].Name); } }
public void SortTest() { var request = new SortRequest { Sorts = new ISort[] { new Sort { Field = nameof(Student.LastName), Direction = SortDirection.Ascending }, new Sort { Field = nameof(Student.FirstName), Direction = SortDirection.Ascending } } }; using (var dbContext = new TestDataContext()) { var items = dbContext.Students.ToList(); var sorted = dbContext.Students.Sort(request).ToList(); Assert.AreEqual(items.Count, sorted.Count); Assert.AreNotEqual(items.First().LastName, sorted.First().LastName); Assert.AreEqual("Leonard", sorted.First().FirstName); } }
private IEnumerable <TabEntryDto> GetActionsTab(DeviceConfig config, PaginationRequest pagination, SortRequest sort, IEnumerable <AdvancedFilterRequest> filter) { if (string.IsNullOrEmpty(sort.SortBy)) { sort.SortBy = "name"; } return(GetEntries(config, pagination, sort, filter, "actions")); }
public Dictionary <DeviceId, IEnumerable <JobEntryDto> > GetAllJobs(SortRequest sort, IList <AdvancedFilterRequest> filterRequest) { var allDeviceIds = _persistenceProvider.GetAllDeviceIds().ToList(); var data = new Dictionary <DeviceId, IEnumerable <JobEntryDto> >(); foreach (var deviceId in allDeviceIds) { data[deviceId] = GetJobs(deviceId, null, sort, filterRequest); } return(data); }
public void MultiSortTest() { var request = new SortRequest { Sorts = new Sort[] { new Sort { Direction = SortDirection.Ascending, Field = nameof(Track.AlbumId) }, new Sort { Direction = SortDirection.Descending, Field = nameof(Track.Bytes) } } }; using (var dbContext = new TestDataContext()) { var items = dbContext.Tracks .Include(x => x.Album) .ToList(); var queryable = dbContext.Tracks.Sort(request); var sql = ""; // ((DbQuery<Track>)queryable).Sql; var sorted = queryable.ToList(); Debug.WriteLine(sql); Assert.AreEqual(items.Count, sorted.Count); var albumId = int.MinValue; foreach (var album in sorted.GroupBy(x => x.AlbumId)) { Assert.IsFalse(albumId > album.Key); albumId = album.Key; var bytes = decimal.MaxValue; foreach (var track in album) { Assert.IsFalse(bytes < track.Bytes); bytes = track.Bytes; } } } }
private void HandleSortChange(object s, PropertyChangedEventArgs e) { var sender = (SortRequest <Ship>)s; if (sortMode.Last() != sender && sender.SortKey == _builtinSorts[0]) { sortMode.Remove(sender); sender.PropertyChanged -= HandleSortChange; } if (sortMode.Last().SortKey != _builtinSorts[0]) { var defSort = new SortRequest <Ship>(this) { SortKey = _builtinSorts[0] }; defSort.PropertyChanged += HandleSortChange; sortMode.Add(defSort); } RaiseMultiPropertyChanged(nameof(ShipSortMode)); }
public IEnumerable <TabEntryDto> GetTab(DeviceId deviceId, string tab, PaginationRequest pagination, SortRequest sort, IEnumerable <AdvancedFilterRequest> filter) { var config = _configHandler.GetDeviceConfig(deviceId); switch (tab) { case "dashboard": return(GetJobsTab(config, pagination, sort, filter)); case "actions": return(GetActionsTab(config, pagination, sort, filter)); case "livedata": return(GetValuesTab(config, pagination, sort, filter)); default: throw new UnknownKeyException(); } }
private IEnumerable <TabEntryDto> GetJobsTab(DeviceConfig config, PaginationRequest pagination, SortRequest sort, IEnumerable <AdvancedFilterRequest> filterRequest) { var jobs = _messageHandler.GetJobs(config) .AsQueryable() .Cast <Job>(); foreach (var filter in filterRequest) { JobFilter.AddFilter(ref jobs, filter.FilterBy, filter.FilterString, filter.FilterExcluding); } JobFilter.AddJobSort(ref jobs, sort.SortBy, sort.SortOrderAscending); //FIXME -> Pagination in Watch implementieren ! //Momentan für Watch -> limit 10 Jobs !!! if (config.DeviceId.DeviceName == "B") { pagination.PageSize = 10; jobs = jobs.Where(x => x.Status != JobStatus.Done); } //END FIXME List <Job> list; if (pagination.PageNumber > 0 && pagination.PageSize > 0) { list = jobs.ToPagedList(pagination.PageNumber, pagination.PageSize); } else { list = jobs.ToList(); } // return list.Select(x => new TabEntryDto { Entry = x }); var actionDefs = _configHandler.GetActions(config.Actions); var actionEntries = actionDefs.Select(x => new TabEntryDto { ListUi = x }) .Where(x => string.Equals(x.ListUi.Tab, "dashboard", StringComparison.Ordinal)) .OrderBy(x => x.ListUi.Id).ToList(); var jobEntries = list.Select(x => new TabEntryDto { Entry = x }).ToList(); jobEntries.AddRange(actionEntries); return(jobEntries); }
private IEnumerable <TabEntryDto> GetValuesTab(DeviceConfig config, PaginationRequest pagination, SortRequest sort, IEnumerable <AdvancedFilterRequest> filter) { return(GetEntries(config, pagination, sort, filter, "livedata")); }
/// <summary> /// 排序 /// </summary> /// <typeparam name="TSource">查询对象的类型</typeparam> /// <param name="source">原始查询</param> /// <param name="sortRequest">排序请求</param> /// <returns>排序后的查询</returns> public static IQueryable <TSource> OrderBy <TSource>(this IQueryable <TSource> source, SortRequest sortRequest) { if (source == null) { throw new ArgumentNullException(nameof(source)); } if (sortRequest == null) { throw new ArgumentNullException(nameof(sortRequest)); } var result = source; if (!string.IsNullOrEmpty(sortRequest.Ordering)) { result = source.OrderBy(sortRequest.Ordering); } return(result); }
public IEnumerable <JobEntryDto> GetJobs(DeviceId deviceId, PaginationRequest pagination, SortRequest sort, IEnumerable <AdvancedFilterRequest> filterRequest) { var config = _configHandler.GetDeviceConfig(deviceId); var jobs = _messageHandler.GetJobs(config) .AsQueryable() .Cast <Job>(); foreach (var filter in filterRequest) { JobFilter.AddFilter(ref jobs, filter.FilterBy, filter.FilterString, filter.FilterExcluding); } JobFilter.AddJobSort(ref jobs, sort.SortBy, sort.SortOrderAscending); //FIXME -> Pagination in Watch implementieren ! //Momentan für Watch -> limit 10 Jobs !!! // if (config.DeviceId.DeviceName == "B") // { // if (pagination == null) // { // pagination = new PaginationRequest(); // } // pagination.PageSize = 10; // jobs = jobs.Where(x => x.Status != JobStatus.Done); // } //END FIXME List <Job> list; if (pagination != null && pagination.PageNumber > 0 && pagination.PageSize > 0) { list = jobs.ToPagedList(pagination.PageNumber, pagination.PageSize); } else { list = jobs.ToList(); } var uiLayouts = _configHandler.GetUiLayouts(); return(list.Select(x => new JobEntryDto() { Entry = x, Ui = uiLayouts.FirstOrDefault(y => y.Id == x.Name) })); }
public ActionResult <List <string[]> > GeneticAlgorithm( [FromServices] SorterService <GeneticAlgorithm <string>, string> geneticAlgorithm, SortRequest <string> sortRequest) { return(geneticAlgorithm.SortMatrix(sortRequest.Matrix.ToArray()).ToList()); }
public ActionResult <List <string[]> > SimulatedAnnealing( [FromServices] SorterService <SimulatedAnnealing <string>, string> simulatedAnnealing, SortRequest <string> sortRequest) { return(simulatedAnnealing.SortMatrix(sortRequest.Matrix.ToArray()).ToList()); }
public ActionResult <List <string[]> > NaiveSearch([FromServices] SorterService <NaiveSearch <string>, string> naiveSearch, SortRequest <string> sortRequest) { return(naiveSearch.SortMatrix(sortRequest.Matrix.ToArray()).ToList()); }