Esempio n. 1
0
            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]
                });
            }
Esempio n. 2
0
                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!");
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
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);
        }