public object ToJson(int TotalRecord, int PageSize) { this.TotalRecords = TotalRecords; string[] tt; if (!string.IsNullOrEmpty(DefaultSort)) { tt = DefaultSort.Split(new char[] { ',' }); tt = tt[0].Split(new char[] { ' ' }); if (tt.Length == 1) { tt = new string[] { tt[0], "" }; } } else { tt = new string[2]; tt[0] = ""; tt[1] = ""; } int TotalPages = NetTalk.Common.Pager.NetTalkPager.CalculatePageCount(TotalRecord, PageSize); return(new { Title = Title, Html = this.ToHtml(), Columns = this.Columns.ToString(), TotalRecords = TotalRecord, TotalPages = TotalPages, SortF = tt[0], SortD = tt[1] }); }
public override Filter Clone(FilterCloning fc) { DefaultSort o = new DefaultSort(); o.SortDefault = (Sort)fc.CloneUnique(SortDefault); if (SortOverride != null) { o.SortOverride = (Sort)SortOverride.Clone(fc); } return(o); }
public void DefaultSortMethodSortsProperFirstByScoreSecondByName() { DefaultSort sorter = new DefaultSort(); IPlayer first = new Player("Ivan", 2); IPlayer second = new Player("Angel", 1); IPlayer third = new Player("Angus", 1); IList <IPlayer> inputPlayers = new List <IPlayer> { first, third, second }; IList <IPlayer> expectedPlayers = new List <IPlayer> { first, second, third }; IList <IPlayer> actualPlayers = sorter.Sort(inputPlayers); Assert.IsTrue(expectedPlayers.SequenceEqual(actualPlayers), "The expected and the result lists of sorted Players are NOT equal!"); }
public override bool Simplify(ref bool dirty) { Filter previous = null; int i = 0; DefaultSort ds = null; while (i != filters.Count) { var f = filters[i]; if (f is Multi) { //merge sub multifilters into ourself dirty = true; filters.RemoveAt(i); var mf = (Multi)f; filters.InsertRange(i, mf.filters); mf.filters.Clear(); } else if (f.Simplify(ref dirty)) { //must remove it dirty = true; filters.RemoveAt(i); } else if (f == previous) { //remove duplicated dirty = true; filters.RemoveAt(i); } else if (f is DefaultSort) { //there should only be 1 DefaultSort and must be at the end //if not last, remove it if (i < filters.Count - 1) { ds = (DefaultSort)f; filters.RemoveAt(i); } else { previous = f; ++i; } } else { previous = f; ++i; } } if (ds != null) { if (!(filters[filters.Count - 1] is DefaultSort)) { filters.Add(ds); } } return(filters.Count == 0); }
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { if (string.IsNullOrWhiteSpace(Sort)) { throw new InvalidOperationException("Sort must be not null"); } if (Options == null) { Options = new SortOptions(); } bool active = false; var sort = Sort.Trim(); EOrder?order = null; var defaultSort = DefaultSort?.Trim(); var defaultOrder = DefaultOrder; var request = ViewContext.HttpContext.Request; var routeValues = request.Query.ToRouteValueDictionary(); if (string.IsNullOrEmpty(defaultSort)) { var routeSort = routeValues .FirstOrDefault(x => x.Key.Equals(Options.SortRouteParamName, StringComparison.OrdinalIgnoreCase)) .Value? .ToString(); if (routeSort != null) { active = SortEquals(routeSort, sort); } } else { active = SortEquals(defaultSort, sort); } if (defaultOrder == null) { if (active == true) { var routeOrder = routeValues .FirstOrDefault(x => x.Key.Equals(Options.OrderRouteParamName, StringComparison.OrdinalIgnoreCase)) .Value? .ToString(); if (routeOrder != null) { if (Enum.TryParse(routeOrder, out EOrder routeOrderValue)) { order = routeOrderValue; } } } } else { if (SortEquals(defaultSort, sort) == true) { order = (EOrder)defaultOrder; } } routeValues.Remove(Options.SortRouteParamName); routeValues.Remove(Options.OrderRouteParamName); routeValues.Add(Options.SortRouteParamName, sort); routeValues.Add(Options.OrderRouteParamName, GetOrderRouteValue(order)); string action = ViewContext.RouteData.Values["action"].ToString(); string controller = ViewContext.RouteData.Values["controller"].ToString(); var htmlEncoder = HtmlEncoder.Create(UnicodeRanges.All); var content = (await output.GetChildContentAsync(htmlEncoder)).GetContent(); TagBuilder a = new TagBuilder("a"); a.AddCssClass(Options.LinkCssCLass); a.AddCssClass(order.ToString().ToLower()); if (active) { a.AddCssClass(Options.ActiveCssClass); } a.Attributes.Add("href", _urlHelper.Action(action, controller, routeValues)); a.InnerHtml.Append(content); output.Content.SetHtmlContent(a); }