Example #1
0
        public static void generate3DPieChartForArea(Presentation pres, ISlide slide, Dictionary <string, Dictionary <string, decimal> > data)
        {
            int currentSlidePos = slide.SlideNumber - 1;
            int cy  = data.Keys.Count / Constant.area3DPieChartCountShow;
            int mod = data.Keys.Count % Constant.area3DPieChartCountShow;
            int pieChartSlideCount = mod == 0 ? cy : cy + 1;

            List <string> dataKeys = data.Keys.ToList();

            ChartProperty cp = new ChartProperty();

            cp.y      = 100;
            cp.height = 350;
            cp.width  = 350;

            for (int j = 1; j <= pieChartSlideCount; j++)
            {
                List <string> tmpDataKeys = new List <string>();
                Dictionary <string, decimal>         dataSpecific     = null;
                List <Dictionary <string, decimal> > tempDataSpecific = new List <Dictionary <string, decimal> >();
                tmpDataKeys.Add(dataKeys[j * 2 - 2]);
                if (data.TryGetValue(dataKeys[j * 2 - 2], out dataSpecific))
                {
                    tempDataSpecific.Add(dataSpecific);
                }
                if (j * 2 - 1 < dataKeys.Count)
                {
                    tmpDataKeys.Add(dataKeys[j * 2 - 1]);
                    if (data.TryGetValue(dataKeys[j * 2 - 1], out dataSpecific))
                    {
                        tempDataSpecific.Add(dataSpecific);
                    }
                }

                if (j != 1)
                {
                    ISlide CloneSlide = pres.Slides.AddClone(slide);
                    pptxUtil.ReplaceTagForSlide(CloneSlide, Constant.pcaTemplatePrefix, "");
                    for (int index = 0; index < tempDataSpecific.Count; index++)
                    {
                        cp.x     = 50 + index * cp.width + index * 20;
                        cp.title = string.Format("{0} progress", tmpDataKeys[index]);
                        add3DPieChartToSlide(CloneSlide, cp, tempDataSpecific[index]);
                    }
                    if (pres.Slides.Count - 1 > currentSlidePos + j)
                    {
                        pres.Slides.InsertClone(currentSlidePos + j - 1, CloneSlide);
                    }
                    CloneSlide.Remove();
                }
                else
                {
                    ISlide CloneSlide = pres.Slides.AddClone(slide);
                    pptxUtil.ReplaceTagForSlide(CloneSlide, Constant.pcaTemplatePrefix, "");
                    for (int index = 0; index < tempDataSpecific.Count; index++)
                    {
                        cp.x     = 50 + index * cp.width + index * 20;
                        cp.title = string.Format("{0} progress", tmpDataKeys[index]);
                        add3DPieChartToSlide(CloneSlide, cp, tempDataSpecific[index]);
                    }
                    pres.Slides.InsertClone(currentSlidePos, CloneSlide);
                    CloneSlide.Remove();
                }
            }

            slide.Remove();
        }
Example #2
0
        private static void replaceAreaOutlineTemplate(Presentation pres, ISlide slide, Dictionary <string, Dictionary <string, decimal> > data)
        {
            ISlide lineSpecificSlide = null;
            ISlide outLineCloneSlide = null;
            ISlide areaSpecificSlide = null;
            ISlide linePieChartSlide = null;

            int           lineIncreaseIndex = 0;
            List <string> areaKeys          = data.Keys.ToList();

            for (int ouIndex = 0; ouIndex < areaKeys.Count; ouIndex++)
            {
                Dictionary <string, decimal> preLineData = new Dictionary <string, decimal>();
                Dictionary <string, decimal> curLineData = new Dictionary <string, decimal>();
                int preSlideLineCount = 0;
                int curSlideLineCount = 0;
                if (ouIndex - 1 >= 0)
                {
                    if (data.TryGetValue(areaKeys[ouIndex - 1], out preLineData))
                    {
                        preSlideLineCount = preLineData.Count;
                    }
                }
                if (data.TryGetValue(areaKeys[ouIndex], out curLineData))
                {
                    curSlideLineCount = curLineData.Count;
                }
                int currentIndex = slide.SlideNumber - 1;
                if (preSlideLineCount == 0)
                {
                    lineSpecificSlide = pres.Slides[currentIndex + 2];
                    linePieChartSlide = pres.Slides[currentIndex + 3];

                    for (int k = 1; k < curSlideLineCount; k++)
                    {
                        pres.Slides.InsertClone(currentIndex + 2 * k + 1, linePieChartSlide);
                        pres.Slides.InsertClone(currentIndex + 2 * k + 2, lineSpecificSlide);
                    }
                    lineIncreaseIndex += 2 * curSlideLineCount + 2;
                }
                else
                {
                    outLineCloneSlide = pres.Slides.AddClone(slide);
                    areaSpecificSlide = pres.Slides[currentIndex + 1];
                    lineSpecificSlide = pres.Slides[currentIndex + 2];
                    linePieChartSlide = pres.Slides[currentIndex + lineIncreaseIndex - 1];

                    string tmpAreaOutlineSpefic = string.Format("{0}. {1}", ouIndex + 1, areaKeys[ouIndex]);
                    ReplaceTagForSlide(outLineCloneSlide, Constant.bodyTextForAreaTemplatePrefix, "");
                    ReplaceTagForSlide(outLineCloneSlide, Constant.aoTemplatePrefix, tmpAreaOutlineSpefic);

                    pres.Slides.InsertClone(currentIndex + lineIncreaseIndex, outLineCloneSlide);
                    pres.Slides.InsertClone(currentIndex + lineIncreaseIndex + 1, areaSpecificSlide);
                    outLineCloneSlide.Remove();
                    for (int k = 1; k <= curSlideLineCount; k++)
                    {
                        int baseIndex = currentIndex + lineIncreaseIndex + 2 * k;
                        pres.Slides.InsertClone(baseIndex, lineSpecificSlide);
                        pres.Slides.InsertClone(baseIndex + 1, linePieChartSlide);
                    }

                    lineIncreaseIndex += 2 * curSlideLineCount + 2;
                }
            }

            string areaOutlineSpefic = string.Format("{0}. {1}", 1, areaKeys[0]);

            ReplaceTagForSlide(slide, Constant.bodyTextForAreaTemplatePrefix, "");
            ReplaceTagForSlide(slide, Constant.aoTemplatePrefix, areaOutlineSpefic);
        }