public override void RenderElement(RenderContext context, Action <TagBuilder> onRender = null) { if (SkipRender(context)) { return; } var td = new TagBuilder("td"); onRender?.Invoke(td); Bind isBind = GetBinding(nameof(ItemsSource)); if (isBind != null) { td.MergeAttribute("v-for", $"(cell, cellIndex) in {isBind.GetPath(context)}"); td.MergeAttribute(":key", "cellIndex"); using (var scope = new ScopeContext(context, "cell")) { RenderCell(td, context); } } else { RenderCell(td, context); } }
internal void RenderStart(RenderContext context, Action <TagBuilder> onRender = null) { if (context.IsDialog && RunAt == RunMode.ServerUrl) { throw new XamlException("RunAt='ServerUrl' is not allowed in dialogs"); } String cwTag = "collection-view"; if (RunAt == RunMode.Server) { cwTag = "collection-view-server"; } else if (RunAt == RunMode.ServerUrl) { cwTag = "collection-view-server-url"; } _outer = new TagBuilder(cwTag, "cw", IsInGrid); onRender?.Invoke(_outer); if (Parent is Page) { _outer.AddCssClass("cw-absolute"); } MergeAttributes(_outer, context); Bind itemsSource = GetBinding(nameof(ItemsSource)); if (itemsSource != null) { _outer.MergeAttribute(":items-source", itemsSource.GetPath(context)); } if (Sort != null) { _outer.MergeAttribute(":initial-sort", Sort.GetJsValue(context)); } if (Filter != null) { _outer.MergeAttribute(":initial-filter", Filter.GetJsValue(context)); _outer.MergeAttribute(":persistent-filter", Filter.GetPersistentValue(context)); if (RunAt == RunMode.Client) { if (String.IsNullOrEmpty(FilterDelegate)) { throw new XamlException("To filter on the client, a FilterDelegate is required"); } _outer.MergeAttribute(":filter-delegate", $"$delegate('{FilterDelegate}')"); } } if (PageSize != null) { _outer.MergeAttribute(":initial-page-size", PageSize.Value.ToString()); } _outer.RenderStart(context); _inner = new TagBuilder("template"); _inner.MergeAttribute("slot-scope", "Parent"); _inner.RenderStart(context); }
internal override void RenderElement(RenderContext context, Action <TagBuilder> onRender = null) { if (SkipRender(context)) { return; } var table = new TagBuilder("table", "a2-table", IsInGrid); onRender?.Invoke(table); MergeAttributes(table, context); if (Background != TableBackgroundStyle.None) { table.AddCssClass("bk-" + Background.ToString().ToKebabCase()); } if (CellSpacing != CellSpacingMode.None) { table.AddCssClass("table-separate-border"); table.AddCssClass("table-cell-spacing-" + CellSpacing.ToString().ToLowerInvariant()); } if (GridLines != GridLinesVisibility.None) { table.AddCssClass($"grid-{GridLines.ToString().ToLowerInvariant()}"); } table.AddCssClassBool(Border, "bordered"); table.AddCssClassBool(Compact, "compact"); table.AddCssClassBool(Hover, "hover"); table.AddCssClassBool(Striped, "striped"); Bind isBind = GetBinding(nameof(ItemsSource)); if (isBind != null) { table.MergeAttribute("v-lazy", isBind.GetPath(context)); } table.RenderStart(context); if (_columns != null) { Columns.Render(context); } RenderHeader(context); RenderBody(context); RenderFooter(context); table.RenderEnd(context); }
void RenderBody(RenderContext context) { if (Rows.Count == 0) { return; } var tbody = new TagBuilder("tbody").RenderStart(context); Bind isBind = GetBinding(nameof(ItemsSource)); if (isBind != null) { var repeatAttr = $"(row, rowIndex) in {isBind.GetPath(context)}"; using (new ScopeContext(context, "row")) { if (Rows.Count == 1) { Rows[0].RenderElement(context, (tag) => { tag.MergeAttribute("v-for", repeatAttr); }); } else { var tml = new TagBuilder("template"); tml.MergeAttribute("v-for", repeatAttr); tml.RenderStart(context); using (var cts = new ScopeContext(context, "row")) { var rNo = 0; foreach (var row in Rows) { row.RenderElement(context, (tag) => tag.MergeAttribute(":key", $"'r{rNo}:' + rowIndex")); rNo += 1; } } tml.RenderEnd(context); } } } else { foreach (var row in Rows) { row.RenderElement(context); } } tbody.RenderEnd(context); }
internal override void RenderElement(RenderContext context, Action <TagBuilder> onRender = null) { if (SkipRender(context)) { return; } var td = new TagBuilder("td"); onRender?.Invoke(td); MergeAttributes(td, context); var boldBind = GetBinding(nameof(Bold)); var italicBind = GetBinding(nameof(Italic)); if (boldBind != null || italicBind != null) { var sb = new StringBuilder("{"); if (boldBind != null) { sb.Append($"bold: {boldBind.GetPath(context)}, "); } if (italicBind != null) { sb.Append($"italic: {italicBind.GetPath(context)}, "); } sb.RemoveTailComma(); sb.Append("}"); td.MergeAttribute(":class", sb.ToString()); } td.AddCssClassBoolNo(Bold, "bold"); td.AddCssClassBoolNo(Italic, "italic"); td.AddCssClassBool(Gray, "gray"); MergeContent(td, context); if (Align != TextAlign.Left) { td.AddCssClass("text-" + Align.ToString().ToLowerInvariant()); } if (VAlign != VerticalAlign.Default) { td.AddCssClass($"valign-{VAlign.ToString().ToLowerInvariant()}"); } if (Content is ITableControl) { td.AddCssClass("ctrl"); } Bind isBind = GetBinding(nameof(ItemsSource)); if (isBind != null) { td.MergeAttribute("v-for", $"(cell, cellIndex) in {isBind.GetPath(context)}"); td.MergeAttribute(":key", "cellIndex"); } MergeAttributeInt32(td, context, nameof(ColSpan), "colspan", ColSpan); MergeAttributeInt32(td, context, nameof(RowSpan), "rowspan", RowSpan); td.RenderStart(context); RenderContent(context); /* * Никакого толку, содержимое в атрибуте * if (Validate) * { * var val = new TagBuilder("validator-control"); * val.MergeAttribute(":item", "row"); * val.MergeAttribute("prop", "Sum"); * val.Render(context); * }*/ td.RenderEnd(context); }