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> 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); }
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 }); }