Created
January 2, 2020 11:39
-
-
Save jspuij/8a8324826ae4dc41811073da5ed457f9 to your computer and use it in GitHub Desktop.
Example of Weaved component
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Cortex.Net.BlazorTodo.Components.TodoOverview | |
using Cortex.Net; | |
using Cortex.Net.Blazor; | |
using Cortex.Net.BlazorTodo; | |
using Cortex.Net.BlazorTodo.Components; | |
using Cortex.Net.BlazorTodo.Models; | |
using Cortex.Net.BlazorTodo.Stores; | |
using Microsoft.AspNetCore.Components; | |
using Microsoft.AspNetCore.Components.CompilerServices; | |
using Microsoft.AspNetCore.Components.Rendering; | |
using System; | |
using System.Collections.Generic; | |
using System.Diagnostics; | |
using System.Linq; | |
using System.Runtime.CompilerServices; | |
[Observer] | |
public class TodoOverview : ComponentBase, IReactiveObject | |
{ | |
[CompilerGenerated] | |
[DebuggerBrowsable(DebuggerBrowsableState.Never)] | |
private ObserverObject cortex_Net_H90skjHYJKq9_ObserverObject; | |
[CompilerGenerated] | |
[DebuggerBrowsable(DebuggerBrowsableState.Never)] | |
private int cortex_Net_Fvclsnf97SxcMxlkizajkz_BuildRenderTree_EntranceCount; | |
[Inject] | |
private ViewStore ViewStore | |
{ | |
get; | |
set; | |
} | |
[Inject] | |
private TodoStore TodoStore | |
{ | |
get; | |
set; | |
} | |
ISharedState IReactiveObject.SharedState | |
{ | |
get; | |
} | |
protected override void BuildRenderTree(RenderTreeBuilder __builder) | |
{ | |
if (this.cortex_Net_H90skjHYJKq9_ObserverObject != null) | |
{ | |
this.cortex_Net_Fvclsnf97SxcMxlkizajkz_BuildRenderTree_EntranceCount++; | |
if (this.cortex_Net_Fvclsnf97SxcMxlkizajkz_BuildRenderTree_EntranceCount % 2 == 1) | |
{ | |
this.cortex_Net_H90skjHYJKq9_ObserverObject.BuildRenderTree(__builder); | |
this.cortex_Net_Fvclsnf97SxcMxlkizajkz_BuildRenderTree_EntranceCount -= 2; | |
return; | |
} | |
} | |
if (this.TodoStore.Todos.Count > 0) | |
{ | |
__builder.AddMarkupContent(0, " \r\n "); | |
__builder.OpenElement(1, "section"); | |
__builder.AddAttribute(2, "class", "main"); | |
__builder.AddMarkupContent(3, "\r\n "); | |
__builder.OpenElement(4, "input"); | |
__builder.AddAttribute(5, "id", "toggle-all"); | |
__builder.AddAttribute(6, "class", "toggle-all"); | |
__builder.AddAttribute(7, "type", "checkbox"); | |
__builder.AddAttribute(8, "onchange", EventCallback.Factory.Create((object)this, (Action<ChangeEventArgs>)this.ToggleAll)); | |
__builder.AddAttribute(9, "checked", this.TodoStore.ActiveCount == 0); | |
__builder.CloseElement(); | |
__builder.AddMarkupContent(10, "\r\n "); | |
__builder.AddMarkupContent(11, "<label for=\"toggle-all\">Mark all as complete</label>\r\n "); | |
__builder.OpenElement(12, "ul"); | |
__builder.AddAttribute(13, "class", "todo-list"); | |
__builder.AddMarkupContent(14, "\r\n \r\n \r\n"); | |
foreach (Todo visibleTodo in this.GetVisibleTodos()) | |
{ | |
__builder.AddContent(15, " "); | |
__builder.OpenComponent<TodoItem>(16); | |
__builder.AddAttribute(17, "Todo", Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers.TypeCheck(visibleTodo)); | |
__builder.SetKey(visibleTodo.Id); | |
__builder.CloseComponent(); | |
__builder.AddMarkupContent(18, "\r\n"); | |
} | |
__builder.AddContent(19, " "); | |
__builder.CloseElement(); | |
__builder.AddMarkupContent(20, "\r\n "); | |
__builder.CloseElement(); | |
__builder.AddMarkupContent(21, "\r\n"); | |
} | |
} | |
/// <summary> | |
/// Gets the visible Todos. | |
/// </summary> | |
/// <returns></returns> | |
private IEnumerable<Todo> GetVisibleTodos() | |
{ | |
if (this.ViewStore.TodoFilter == TodoFilter.All) | |
{ | |
return this.TodoStore.Todos; | |
} | |
return from x in this.TodoStore.Todos | |
where (this.ViewStore.TodoFilter == TodoFilter.Completed) ? x.Completed : (!x.Completed) | |
select x; | |
} | |
/// <summary> | |
/// Event handler for the toggle-all checkbox. | |
/// </summary> | |
/// <param name="args">The change event args.</param> | |
private void ToggleAll(ChangeEventArgs args) | |
{ | |
this.TodoStore.ToggleAll((bool)args.Value); | |
} | |
public TodoOverview() | |
{ | |
this.Cortex.Net.Api.IReactiveObject.set_SharedState(SharedState.ResolveState(null)); | |
} | |
public virtual void Dispose() | |
{ | |
if (this.cortex_Net_H90skjHYJKq9_ObserverObject != null) | |
{ | |
this.cortex_Net_H90skjHYJKq9_ObserverObject.Dispose(); | |
} | |
} | |
[CompilerGenerated] | |
private void Cortex.Net.Api.IReactiveObject.set_SharedState(ISharedState value) | |
{ | |
this.Cortex.Net.Api.IReactiveObject.SharedState = value; | |
if (value != null) | |
{ | |
this.cortex_Net_H90skjHYJKq9_ObserverObject = new ObserverObject(value, "TodoOverview", this.BuildRenderTree, base.StateHasChanged); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment