/// <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)); }
/// <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)); }
/// <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); }