protected override void BuildRenderTree(RenderTreeBuilder builder) { base.BuildRenderTree(builder); var name = View?.GetType().Name ?? "null"; builder.OpenElement(0, "div"); builder.AddAttribute(1, "class", $"comet-view comet-view-{name}"); if (View is null) { builder.OpenElement(2, "div"); builder.AddAttribute(3, "class", "alert alert-danger"); builder.AddAttribute(4, "role", "alert"); builder.AddMarkupContent(5, "View cannot be null."); builder.CloseElement(); } else if (View.GetOrCreateViewHandler() is IBlazorViewHandler handler) { builder.OpenComponent(6, handler.ComponentType); builder.SetKey(handler); builder.AddComponentReferenceCapture(7, handler.OnComponentLoad); builder.CloseComponent(); } else { builder.OpenElement(8, "div"); builder.AddAttribute(9, "class", "alert alert-danger"); builder.AddAttribute(10, "role", "alert"); builder.AddMarkupContent(11, $"Invalid view handler: <b>{View.GetType()}</b>"); builder.CloseElement(); } builder.CloseElement(); }
protected override void BuildRenderTree(RenderTreeBuilder builder) { builder.AddMarkupContent(0, "\r\n "); builder.OpenElement(1, "g"); builder.AddAttribute(2, "id", "node" + "_element"); builder.AddAttribute(3, "xmlns", "http://www.w3.org/2000/svg"); builder.AddMarkupContent(4, "\r\n "); builder.OpenElement(5, "rect"); builder.AddAttribute(6, "xmlns", "http://www.w3.org/2000/svg"); builder.AddAttribute(7, "id", "node"); builder.AddAttribute(8, "x", _x); builder.AddAttribute(9, "y", _y); builder.AddAttribute(10, "width", _width); builder.AddAttribute(11, "height", _height); string style = "fill:yellow; stroke-width:5"; builder.AddAttribute(12, "style", style); builder.AddMarkupContent(13, "\r\n "); builder.CloseElement(); builder.AddMarkupContent(14, "\r\n "); builder.CloseElement(); builder.AddMarkupContent(15, "\r\n "); base.BuildRenderTree(builder); }
protected override void BuildRenderTree(RenderTreeBuilder __builder) { #region 底下的程式碼,將是從編譯器產生出來的 Counter 元件複製過來的 __builder.AddMarkupContent(0, "<h1>Counter</h1>\r\n\r\n"); __builder.OpenElement(1, "p"); __builder.AddContent(2, "Current count: "); __builder.AddContent(3, currentCount); __builder.CloseElement(); __builder.AddMarkupContent(4, "\r\n\r\n"); __builder.OpenElement(5, "button"); __builder.AddAttribute(6, "class", "btn btn-primary"); __builder.AddAttribute(7, "onclick" , Microsoft.AspNetCore.Components.EventCallback.Factory .Create <Microsoft.AspNetCore.Components.Web.MouseEventArgs>(this, IncrementCount)); __builder.AddContent(8, "Click me"); __builder.CloseElement(); #endregion #region 這裡宣告一個按鈕,沒做甚麼事情,但會觸發 BuildRenderTree 再度執行 __builder.OpenElement(5, "button"); __builder.AddAttribute(6, "class", "btn btn-danger"); __builder.AddAttribute(7, "onclick" , Microsoft.AspNetCore.Components.EventCallback.Factory .Create <Microsoft.AspNetCore.Components.Web.MouseEventArgs>(this, EmptyCount)); __builder.AddContent(8, "不會做任何事情"); __builder.CloseElement(); #endregion }
protected override void BuildRenderTree(RenderTreeBuilder builder) { base.BuildRenderTree(builder); switch (ControlType) { case "TBText": builder.AddMarkupContent(0, $"<label>{this.LabelText}</label><br />"); builder.OpenElement(1, "input"); builder.AddAttribute(2, "type", "text"); builder.AddAttribute(3, "value", this.Bind); builder.AddAttribute(4, "onchange", EventCallback.Factory.CreateBinder(this.Obj, ValueChangeEvent, this.Bind.ToString(), CultureInfo.InvariantCulture)); builder.CloseElement(); builder.AddMarkupContent(5, "<br />"); break; case "TBNumber": builder.AddMarkupContent(0, $"<label>{this.LabelText}</label><br />"); builder.OpenElement(1, "input"); builder.AddAttribute(2, "type", "number"); builder.AddAttribute(3, "value", this.Bind); builder.AddAttribute(4, "onchange", EventCallback.Factory.CreateBinder(this.Obj, _value => ValueChangeEvent(_value), (int)this.Bind, CultureInfo.InvariantCulture)); builder.CloseElement(); builder.AddMarkupContent(5, "<br />"); break; } }
protected override void BuildRenderTree(RenderTreeBuilder builder) { builder.AddMarkupContent(0, RenderStyles()); if (IsIE()) { builder.AddMarkupContent(1, RenderPolyfill()); } }
protected override void BuildRenderTree(RenderTreeBuilder builder) { builder.AddMarkupContent(0, "<h1>Counter</h1>\r\n\r\n"); builder.OpenElement(1, "p"); builder.AddContent(2, "Current count: "); builder.AddContent(3, currentCount); builder.CloseElement(); builder.AddMarkupContent(4, "\r\n\r\n"); builder.OpenElement(5, "button"); builder.AddAttribute(6, "class", "btn btn-primary"); builder.AddAttribute(7, "onclick", EventCallback.Factory.Create <MouseEventArgs>(this, IncrementCount)); builder.AddContent(8, "Click me"); builder.CloseElement(); }
/// <summary> /// Renders the dismiss icon inside the dismiss button - <see cref="RenderDismissButton"/>. /// </summary> /// <param name="builder"></param> /// <param name="sequence"></param> /// <returns></returns> private void RenderDismissIcon(RenderTreeBuilder builder, ref int sequence) { builder.OpenElement(sequence++, MarkupElements.Span); builder.AddAttribute(sequence++, "aria-hidden", true.ToString().ToLower()); builder.AddMarkupContent(sequence++, "×"); builder.CloseElement(); }
protected override void BuildRenderTree(RenderTreeBuilder builder) { base.BuildRenderTree(builder); builder.AddMarkupContent(0, $@"<script type=""application/ld+json"">{JsonConvert.SerializeObject(this.Schema)}</script>"); }
/// <inheritdoc /> protected override void BuildRenderTree(RenderTreeBuilder builder) { List <string> messages = fieldIdentifiers.SelectMany(fieldIdentifier => currentEditContext.GetValidationMessages(fieldIdentifier)).ToList(); if (messages.Any()) { builder.OpenElement(100, "div"); builder.AddAttribute(101, "class", HxInputBase <object> .InvalidCssClass); builder.CloseElement(); builder.OpenElement(200, "div"); builder.AddAttribute(201, "class", "invalid-tooltip"); bool firstRendered = false; foreach (string message in messages) { if (firstRendered) { builder.AddMarkupContent(202, " "); } builder.OpenElement(203, "span"); builder.AddContent(204, message); builder.CloseElement(); firstRendered = true; } builder.CloseElement(); } }
protected override void BuildRenderTree(RenderTreeBuilder builder) { var seq = 0; MiniPieFont miniPieFont = new MiniPieFont(); miniPieFont.InputData = InputData; miniPieFont.GenerateText = GenerateText; miniPieOutput = miniPieFont.Encode(); /* * builder.OpenElement(seq, "figure"); * builder.OpenElement(++seq, "div"); * builder.AddAttribute(++seq, "class", "minipie-main"); * foreach (string miniPieLine in miniPieOutput) * { * builder.OpenElement(++seq, "span"); * builder.AddAttribute(++seq, "class", "MiniPie"); * //string miniPieLineBreak = miniPieLine + "<br />"; * builder.AddMarkupContent(++seq, miniPieLine); * builder.CloseElement(); * } * */ builder.OpenElement(++seq, "span"); builder.AddAttribute(++seq, "class", "MiniPie"); builder.AddMarkupContent(++seq, miniPieOutput); builder.CloseElement(); /* * builder.CloseElement(); * builder.CloseElement(); */ }
protected override void BuildRenderTree(RenderTreeBuilder builder) { var render = Component as IControlRender; if (render != null) { if (Config == null) { throw new BlazuiException("Component 类型为 IControlRender 时,必须指定 Config 参数"); } render.Render(builder, Config); return; } else if (Component is Type type) { builder.OpenComponent(0, type); if (Parameters != null) { var seq = 1; foreach (var key in Parameters.Keys) { builder.AddAttribute(seq++, key, Parameters[key]); } } builder.CloseComponent(); return; } if (Component is RenderFragment renderFragment) { builder.AddContent(0, renderFragment); return; } builder.AddMarkupContent(0, Convert.ToString(Component)); }
private void RenderInputComponent(ExpandoObject data, DynamicControl control, RenderTreeBuilder builder2) { switch (control.Type) { case "textBox": case "multiLineTextBox": builder2.OpenComponent(0, typeof(InputText)); // Create the handler for ValueChanged. I use reflection to the value. BindDataValue <string>(data, control.Id, builder2, control); if (control.Type == "multiLineTextBox") { builder2.AddAttribute(5, "Multiline", true); } builder2.CloseComponent(); break; case "datePicker": builder2.OpenComponent(0, typeof(InputDate <DateTime>)); BindDataValue <DateTime>(data, control.Id, builder2, control); builder2.CloseComponent(); break; case "dropdown": builder2.OpenComponent(0, typeof(InputSelect <string>)); BindDataValue <string>(data, control.Id, builder2, control); builder2.AddAttribute(5, "ChildContent", (RenderFragment)((builder2) => { var index = 1; foreach (var item in control.Items) { builder2.OpenElement(6, "option"); builder2.AddAttribute(7, "Value", $"Value-{index}"); builder2.AddContent(8, _localizer[item]); builder2.CloseElement(); builder2.AddMarkupContent(9, "\r\n"); index++; } })); builder2.CloseComponent(); break; case "checkBox": builder2.OpenComponent(0, typeof(InputCheckbox)); BindDataValue <bool>(data, control.Id, builder2, control); builder2.CloseComponent(); break; default: builder2.OpenElement(0, "p"); builder2.AddAttribute(1, "style", "padding: 8px 12px 24px"); builder2.AddContent(2, "Control is to be implemented :-)"); builder2.CloseElement(); break; } }
protected override void BuildRenderTree(RenderTreeBuilder builder) { builder.OpenElement(1, "body"); builder.AddMarkupContent(2, "<h1>Hello World!</h1> \r\n"); builder.CloseElement(); builder.OpenComponent <MyDynamicComponent>(3); builder.CloseComponent(); }
/// <inheritdoc /> protected override void BuildRenderTree(RenderTreeBuilder builder) { builder.OpenElement(0, "textarea"); builder.AddMultipleAttributes(1, AdditionalAttributes); builder.AddAttribute(2, "class", CssClass); builder.AddAttribute(4, "onchange", EventCallback.Factory.CreateBinder <string>(this, __value => CurrentValueAsString = __value, CurrentValueAsString)); builder.AddAttribute(5, "tabindex", TabIndex.ToString()); builder.AddMarkupContent(6, BindConverter.FormatValue(CurrentValue)); builder.CloseElement(); }
public void CanAddMarkup() { // Arrange var builder = new RenderTreeBuilder(new TestRenderer()); // Act builder.OpenElement(0, "some elem"); builder.AddMarkupContent(1, "Blah"); builder.AddMarkupContent(2, string.Empty); builder.CloseElement(); // Assert var frames = builder.GetFrames(); Assert.Collection(frames, frame => AssertFrame.Element(frame, "some elem", 3), frame => AssertFrame.Markup(frame, "Blah"), frame => AssertFrame.Markup(frame, string.Empty)); }
private void RenderGrid(RenderTreeBuilder builder, int seq) { var constructed = oxGrid.GetType(); builder.AddMarkupContent(seq++, "\r\n "); builder.OpenComponent(seq++, constructed); builder.AddAttribute(seq++, "AllowButtons", RuntimeHelpers.TypeCheck <System.Boolean>(true)); builder.AddAttribute(seq++, "AllowPrint", RuntimeHelpers.TypeCheck <System.Boolean>(true)); builder.AddAttribute(seq++, "OnAdd", RuntimeHelpers.TypeCheck(EventCallback.Factory.Create(this, (value) => viewEdit.ShowDialog(null, OxActionModel.New)))); builder.AddAttribute(seq++, "OnEdit", RuntimeHelpers.TypeCheck(EventCallback.Factory.Create(this, (value) => viewEdit.ShowDialog(value, OxActionModel.Edit)))); builder.AddAttribute(seq++, "OnDelete", RuntimeHelpers.TypeCheck(EventCallback.Factory.Create(this, (value) => viewEdit.ShowDialog(value, OxActionModel.Delete)))); builder.AddComponentReferenceCapture(seq++, (value) => { var getRef = TypeHelper.ConvertTo(value, constructed); oxGrid = getRef; }); builder.CloseComponent(); builder.AddMarkupContent(seq++, "\r\n "); }
protected override void BuildRenderTree(RenderTreeBuilder builder) { base.BuildRenderTree(builder); var script = @"<script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '" + this.AppId + @"'); fbq('track', 'PageView'); </script>"; builder.AddMarkupContent(0, script); builder.AddMarkupContent(1, @"<script src=""_content/Blazor-Facebook-Analytics/interop.js""></script>"); }
private void Render(RenderTreeBuilder builder, object propertyValue) { var markupContent = $@" <div class=""dxbs-fl-ctrl""><!--!--> <div data-item-name=""{MemberInfo.Name}"" class=""d-none""></div><!--!--> <!--!-->{$"{propertyValue}".StringFormat(Model.DisplayFormat)}<!--!--> </div> "; builder.AddMarkupContent(0, markupContent); }
protected override void BuildRenderTree(RenderTreeBuilder __builder) { if (!this.Show) { return; } __builder.AddContent(0, " "); __builder.OpenElement(1, "div"); __builder.AddAttribute(2, "class", "dialog-container"); __builder.AddMarkupContent(3, "\r\n "); __builder.OpenElement(4, "div"); __builder.AddAttribute(5, "class", "dialog"); __builder.AddMarkupContent(6, "\r\n "); __builder.AddContent(7, this.ChildContent); __builder.AddMarkupContent(8, "\r\n "); __builder.CloseElement(); __builder.AddMarkupContent(9, "\r\n "); __builder.CloseElement(); __builder.AddMarkupContent(10, "\r\n"); }
protected override void BuildRenderTree(RenderTreeBuilder builder) { if (Type is null) { return; } switch (TypeKind) { case TypeKind.Scalar: case TypeKind.Object: builder.OpenComponent <ValueEditor>(0); builder.AddAttribute(1, nameof(TypeKind), TypeKind); builder.AddAttribute(2, nameof(Type), Type); builder.AddComponentReferenceCapture(3, obj => editor = (EditorBase)obj); builder.CloseComponent(); break; case TypeKind.List: builder.OpenComponent <ListTypeEditor>(0); builder.AddAttribute(1, nameof(TypeKind), TypeKind); builder.AddAttribute(2, nameof(Type), Type); builder.AddComponentReferenceCapture(3, obj => editor = (EditorBase)obj); builder.CloseComponent(); break; case TypeKind.Any: builder.OpenComponent <RawEditor>(0); builder.AddAttribute(1, nameof(TypeKind), TypeKind); builder.AddAttribute(2, nameof(Type), Type); builder.AddComponentReferenceCapture(3, obj => editor = (EditorBase)obj); builder.CloseComponent(); break; case TypeKind.Unit: builder.AddContent(0, "<not required>"); break; default: //throw new NotImplementedException(); builder.OpenElement(0, "div"); builder.AddAttribute(1, "class", "flex flex-col"); builder.AddMarkupContent(2, @$ "<span class=" "text-red-600 font-bold" ">{TypeKind}</span><span class=" "text-red-600 font-bold" ">{Type}</span>"); builder.OpenComponent <RawEditor>(3); builder.AddAttribute(4, nameof(TypeKind), TypeKind); builder.AddAttribute(5, nameof(Type), Type); builder.AddComponentReferenceCapture(6, obj => editor = (EditorBase)obj); builder.CloseComponent(); builder.CloseElement(); break; } base.BuildRenderTree(builder); }
//protected override async Task OnAfterRenderAsync() //{ // await JSRuntime.InvokeAsync<string>(Configure, // TrackingId); // if (ContainerId != null) // { // await JSRuntime.InvokeAsync<string>(GoogleTagManager, ContainerId); // } // base.OnAfterRenderAsync(); //} protected override void BuildRenderTree(RenderTreeBuilder builder) { base.BuildRenderTree(builder); int sequence = 0; var googleAnalyticsScript = @" <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', '" + this.TrackingId + @"', 'auto'); ga('send', 'pageview'); </script> "; builder.AddMarkupContent(sequence++, googleAnalyticsScript); if (string.IsNullOrEmpty(this.ContainerId) == false) { var headerScript = @" <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','" + ContainerId + @"');</script> "; var bodyScript = @" <noscript><iframe src=""https://www.googletagmanager.com/ns.html?id=" + ContainerId + @""" height=""0"" width=""0"" style=""display:none;visibility:hidden""></iframe></noscript> "; builder.AddMarkupContent(sequence++, headerScript); builder.AddMarkupContent(sequence++, bodyScript); } builder.AddMarkupContent(sequence++, @"<script src=""_content/Blazor-Google-Analytics/interop.js""></script>"); }
protected override void BuildRenderTree(RenderTreeBuilder builder) { base.BuildRenderTree(builder); builder.OpenElement(0, "div"); if (AdditionalAttributes != null) { builder.AddMultipleAttributes(1, AdditionalAttributes); } builder.AddMarkupContent(0, MessageRenderer.RenderMessages().ToString()); builder.CloseElement(); }
protected override void BuildRenderTree(RenderTreeBuilder builder) { var seq = 0; ColumnBarsFont columnBarsFont = new ColumnBarsFont(); columnBarsFont.GenerateText = GenerateText; columnBarsFont.InputData = InputData; columnBarsOutput = columnBarsFont.Encode(); builder.OpenElement(++seq, "span"); builder.AddAttribute(++seq, "class", "ColumnBars"); builder.AddMarkupContent(++seq, columnBarsOutput); builder.CloseElement(); }
protected override void BuildRenderTree(RenderTreeBuilder builder) { var seq = 0; WinLossFont winLossFont = new WinLossFont(); winLossFont.InputData = InputData; winLossFont.GenerateText = GenerateText; winLossOutput = winLossFont.Encode(); builder.OpenElement(++seq, "span"); builder.AddAttribute(++seq, "class", "WinLoss"); builder.AddMarkupContent(++seq, winLossOutput); builder.CloseElement(); }
public void CanAddNullMarkup() { // Arrange var builder = new RenderTreeBuilder(new TestRenderer()); // Act builder.AddMarkupContent(0, null); // Assert var frames = builder.GetFrames(); Assert.Collection(frames, frame => AssertFrame.Markup(frame, string.Empty)); }
protected override void BuildRenderTree(RenderTreeBuilder builder) { if (Component is Type type) { builder.OpenComponent(0, type); builder.CloseComponent(); return; } if (Component is RenderFragment renderFragment) { builder.AddContent(0, renderFragment); return; } builder.AddMarkupContent(0, Convert.ToString(Component)); }
protected override void BuildRenderTree(RenderTreeBuilder builder) { var seq = 0; SparklineFont sparkline = new SparklineFont(); sparkline.InputData = InputData; sparkline.GenerateText = GenerateText; sparkline.SegmentWidth = SegmentWidth; sparklineOutput = sparkline.Encode(); builder.OpenElement(++seq, "span"); builder.AddAttribute(++seq, "class", "Sparklines"); builder.AddMarkupContent(++seq, sparklineOutput); builder.CloseElement(); }
protected override void BuildRenderTree(RenderTreeBuilder builder) { var value = Value; if (value == null || AddressOrAlias.None.Equals(value)) { builder.AddMarkupContent("<span hg-address-display hg-none>None</span>"); } else if (value.Endorsement is null) { builder.OpenElement("span"); builder.AddAttribute("hg-address-display"); builder.AddContent(value.ShardNum); builder.AddContent("."); builder.AddContent(value.RealmNum); builder.AddContent("."); builder.AddContent(value.AccountNum); builder.CloseElement(); } else { builder.OpenElement("span"); builder.AddAttribute("hg-alias-display"); builder.AddAttribute($"hg-{value.Endorsement.Type}"); builder.AddMultipleAttributes(AdditionalAttributes); switch (value.Endorsement.Type) { case KeyType.Ed25519: case KeyType.ECDSASecp256K1: builder.OpenElement("span"); builder.AddContent($"{value.ShardNum}.{value.RealmNum}."); builder.CloseElement(); builder.OpenElement("span"); builder.AddContent(GetRawKeyPart(value.Endorsement)); builder.CloseElement(); break; case KeyType.Contract: builder.AddContent(Hex.FromBytes(value.Endorsement.PublicKey)); break; default: builder.AddContent("Invalid"); break; } builder.CloseElement(); } }
private void BuilderComponent(RenderTreeBuilder builder) { var gridAux = AppDataTransfer.Result as GridGenericView; if (gridAux == null) { Toast.ShowInfo("Erro ao carregar a entidade!"); return; } var seq = 0; Type generic = typeof(OXGrid <>); Type[] typeArgs = { gridAux.Model }; Type constructed = generic.MakeGenericType(typeArgs); viewEdit = TypeHelper.CreateInstance(gridAux.View); oxGrid = TypeHelper.CreateInstance(constructed); var grid = TypeHelper.ConvertTo(oxGrid, constructed); //create layout builder.AddAttribute(seq++, "ChildContent", (RenderFragment)((builder2) => { builder2.AddMarkupContent(seq++, "\r\n "); builder2.OpenComponent <OXPanel>(3); builder2.AddAttribute(seq++, "Title", gridAux.Caption); builder2.AddAttribute(seq++, "SubTitle", gridAux.Descricao); builder2.AddAttribute(seq++, "ChildContent", (RenderFragment)((builder3) => { RenderGrid(builder3, seq); })); builder2.CloseComponent(); })); builder.CloseComponent(); builder.AddMarkupContent(seq++, "\r\n"); var viewComp = viewEdit.GetType(); builder.OpenComponent(seq++, viewComp); builder.AddAttribute(seq++, "Caption", gridAux.Caption); builder.AddAttribute(seq++, "GridView", grid); builder.AddComponentReferenceCapture(seq++, (value) => { var getRef = TypeHelper.ConvertTo(value, gridAux.View); viewEdit = getRef; }); builder.CloseComponent(); }
public void Render(RenderTreeBuilder builder) { var hasChildren = ComponentContainer.Children.Any(); if (hasChildren) { builder.OpenElement(1, "div"); //RenderComponents(ComponentContainer.Children, builder); ComponentContainer.Render(); builder.CloseElement(); } else { builder.AddMarkupContent(2, $"<div class=\"error\">A renderer was not found for the {this.Element.GetType().FullName} component.</div>\r\n"); } }