protected static void AddSeparator(HtmlTag uiContainer, CardElement cardElement, RenderContext context)
        {
            switch (cardElement.Separation)
            {
            case SeparationStyle.None:
                return;

            case SeparationStyle.Default:
            {
                SeparationConfig sep = context.GetElementSeparation(cardElement);
                var uiSep            = new DivTag()
                                       .AddClass("ac-separator")
                                       .Style("height", $"{sep.Spacing}px");
                uiContainer.Children.Add(uiSep);
            }
                return;

            case SeparationStyle.Strong:
            {
                SeparationConfig sep = context.Config.StrongSeparation;
                var uiSep            = new DivTag()
                                       .AddClass("ac-separator")
                                       .Style("padding-top", $"{sep.Spacing}px")
                                       .Style("margin-top", $"{sep.Spacing}px")
                                       .Style("border-top-color", $"{context.GetRGBColor(sep.LineColor)}")
                                       .Style("border-top-width", $"{sep.LineThickness}px")
                                       .Style("border-top-style", "solid")
                ;
                uiContainer.Children.Add(uiSep);
            }
                return;
            }
        }
示例#2
0
        public static void AddSeperator(RenderContext context, CardElement element, Grid uiContainer, SeparationStyle seperationStyle)
        {
            if (seperationStyle == SeparationStyle.None)
            {
                return;
            }

            var uiSep = new Grid();

            uiSep.Style = context.GetStyle($"Adaptive.Separator");
            SeparationConfig sepStyle = null;

            switch (seperationStyle)
            {
            case SeparationStyle.Default:
                sepStyle = context.Config.GetSeparationForElement(element, strong: false);
                break;

            case SeparationStyle.Strong:
                sepStyle = context.Config.GetSeparationForElement(element, strong: true);
                break;
            }

            uiSep.Margin = new Thickness(0, (sepStyle.Spacing - sepStyle.LineThickness) / 2, 0, (sepStyle.Spacing - sepStyle.LineThickness) / 2);
            uiSep.SetHeight(sepStyle.LineThickness);
            if (!string.IsNullOrWhiteSpace(sepStyle.LineColor))
            {
                uiSep.SetBackgroundColor(sepStyle.LineColor, context);
            }
            uiContainer.RowDefinitions.Add(new RowDefinition()
            {
                Height = GridLength.Auto
            });
            Grid.SetRow(uiSep, uiContainer.RowDefinitions.Count - 1);
            uiContainer.Children.Add(uiSep);
        }
        protected static HtmlTag ColumnSetRender(TypedElement element, RenderContext context)
        {
            ColumnSet columnSet   = (ColumnSet)element;
            var       uiColumnSet = new DivTag()
                                    .AddClass($"ac-{element.Type.Replace(".", "").ToLower()}")
                                    .Style("overflow", "hidden")
                                    .Style("display", "flex");

            var max = Math.Max(1.0, columnSet.Columns.Select(col =>
            {
                if (double.TryParse(col.Size ?? "0", out double val))
                {
                    return(val);
                }
                return(0);
            }).Sum());

            foreach (var column in columnSet.Columns)
            {
                var uiColumn = context.Render(column);

                // Add horizontal Seperator
                if (uiColumnSet.Children.Any())
                {
                    SeparationConfig sep = null;
                    switch (column.Separation)
                    {
                    case SeparationStyle.None:
                        break;

                    case SeparationStyle.Default:
                        sep = context.Config.Column.Separation;
                        break;

                    case SeparationStyle.Strong:
                        sep = context.Config.StrongSeparation;
                        break;
                    }
                    if (sep != null)
                    {
                        uiColumnSet.Children.Add(new DivTag()
                                                 .AddClass($"ac-columnseparator")
                                                 .Style("flex", "0 0 auto")
                                                 .Style("padding-left", $"{sep.Spacing}")
                                                 .Style("margin-left", $"{sep.Spacing}")
                                                 .Style("border-left-color", $"{context.GetRGBColor(sep.LineColor)}")
                                                 .Style("border-left-width", $"{sep.LineThickness}px")
                                                 .Style("border-left-style", $"solid"));
                    }
                }

                // do some sizing magic
                var size = column.Size?.ToLower();
                if (size == null || size == ColumnSize.Stretch.ToLower())
                {
                    uiColumn = uiColumn.Style("flex", "1 1 auto");
                }
                else if (size == ColumnSize.Auto.ToLower())
                {
                    uiColumn = uiColumn.Style("flex", "0 1 auto");
                }
                else
                {
                    double val;
                    if (double.TryParse(size, out val))
                    {
                        var percent = Convert.ToInt32(100 * (val / max));
                        uiColumn = uiColumn.Style("flex", $"1 1 {percent}%");
                    }
                    else
                    {
                        uiColumn = uiColumn.Style("flex", "0 0 auto");
                    }
                }

                uiColumnSet.Children.Add(uiColumn);
            }

            return(uiColumnSet);
        }
示例#4
0
        protected static void AddContainerElements(HtmlTag uiContainer, List <CardElement> elements, List <ActionBase> actions, RenderContext context)
        {
            if (elements != null)
            {
                foreach (var cardElement in elements)
                {
                    // each element has a row
                    var uiElement = context.Render(cardElement);
                    if (uiElement != null)
                    {
                        if (uiContainer.Children.Any())
                        {
                            switch (cardElement.Separation)
                            {
                            case SeparationStyle.None:
                                break;

                            case SeparationStyle.Default:
                            {
                                SeparationConfig sep = context.GetElementSeparation(cardElement);
                                var uiSep            = new DivTag()
                                                       .AddClass("ac-separator")
                                                       .Style("height", $"{sep.Spacing}px");
                                uiContainer.Children.Add(uiSep);
                            }
                            break;

                            case SeparationStyle.Strong:
                            {
                                SeparationConfig sep = context.Config.StrongSeparation;
                                var uiSep            = new DivTag()
                                                       .AddClass("ac-separator")
                                                       .Style("padding-top", $"{sep.Spacing}px")
                                                       .Style("margin-top", $"{sep.Spacing}px")
                                                       .Style("border-top-color", $"{context.GetRGBColor(sep.LineColor)}")
                                                       .Style("border-top-width", $"{sep.LineThickness}px")
                                                       .Style("border-top-style", "solid")
                                ;
                                uiContainer.Children.Add(uiSep);
                            }
                            break;
                            }
                        }
                        uiContainer.Children.Add(uiElement);
                    }
                }
            }

            if (actions != null)
            {
                var uiActions = new DivTag()
                                .AddClass("ac-actionset");

                foreach (var action in actions.Take(context.Config.Actions.MaxActions))
                {
                    // add actions
                    var uiAction = context.Render(action);
                    if (uiAction != null)
                    {
                        uiActions.Children.Add(uiAction);
                    }
                }

                if (uiActions.Children.Any())
                {
                    uiContainer.Children.Add(uiActions);
                }
            }
        }