Provide necessary information for pager generation.
示例#1
0
        /// <summary>
        ///     Generate the entire HTML content for a pager renderling list.
        /// </summary>
        /// <returns>The entire HTML content for the generated pager.</returns>
        public IHtmlContent GeneratePager(PagerGenerationContext context)
        {
            // Hide Handling
            if (context.TotalPage <= 1 && context.Options.HideOnSinglePage)
            {
                return(new HtmlString(string.Empty));
            }

            var list = ListGenerator.GeneratePagerItems(context);

            // Reverse handling
            if (context.Options.IsReversed)
            {
                list = new PagerList(list.Items.Reverse());
            }

            var renderingList = RenderingListGenerator.GenerateRenderingList(list, context);
            var html          = HtmlGenerator.GeneratePager(renderingList, context);

            return(html);
        }
		/// <summary>
		///     Generate the entire HTML content for a pager renderling list.
		/// </summary>
		/// <returns>The entire HTML content for the generated pager.</returns>
		public IHtmlContent GeneratePager(PagerGenerationContext context)
		{
			// Hide Handling
			if (context.TotalPage <= 1 && context.Options.HideOnSinglePage)
			{
				return new HtmlString(string.Empty);
			}

			var list = ListGenerator.GeneratePagerItems(context);

			// Reverse handling
			if (context.Options.IsReversed)
			{
				list = new PagerList(list.Items.Reverse());
			}

			var renderingList = RenderingListGenerator.GenerateRenderingList(list, context);
			var html = HtmlGenerator.GeneratePager(renderingList, context);

			return html;
		}
 /// <summary>
 ///     Build a <see cref="PagerRenderingList" /> according to the <see cref="PagerGenerationContext" /> information.
 /// </summary>
 /// <param name="list">The <see cref="PagerList" /> which contains all pager items.</param>
 /// <param name="context">The <see cref="PagerGenerationContext" /> object which includes all the informations needed.</param>
 /// <returns>A <see cref="PagerRenderingList" /> object which represent as a list to ge displayed in the page.</returns>
 public PagerRenderingList GenerateRenderingList(PagerList list, PagerGenerationContext context)
 {
     return(GenerateRenderingListCore(list.Items, context));
 }
        /// <summary>
        ///     Generate a <see cref="PagerRenderingList" /> for a series of <see cref="PagerItem" />.
        /// </summary>
        /// <param name="items">The collection of <see cref="PagerItem" /> which are included in the list.</param>
        /// <param name="context">The generation context.</param>
        /// <returns>The generated <see cref="PagerRenderingList" /> instance.</returns>
        private PagerRenderingList GenerateRenderingListCore(IEnumerable <PagerItem> items, PagerGenerationContext context)
        {
            var optionsCache = new Dictionary <PagerItemType, PagerItemOptions>();

            var renderingItemList = new List <PagerRenderingItem>();

            // Owner
            var result = new PagerRenderingList
            {
                Settings = new Dictionary <string, string>(context.Options.AdditionalSettings)
            };

            foreach (var item in items)
            {
                PagerItemOptions itemOptions;

                // Try to get cached options, or create a new option instance
                if (!optionsCache.TryGetValue(item.ItemType, out itemOptions))
                {
                    itemOptions = context.Options.ItemOptions.GetMergedOptionsFor(item);
                    optionsCache[item.ItemType] = itemOptions;
                }

                // Generate item context
                var itemContext = new PagerItemGenerationContext(context, item, itemOptions);

                // Generate item and add to list
                var renderingItem = GenerateRenderingItem(result, itemContext);
                renderingItemList.Add(renderingItem);
            }

            // Result
            result.Items = new ReadOnlyCollection <PagerRenderingItem>(renderingItemList);
            return(result);
        }
        /// <summary>
        ///     Generate a <see cref="PagerList" />.
        /// </summary>
        /// <param name="context">The pager generation context.</param>
        /// <returns>A <see cref="PagerList" /> generated for the pager.</returns>
        public PagerList GeneratePagerItems(PagerGenerationContext context)
        {
            var items = GeneratePagerItemsCore(context.CurrentPage, context.TotalPage, context.Options);

            return(new PagerList(items));
        }
示例#6
0
 /// <summary>
 ///     Generate the entire HTML content for a pager renderling list.
 /// </summary>
 /// <param name="list">The rendering list to be generating.</param>
 /// <param name="context">The pager generation context.</param>
 /// <returns>The entire HTML content for the generated pager.</returns>
 public IHtmlContent GeneratePager(PagerRenderingList list, PagerGenerationContext context)
 {
     return(GeneratePagerCore(list, context.GenerationMode == PagerGenerationMode.Full));
 }
示例#7
0
		/// <summary>
		///     Synchronously executes the <see cref="TagHelper" /> with the given <paramref name="context" /> and
		///     <paramref name="output" />.
		/// </summary>
		/// <param name="context">Contains information associated with the current HTML tag.</param>
		/// <param name="output">A stateful HTML element used to generate an HTML tag.</param>
		public override void Process(TagHelperContext context, TagHelperOutput output)
		{
			// State check
			if (output.TagMode != TagMode.SelfClosing)
			{
				throw new InvalidOperationException($"The '{HtmlTagName}' tag must use self closing mode.");
			}

			// Get information and build up context
			var generator = GetRealGenerator(context);
			var options = GetRealOptions(context);
			CheckOptions(options);

			int currentPage, totalPage;
			GetPagingInfo(context, out currentPage, out totalPage);

			var pagerContext = new PagerGenerationContext(currentPage, totalPage, options, ViewContext, GenerationMode);

			// Generate result
			var result = generator.GeneratePager(pagerContext);

			// Disable default element output
			output.SuppressOutput();

			// Append pager content
			output.PostElement.AppendHtml(result);
		}
		/// <summary>
		///     Build a <see cref="PagerRenderingList" /> according to the <see cref="PagerGenerationContext" /> information.
		/// </summary>
		/// <param name="list">The <see cref="PagerList" /> which contains all pager items.</param>
		/// <param name="context">The <see cref="PagerGenerationContext" /> object which includes all the informations needed.</param>
		/// <returns>A <see cref="PagerRenderingList" /> object which represent as a list to ge displayed in the page.</returns>
		public PagerRenderingList GenerateRenderingList(PagerList list, PagerGenerationContext context)
		{
			return GenerateRenderingListCore(list.Items, context);
		}
		/// <summary>
		///     Generate a <see cref="PagerRenderingList" /> for a series of <see cref="PagerItem" />.
		/// </summary>
		/// <param name="items">The collection of <see cref="PagerItem" /> which are included in the list.</param>
		/// <param name="context">The generation context.</param>
		/// <returns>The generated <see cref="PagerRenderingList" /> instance.</returns>
		private PagerRenderingList GenerateRenderingListCore(IEnumerable<PagerItem> items, PagerGenerationContext context)
		{
			var optionsCache = new Dictionary<PagerItemType, PagerItemOptions>();

			var renderingItemList = new List<PagerRenderingItem>();

			// Owner
			var result = new PagerRenderingList
			{
				Settings = new Dictionary<string, string>(context.Options.AdditionalSettings)
			};

			foreach (var item in items)
			{
				PagerItemOptions itemOptions;

				// Try to get cached options, or create a new option instance
				if (!optionsCache.TryGetValue(item.ItemType, out itemOptions))
				{
					itemOptions = context.Options.ItemOptions.GetMergedOptionsFor(item);
					optionsCache[item.ItemType] = itemOptions;
				}

				// Generate item context
				var itemContext = new PagerItemGenerationContext(context, item, itemOptions);

				// Generate item and add to list
				var renderingItem = GenerateRenderingItem(result, itemContext);
				renderingItemList.Add(renderingItem);
			}

			// Result
			result.Items = new ReadOnlyCollection<PagerRenderingItem>(renderingItemList);
			return result;
		}
		/// <summary>
		///     Generate a <see cref="PagerList" />.
		/// </summary>
		/// <param name="context">The pager generation context.</param>
		/// <returns>A <see cref="PagerList" /> generated for the pager.</returns>
		public PagerList GeneratePagerItems(PagerGenerationContext context)
		{
			var items = GeneratePagerItemsCore(context.CurrentPage, context.TotalPage, context.Options);

			return new PagerList(items);
		}