public void Init()
		{
			diggComponent = new DiggStylePagination();

			singlePage = new Page(new string[] {"a", "b", "c"}, 1, 4, 1);
			secondPageOfThree = new Page(new string[] {"a", "b", "c", "d"}, 2, 4, 10);
		}
예제 #2
0
        public override void Render()
        {
            IEnumerable source = ComponentParams["source"] as IEnumerable;

            if (source == null)
            {
                throw new ViewComponentException(
                          "The grid requires a view component parameter named 'source' which should contain 'IEnumerable' instance");
            }

            ShowStartTable();
            ShowHeader(source);

            ShowRows(source);

            ShowFooter();
            ShowEndTable();

            IPaginatedPage page = source as IPaginatedPage;

            if (page != null)
            {
                ShowPagination(page);
            }
        }
예제 #3
0
        public void TestExpectedResultForMiddlePageWithSingleItemPage()
        {
            IList sampleData = GetSampleListData();

            int currentPageIndex = 3;
            int pageSize         = 1;

            IPaginatedPage page = CreateAbstractPageWithSampleData(sampleData, currentPageIndex, pageSize);

            Assert.AreEqual(currentPageIndex, page.CurrentPageIndex);
            Assert.AreEqual(sampleData.Count, page.TotalPages);
            Assert.IsTrue(page.HasPreviousPage);
            Assert.IsTrue(page.HasNextPage);
            Assert.AreEqual(currentPageIndex + 1, page.NextPageIndex);
            Assert.AreEqual(currentPageIndex - 1, page.PreviousPageIndex);
            Assert.AreEqual(3, page.FirstItemIndex);
            Assert.AreEqual(3, page.LastItemIndex);
            Assert.AreEqual(sampleData.Count, page.TotalItems);
            Assert.AreEqual(pageSize, page.PageSize);
            Assert.AreEqual(page.FirstItem, page.LastItem);
            Assert.AreEqual("three", page.FirstItem);
            Assert.AreEqual(1, page.CurrentPageSize);

            AssertHasPageIsTrueBetween(page, 1, sampleData.Count, -1, sampleData.Count + 2);
            AssertGetEnumeratorItterateOverExpectedValues(page, "three");
        }
예제 #4
0
        private void ShowPagination(IPaginatedPage page)
        {
            if (Context.HasSection("pagination"))
            {
                Context.RenderSection("pagination");
                return;
            }
            PaginationHelper paginationHelper = (PaginationHelper)Context.ContextVars["PaginationHelper"];
            StringWriter     output           = new StringWriter();

            output.Write(@"<div class='pagination'><span class='paginationLeft'>
Showing {0} - {1} of {2} 
</span><span class='paginationRight'>",
                         page.FirstItem, page.LastItem, page.TotalItems);
            if (page.HasFirst)
            {
                CreateLink(output, paginationHelper, 1, "first");
            }
            else
            {
                output.Write("first");
            }

            output.Write(" | ");
            if (page.HasPrevious)
            {
                CreateLink(output, paginationHelper, page.PreviousIndex, "prev");
            }
            else
            {
                output.Write("prev");
            }

            output.Write(" | ");
            if (page.HasNext)
            {
                CreateLink(output, paginationHelper, page.NextIndex, "next");
            }
            else
            {
                output.Write("next");
            }

            output.Write(" | ");
            if (page.HasLast)
            {
                CreateLink(output, paginationHelper, page.LastIndex, "last");
            }
            else
            {
                output.Write("last");
            }

            output.Write(@"</span></div>");

            RenderText(output.ToString());
        }
		public void Init()
		{
			diggComponent = new DiggStylePagination();

			singlePage = new Page(new[] {"a", "b", "c"}, 1, 4, 1);
			secondPageOfThree = new Page(new[] {"a", "b", "c", "d"}, 2, 4, 10);
			fifthPageOfTwelve = new Page(new[] {"e"}, 5, 1, 12);
			BuildEngineContext("area", "controller", "action");
		}
예제 #6
0
        public void Init()
        {
            diggComponent = new DiggStylePagination();

            singlePage        = new Page(new[] { "a", "b", "c" }, 1, 4, 1);
            secondPageOfThree = new Page(new[] { "a", "b", "c", "d" }, 2, 4, 10);
            fifthPageOfTwelve = new Page(new[] { "e" }, 5, 1, 12);
            BuildEngineContext("area", "controller", "action");
        }
예제 #7
0
        public void Init()
        {
            component = new SelectStylePagination();

            emptyPage         = new Page(new string[0], 1, 10, 0);
            singlePage        = new Page(new[] { "a", "b", "c" }, 1, 4, 1);
            secondPageOfThree = new Page(new[] { "a", "b", "c", "d" }, 2, 4, 10);

            BuildEngineContext("area", "controller", "action");
        }
		public void Init()
		{
			component = new SelectStylePagination();

			emptyPage = new Page(new string[0], 1, 10, 0);
			singlePage = new Page(new string[] { "a", "b", "c" }, 1, 4, 1);
			secondPageOfThree = new Page(new string[] { "a", "b", "c", "d" }, 2, 4, 10);

			BuildEngineContext("area", "controller", "action");
		}
예제 #9
0
        protected static void AssertGetEnumeratorItterateOverExpectedValues(IPaginatedPage page, params string[] values)
        {
            int currentPageIndex = 0;

            foreach (string value in page)
            {
                Assert.AreEqual(values[currentPageIndex], value);
                ++currentPageIndex;
            }
        }
예제 #10
0
        public void CustomPaginationForGenericCollection()
        {
            IList <string> items = new List <string> {
                "1", "2", "3"
            };

            /* First page */

            IPaginatedPage page = PaginationHelper.CreateCustomPage(items, 3, 1, 8);

            Assert.IsNotNull(page);

            Assert.AreEqual(1, page.FirstItemIndex);
            Assert.AreEqual(3, page.LastItemIndex);
            Assert.AreEqual(8, page.TotalItems);

            Assert.IsTrue(page.HasNextPage);
            Assert.IsFalse(page.HasPreviousPage);

            /* Second page */
            items.Clear();
            items.Add("4");
            items.Add("5");
            items.Add("6");

            page = PaginationHelper.CreateCustomPage(items, 3, 2, 8);

            Assert.IsNotNull(page);

            Assert.AreEqual(4, page.FirstItemIndex);
            Assert.AreEqual(6, page.LastItemIndex);
            Assert.AreEqual(8, page.TotalItems);

            Assert.IsTrue(page.HasNextPage);
            Assert.IsTrue(page.HasPreviousPage);

            /* Third page, partial */
            items.Clear();
            items.Add("7");
            items.Add("8");

            page = PaginationHelper.CreateCustomPage(items, 3, 3, 8);

            Assert.IsNotNull(page);

            Assert.AreEqual(7, page.FirstItemIndex);
            Assert.AreEqual(8, page.LastItemIndex);
            Assert.AreEqual(8, page.TotalItems);

            Assert.IsFalse(page.HasNextPage);
            Assert.IsTrue(page.HasPreviousPage);
        }
예제 #11
0
        public void PagingAndRepeater(int id)
        {
            var          repos = new BirdRepository();
            IList <Bird> birds = repos.GetBirds();

            IPaginatedPage items =
                PaginationHelper.CreatePagination(
                    birds, // list
                    10,    // number of items per page
                    id
                    );

            PropertyBag["items"] = items;
        }
예제 #12
0
 private static void AssertHasPageIsTrueBetween(IPaginatedPage page, int firstPageIndex, int lastPageIndex,
                                                int rangeLowerBound, int rangeUpperBound)
 {
     for (int i = rangeLowerBound, max = rangeUpperBound; i < max; ++i)
     {
         if (i < firstPageIndex || i > lastPageIndex)
         {
             Assert.IsFalse(page.HasPage(i), "expecting false for HasPage({0})", i);
         }
         else
         {
             Assert.IsTrue(page.HasPage(i), "expecting true for HasPage({0})", i);
         }
     }
 }
예제 #13
0
        public void UsageWithGenerics()
        {
            IList <int> items = new List <int>();

            for (var i = 1; i <= 15; i++)
            {
                items.Add(i);
            }

            // First page

            IPaginatedPage page = PaginationHelper.CreatePagination(items, 5, 1);

            Assert.IsNotNull(page);

            Assert.AreEqual(1, page.FirstItemIndex);
            Assert.AreEqual(5, page.LastItemIndex);
            Assert.AreEqual(15, page.TotalItems);

            Assert.IsTrue(page.HasNextPage);
            Assert.IsFalse(page.HasPreviousPage);

            // Second page

            page = PaginationHelper.CreatePagination(items, 5, 2);

            Assert.IsNotNull(page);

            Assert.AreEqual(6, page.FirstItemIndex);
            Assert.AreEqual(10, page.LastItemIndex);
            Assert.AreEqual(15, page.TotalItems);

            Assert.IsTrue(page.HasNextPage);
            Assert.IsTrue(page.HasPreviousPage);

            // Last page

            page = PaginationHelper.CreatePagination(items, 5, 3);

            Assert.IsNotNull(page);

            Assert.AreEqual(11, page.FirstItemIndex);
            Assert.AreEqual(15, page.LastItemIndex);
            Assert.AreEqual(15, page.TotalItems);
            Assert.IsFalse(page.HasNextPage);
            Assert.IsTrue(page.HasPreviousPage);
        }
예제 #14
0
        public string Show(IPaginatedPage collection)
        {
            PaginationHelper paginationHelper = new PaginationHelper();
            paginationHelper.SetController(Controller);

            StringBuilder result = new StringBuilder();
            result.AppendFormat("<div class=\"pagination\"><span class=\"pagination-resume\">Showing {0} - {1} of {2}</span>", collection.FirstItem, collection.LastItem, collection.TotalItems);
            if (collection.TotalItems >= collection.PageSize)
            {
                result.Append("<span class=\"pagination-links\">");

                if (collection.HasFirst)
                    result.Append(paginationHelper.CreatePageLinkWithCurrentQueryString(1, "first", null));
                else
                    result.Append("first");

                if (collection.HasPrevious)
                {
                    result.Append(" | ");
                    result.Append(paginationHelper.CreatePageLinkWithCurrentQueryString(collection.PreviousIndex, "prev", null));
                }
                else
                    result.Append(" | prev");

                if (collection.HasNext)
                {
                    result.Append(" | ");
                    result.Append(paginationHelper.CreatePageLinkWithCurrentQueryString(collection.NextIndex, "next", null));
                }
                else
                    result.Append(" | next");

                if (collection.HasLast)
                {
                    result.Append(" | ");
                    result.Append(paginationHelper.CreatePageLinkWithCurrentQueryString(collection.LastIndex, "last", null));
                }
                else
                    result.Append(" | last");

                result.Append("</span>");
            }

            result.Append("</div>");
            return result.ToString();
        }
예제 #15
0
        public void TestExpectedResultForFirstPageWithTwoItemPerPage()
        {
            IList sampleData = GetSampleListData();

            int currentPageIndex = 1;
            int pageSize         = 2;

            IPaginatedPage page = CreateAbstractPageWithSampleData(sampleData, currentPageIndex, pageSize);

            AssertIsOnFirstPageHavingMultiplePages(page);
            Assert.AreEqual(currentPageIndex + 1, page.NextPageIndex);
            Assert.AreEqual(currentPageIndex - 1, page.PreviousPageIndex);
            Assert.AreEqual(2, page.CurrentPageSize);
            AssertGetEnumeratorItterateOverExpectedValues(page, "one", "two");

            Assert.IsNotNull(page.FirstItem);
            Assert.IsNotNull(page.LastItem);
        }
예제 #16
0
        public void TestExpectedResultForMiddlePageWithTwoItemPerPageForGenericPage()
        {
            IList sampleData = GetSampleListData();

            int currentPageIndex = 2;
            int pageSize         = 2;

            IPaginatedPage <string> page = CreateGenericCustomPageWithSampleData(sampleData, currentPageIndex, pageSize);

            Assert.AreEqual(4, page.LastItemIndex);
            Assert.AreEqual(currentPageIndex + 1, page.NextPageIndex);
            Assert.AreEqual(currentPageIndex - 1, page.PreviousPageIndex);
            Assert.AreEqual(2, page.CurrentPageSize);
            AssertGetEnumeratorItterateOverExpectedValues(page, "three", "four");

            Assert.IsNotNull(page.FirstItem);
            Assert.IsNotNull(page.LastItem);
            Assert.AreEqual("three", page.FirstItem);
            Assert.AreEqual("four", page.LastItem);
        }
		private static void AssertIsOnLastPageHavingMultiplePages(IPaginatedPage page)
		{
			Assert.IsTrue(page.HasPreviousPage);
			Assert.IsFalse(page.HasNextPage);
			Assert.AreEqual(page.TotalPages, page.CurrentPageIndex);
		}
		private static void AssertHasPageIsTrueBetween(IPaginatedPage page, int firstPageIndex, int lastPageIndex,
			int rangeLowerBound, int rangeUpperBound)
		{
			for (int i = rangeLowerBound, max = rangeUpperBound; i < max; ++i)
			{
				if (i < firstPageIndex || i > lastPageIndex)
				{
					Assert.IsFalse(page.HasPage(i), "expecting false for HasPage({0})", i);
				}
				else
				{
					Assert.IsTrue(page.HasPage(i), "expecting true for HasPage({0})", i);
				}
			}
		}
		protected static void AssertGetEnumeratorItterateOverExpectedValues(IPaginatedPage page, params string[] values)
		{
			int currentPageIndex = 0;

			foreach (string value in page)
			{
				Assert.AreEqual(values[currentPageIndex], value);
				++currentPageIndex;
			}
		}
예제 #20
0
 private static void AssertIsOnLastPageHavingMultiplePages(IPaginatedPage page)
 {
     Assert.IsTrue(page.HasPreviousPage);
     Assert.IsFalse(page.HasNextPage);
     Assert.AreEqual(page.TotalPages, page.CurrentPageIndex);
 }
예제 #21
0
        private void ShowPagination(IPaginatedPage page)
        {
            if (Context.HasSection("pagination"))
            {
                Context.RenderSection("pagination");
                return;
            }
            PaginationHelper paginationHelper = (PaginationHelper) Context.ContextVars["PaginationHelper"];
            StringWriter output = new StringWriter();
            output.Write(
                @"<div class='pagination'><span class='paginationLeft'>
                Showing {0} - {1} of {2}</span><span class='paginationRight'>",
                page.FirstItem, page.LastItem, page.TotalItems);
            if (page.HasFirst)
                CreateLink(output, paginationHelper, 1, "first");
            else
                output.Write("first");

            output.Write(" | ");
            if (page.HasPrevious)
                CreateLink(output, paginationHelper, page.PreviousIndex, "prev");
            else
                output.Write("prev");

            output.Write(" | ");
            if (page.HasNext)
                CreateLink(output, paginationHelper, page.NextIndex, "next");
            else
                output.Write("next");

            output.Write(" | ");
            if (page.HasLast)
                CreateLink(output, paginationHelper, page.LastIndex, "last");
            else
                output.Write("last");

            output.Write(@"</span></div>");

            RenderText(output.ToString());
        }