Example #1
0
 protected internal override void RenderNode(WordTemplateParameters p)
 {
     if (this.NodeProvider.IsParagraph(this.Parent) &&
         !this.Parent !.ChildElements.Any(a => BlockContainerNode.IsImportant(a, NodeProvider) && a != this))
     {
         this.Parent.Remove();
     }
Example #2
0
    internal static void ProcessTables(OpenXmlPart part, WordTemplateParameters parameters)
    {
        var graphicFrames = part.RootElement !.Descendants <Presentation.GraphicFrame>().ToList();

        foreach (var item in graphicFrames)
        {
            var nonVisualProps = item.Descendants <Presentation.NonVisualDrawingProperties>().SingleEx();
            var title          = GetTitle(nonVisualProps);

            Data.DataTable?dataTable = title != null?GetDataTable(parameters, title) : null;

            if (dataTable != null)
            {
                ReplaceChartOrTable(part, item, dataTable, title !);
            }
        }

        var drawings = part.RootElement !.Descendants <Wordprocessing.Drawing>().ToList();

        foreach (var item in drawings)
        {
            var docProps = item.Descendants <WPDrawing.DocProperties>().SingleEx();
            var title    = GetTitle(docProps);

            Data.DataTable?dataTable = title != null?GetDataTable(parameters, title) : null;

            if (dataTable != null)
            {
                ReplaceChartOrTable(part, item, dataTable, title !);
            }
        }
    }
        internal void RenderNodes()
        {
            var parameters = new WordTemplateParameters(this.entity, this.culture, this.dicTokenColumn, this.table.Rows)
            {
                SystemWordTemplate = systemWordTemplate
            };

            foreach (var root in document.RecursivePartsRootElements())
            {
                var list = root.Descendants<BaseNode>().ToList(); //eager

                foreach (var node in list)
                {
                    node.RenderNode(parameters);
                }
            }           
        }
Example #4
0
    protected internal override void RenderNode(WordTemplateParameters p)
    {
        object?obj  = ValueProvider.GetValue(p);
        string?text = obj is Enum en?en.NiceToString() :
                          obj is bool b ? (b ? BooleanEnum.True.NiceToString() : BooleanEnum.False.NiceToString()) :
                          obj is TimeSpan ts?ts.ToString(Format?.Replace(":", @"\:") ?? ValueProvider.Format, p.Culture) :
                              obj is IFormattable fo?fo.ToString(Format ?? ValueProvider.Format, p.Culture) :
                                  obj?.ToString();

        if (text != null && text.Contains('\n'))
        {
            var replacements = text.Lines()
                               .Select((line, i) => NodeProvider.NewRun((OpenXmlCompositeElement?)RunProperties?.CloneNode(true), line, initialBr: i > 0));

            this.ReplaceBy(replacements);
        }
        else
        {
            this.ReplaceBy(NodeProvider.NewRun((OpenXmlCompositeElement?)RunProperties?.CloneNode(true), text));
        }
    }
 protected internal override void RenderNode(WordTemplateParameters p)
 {
     if (this.ValueProvider.GetCondition(p, Operation, Value))
     {
         this.ReplaceBy(this.IfBlock);
         this.IfBlock.RenderNode(p);
     }
     else if (ElseBlock != null)
     {
         this.ReplaceBy(this.ElseBlock);
         this.ElseBlock.RenderNode(p);
     }
     else
         this.Parent.RemoveChild(this);
 }
 internal protected abstract void RenderNode(WordTemplateParameters p);
        protected internal override void RenderNode(WordTemplateParameters p)
        {
            var filtered = this.ValueProvider.GetFilteredRows(p, Operation, Value);

            using (filtered is IEnumerable<ResultRow> ? p.OverrideRows((IEnumerable<ResultRow>)filtered) : null)
            {
                if (filtered.Any())
                {
                    this.ReplaceBy(this.AnyBlock);
                    this.AnyBlock.RenderNode(p);
                }
                else if (NotAnyBlock != null)
                {
                    this.ReplaceBy(this.NotAnyBlock);
                    this.NotAnyBlock.RenderNode(p);
                }
                else
                    this.Parent.RemoveChild(this);
            }
        }
        protected internal override void RenderNode(WordTemplateParameters p)
        {
            var parent = this.Parent;
            int index = parent.ChildElements.IndexOf(this);
            parent.RemoveChild(this);

            List<Tuple<BlockNode, IEnumerable<ResultRow>>> tuples = new List<Tuple<BlockNode, IEnumerable<ResultRow>>>();
            this.ValueProvider.Foreach(p, () =>
            {
                var clone = (BlockNode)this.ForeachBlock.CloneNode(true);

                parent.InsertAt(clone, index++);

                tuples.Add(Tuple.Create(clone, p.Rows));
            });

            var prev = p.Rows;
            foreach (var tuple in tuples)
            {
                using (p.OverrideRows(tuple.Item2))
                    tuple.Item1.RenderNode(p);
            }
        }
        protected internal override void RenderNode(WordTemplateParameters p)
        {
            foreach (var item in this.Descendants<BaseNode>().ToList())
            {
                item.RenderNode(p);
            }

            var parent = this.Parent;
            int index = parent.ChildElements.IndexOf(this);
            parent.RemoveChild(this);
  
            foreach (var item in this.ChildElements.ToList())
            {
                item.Remove();
                parent.InsertAt(item, index++);
            }   
        }
 protected internal override void RenderNode(WordTemplateParameters p)
 {
     if (this.Parent is Paragraph && !this.Parent.ChildElements.Any(a => BlockContainerNode.IsImportant (a) && a != this))
         this.Parent.Remove();
     else
         this.Remove();
 }
        internal protected override void RenderNode(WordTemplateParameters p)
        {
            object obj = ValueProvider.GetValue(p);
            string text = obj is Enum ? ((Enum)obj).NiceToString() :
                obj is IFormattable ? ((IFormattable)obj).ToString(Format ?? ValueProvider.Format, p.Culture) :
                obj.TryToString();

            this.ReplaceBy(new Run(this.RunProperties.TryDo(prop => prop.Remove()), new Text(text)));
        }
Example #12
0
 internal protected abstract void RenderNode(WordTemplateParameters p);
        protected internal override void RenderNode(WordTemplateParameters p)
        {
            var parent = this.Parent;
            
            this.ValueProvider.Foreach(p, () =>
            {
                var clone = (BlockNode)this.ForeachBlock.CloneNode(true);

                var index = parent.ChildElements.IndexOf(this);
                
                parent.InsertAt(clone, index);

                clone.RenderNode(p);
            });

            parent.RemoveChild(this);
        }