public AdaptiveBlockTransformContext CloneForChildren(bool isColumnContent = false) { var answer = new AdaptiveBlockTransformContext(Transformer) { // Skip IsColumContent since that gets reset //IsColumnContent = IsColumnContent IsColumnContent = isColumnContent }; return(answer); }
internal List <AdaptiveElement> TransformInputsToElements(IEnumerable <BaseAdaptiveBlockElement> inputs, AdaptiveBlockTransformContext context) { List <AdaptiveElement> elements = new List <AdaptiveElement>(); foreach (var input in inputs) { elements.AddRange(TransformBlockElementToElements(input, context.CloneForChildren())); } return(elements); }
internal List <AdaptiveElement> TransformBlocksToElements(IEnumerable <AdaptiveBlock> blocks, AdaptiveBlockTransformContext context) { List <AdaptiveElement> elements = new List <AdaptiveElement>(); int count = blocks.Count(); for (int i = 0; i < count; i++) { var b = blocks.ElementAt(i); if (b.Hints.Column && context.Transformer.Properties.AllowsColumns) { var columnGroup = blocks.Skip(i).TakeWhile(x => x.Hints.Column).ToList(); var innerContext = context.CloneForChildren( isColumnContent: true); elements.AddRange(TransformGroupAsColumnsToElements(columnGroup, innerContext)); i += columnGroup.Count - 1; } else if (b.Hints.FactSet && context.Transformer.Properties.AllowsFactSets) { var factSetGroup = blocks.Skip(i).TakeWhile(x => x.Hints.FactSet).ToList(); var innerContext = context.CloneForChildren(); elements.AddRange(TransformGroupAsFactSetToElements(factSetGroup, innerContext)); i += factSetGroup.Count - 1; } else { elements.AddRange(TransformBlockToElements(b, context.CloneForChildren())); } } return(elements); }
internal List <AdaptiveElement> TransformBlockToElements(AdaptiveBlock block, AdaptiveBlockTransformContext context) { var content = block.View?.Content; if (content != null) { return(ElementTransformers[typeof(AdaptiveBlockContent)].Transform(content, context)); } return(new List <AdaptiveElement>()); }
public List <AdaptiveElement> TransformBlockElementToElements(BaseAdaptiveBlockElement element, AdaptiveBlockTransformContext context) { if (element != null && ElementTransformers.TryGetValue(element.GetType(), out IBaseElemementTransformer elementRenderer)) { return(elementRenderer.Transform(element, context)); } else { return(new List <AdaptiveElement>() { new AdaptiveTextBlock() { Text = "Unknown element" } }); } }
private List <AdaptiveElement> TransformGroupAsFactSetToElements(List <AdaptiveBlock> group, AdaptiveBlockTransformContext context) { AdaptiveFactSet factSet = new AdaptiveFactSet(); foreach (var block in group) { AdaptiveFact fact = new AdaptiveFact() { Title = block.View?.Content?.Title, Value = block.View?.Content?.Subtitle }; factSet.Facts.Add(fact); } return(new List <AdaptiveElement>() { factSet }); }
private List <AdaptiveElement> TransformGroupAsColumnsToElements(List <AdaptiveBlock> group, AdaptiveBlockTransformContext context) { AdaptiveColumnSet columnSet = new AdaptiveColumnSet(); foreach (var block in group) { AdaptiveColumn column = new AdaptiveColumn(); var innerContext = context.CloneForChildren( isColumnContent: true); foreach (var el in context.Transformer.TransformBlockToElements(block, innerContext)) { column.Items.Add(el); } columnSet.Columns.Add(column); } return(new List <AdaptiveElement>() { columnSet }); }