示例#1
0
        private List <ChartAttribute> GenerateReport(ReportType type, List <invoice> items, DateTime start, DateTime finish)
        {
            //kamus
            List <ChartAttribute> chart = new List <ChartAttribute>();
            ChartAttribute        temp  = new ChartAttribute();
            DateTime tempDate;

            //algoritma
            if (type.Equals(ReportType.DAILY))
            {
                tempDate = start;          //kondisi startnya berdasarkan tanggal awal inputan buat pembanding
                while (tempDate <= finish) //dibandingkan dengan tanggal akhir inputan
                {
                    temp          = new ChartAttribute();
                    temp.Category = tempDate;
                    temp.Value    = items.Where(n => n.invoice_date == tempDate).Sum(m => m.total);

                    chart.Add(temp);
                    tempDate = tempDate.AddDays(1);
                }
            }
            else
            {
                tempDate = start;
                while (tempDate <= finish)
                {
                    temp          = new ChartAttribute();
                    temp.Category = tempDate;
                    temp.Value    = items.Where(n => n.invoice_date.Month == tempDate.Month).Sum(m => m.total);

                    chart.Add(temp);
                    tempDate = tempDate.AddMonths(1);
                }
            }

            return(chart);
        }
        public void DrawPolarPlot(double[] mag1, double[] ang1)
        {
            try
            {
                RemovePreviousObjects();
                chartVu = this;

                Font     theLabelFont = new Font("Courier", 10, FontStyle.Regular);
                string[] sarrxlab     = new string[mag1.Length];
                int      nump1        = mag1.Length;

                for (int i = 0; i < nump1; i++)
                {
                    sarrxlab[i] = "Mag " + mag1[i].ToString() + ", Angle " + ang1[i].ToString();
                    ang1[i]     = ChartSupport.ToRadians((double)ang1[i]);
                }
                theFont = new Font("Microsoft Sans Serif", 10, FontStyle.Bold);
                chartVu = this;

                SimpleDataset Dataset1 = new SimpleDataset("First", mag1, ang1);
                pPolarTransform = new PolarCoordinates();
                pPolarTransform.SetGraphBorderDiagonal(0.25, .2, .75, 0.8);

                background = new Background(pPolarTransform, ChartObj.GRAPH_BACKGROUND, GraphBG1, GraphBG2, GraphBGDir);
                chartVu.AddChartObject(background);

                plotbackground = new Background(pPolarTransform, ChartObj.PLOT_BACKGROUND, ChartBG1, ChartBG2, ChartBGDir);
                chartVu.AddChartObject(plotbackground);

                pPolarTransform.AutoScale(Dataset1);

                pPolarAxis = pPolarTransform.GetCompatibleAxes();
                pPolarAxis.SetColor(_AxisColor);
                chartVu.AddChartObject(pPolarAxis);

                pPolarGrid = new PolarGrid(pPolarAxis, PolarGrid.GRID_MAJOR);
                pPolarGrid.SetColor(_AxisColor);
                chartVu.AddChartObject(pPolarGrid);

                pPolarAxisLabels = (PolarAxesLabels)pPolarAxis.GetCompatibleAxesLabels();
                pPolarAxisLabels.SetColor(_AxisColor);
                chartVu.AddChartObject(pPolarAxisLabels);

                ChartAttribute attrib1 = new ChartAttribute(Color.Blue, 2, 0);

                ChartAttribute attrib2 = new ChartAttribute(Color.Red, .5, 0, Color.Red);
                attrib2.SetFillFlag(true);

                thePlot2 = new PolarScatterPlot(pPolarTransform, Dataset1, ChartObj.CIRCLE, attrib2);
                chartVu.AddChartObject(thePlot2);

                PolarLinePlot thePlot1 = new PolarLinePlot(pPolarTransform, Dataset1, attrib1);
                chartVu.AddChartObject(thePlot1);

                findObj = new CustomFindObj1(chartVu, sarrxlab);
                findObj.SetDataToolTipFormat(ChartObj.DATA_TOOLTIP_CUSTOM);
                findObj.SetEnable(true);
                chartVu.SetCurrentMouseListener(findObj);

                if (_ChartFooter != null)
                {
                    ChartTitle footer = new ChartTitle(pPolarTransform, theFont, _ChartFooter);
                    footer.SetColor(Color.Black);
                    footer.SetTitleType(ChartObj.CHART_FOOTER);
                    footer.SetTitlePosition(ChartObj.CENTER_GRAPH);
                    footer.SetTitleOffset(8);
                    chartVu.AddChartObject(footer);
                }
                this.SetResizeMode(ChartObj.NO_RESIZE_OBJECTS);
            }
            catch (Exception ex)
            {
            }
        }
示例#3
0
        private List <ChartAttribute> GenerateReport(List <rent> items, DateTime start, DateTime finish)
        {
            //kamus
            List <ChartAttribute> result = new List <ChartAttribute>();
            ChartAttribute        oneMonthData;
            List <rent>           rentsPerMonth, rentsPerDay;
            int            totalUsage;
            double         utilization;
            List <Guid>    carInOneDay;
            int            ownerCarsCount;
            DateTime       iteration;
            int            daysInMonth;
            DateTime       dtStartMonth, dtEndMonth, dtStartDay, dtEndDay;
            DateTimeOffset dtoStartMonth, dtoEndMonth, dtoStartDay, dtoEndDay;
            Guid?          idOwner = (User as CustomPrincipal).IdOwner;

            //algoritma
            //Business.Infrastructure.FilterInfo filters = new Business.Infrastructure.FilterInfo { Field = "id_owner", Operator = "eq", Value = idOwner.ToString() }; // fungsi semacam where
            Business.Infrastructure.FilterInfo filters = new Business.Infrastructure.FilterInfo();
            if (filters.Filters == null)
            {
                filters.Filters = new List <Business.Infrastructure.FilterInfo>();
                filters.Logic   = "and";
            }

            filters.Filters.Add(new Business.Infrastructure.FilterInfo
            {
                Field    = "id_owner",
                Operator = "eq",
                Value    = idOwner.ToString()
            });
            filters.Filters.Add(new Business.Infrastructure.FilterInfo
            {
                Field    = "is_active",
                Operator = "eq",
                Value    = true.ToString()
            });
            ownerCarsCount = RepoCar.Count(filters);

            iteration = new DateTime(start.Year, start.Month, 1);
            finish    = new DateTime(finish.Year, finish.Month, 1);

            while (iteration <= finish)
            {
                //koding
                //List<rent> tempRent = items.Where(n => (n.start_rent <= iteration && n.finish_rent >= iteration) || (n.start_rent >= start && n.start_rent <= finish)).ToList();
                oneMonthData = new ChartAttribute();
                totalUsage   = 0;
                utilization  = 0;

                //mengecek hari dalam sebulan
                daysInMonth = System.DateTime.DaysInMonth(iteration.Year, iteration.Month);

                //mengambil data rent dalam 1 bulan
                dtStartMonth  = new DateTime(iteration.Year, iteration.Month, 1, 0, 0, 0);
                dtStartMonth  = DateTime.SpecifyKind(dtStartMonth, DateTimeKind.Local);
                dtoStartMonth = dtStartMonth;

                dtEndMonth  = new DateTime(iteration.Year, iteration.Month, DateTime.DaysInMonth(iteration.Year, iteration.Month), 23, 59, 59);
                dtEndMonth  = DateTime.SpecifyKind(dtEndMonth, DateTimeKind.Local);
                dtoEndMonth = dtEndMonth;

                rentsPerMonth = items.Where(n =>
                                            (n.start_rent <= dtoStartMonth && n.finish_rent >= dtoStartMonth) ||
                                            (n.start_rent <= dtoEndMonth && n.finish_rent >= dtoEndMonth) ||
                                            (n.start_rent >= dtoStartMonth && n.finish_rent <= dtoEndMonth) ||
                                            (n.start_rent <= dtoStartMonth && n.finish_rent >= dtoEndMonth)
                                            ).ToList();

                //iteration for eachday
                for (int j = 1; j <= daysInMonth; j++)
                {
                    //DateTime dateStartTemp = new DateTime(iteration.Year, iteration.Month, j);
                    //DateTime dateFinishTemp = new DateTime(iteration.Year, iteration.Month, j);

                    //rentPerDay = rentPerMonth.Where(n => (n.start_rent <= dateStartTemp && n.finish_rent >= dateStartTemp) || (n.start_rent >= dateStartTemp && n.finish_rent <= dateFinishTemp) || (n.finish_rent >= dateStartTemp && n.finish_rent <= dateFinishTemp) || (n.start_rent.Day <= dateStartTemp.Day && n.finish_rent.Day >= dateStartTemp.Day) || (n.start_rent.Day >= dateStartTemp.Day && n.finish_rent.Day <= dateFinishTemp.Day) || (n.finish_rent.Day >= dateStartTemp.Day && n.finish_rent.Day <= dateFinishTemp.Day) || (n.start_rent.Day <= dateStartTemp.Day && n.finish_rent.Day >= dateStartTemp.Day && n.start_rent.Month <= dateStartTemp.Month && n.finish_rent.Month >= dateStartTemp.Month) || (n.start_rent.Day >= dateStartTemp.Day && n.finish_rent.Day <= dateFinishTemp.Day && n.start_rent.Month >= dateStartTemp.Month && n.finish_rent.Month <= dateFinishTemp.Month) || (n.finish_rent.Day >= dateStartTemp.Day && n.finish_rent.Day <= dateFinishTemp.Day && n.finish_rent.Day >= dateStartTemp.Day && n.finish_rent.Month <= dateFinishTemp.Month) || (n.start_rent <= dateStartTemp && n.start_rent <= dateFinishTemp)).ToList();
                    //rentPerDay = rentPerMonth.Where(n => (n.start_rent <= dateStartTemp && n.finish_rent >= dateStartTemp) || (n.start_rent >= dateStartTemp && n.finish_rent <= dateFinishTemp) || (n.finish_rent >= dateStartTemp && n.finish_rent <= dateFinishTemp) || (n.start_rent.Day <= dateStartTemp.Day && n.finish_rent.Day >= dateStartTemp.Day) || (n.start_rent.Day >= dateStartTemp.Day && n.finish_rent.Day <= dateFinishTemp.Day) || (n.finish_rent.Day >= dateStartTemp.Day && n.finish_rent.Day <= dateFinishTemp.Day)).ToList();
                    //List<rent> daysMonth = tempRent.Where(tempRent.GetRange().ToList();
                    //rentsPerDay = rentsPerMonth.Where(n =>
                    //    (n.start_rent <= dateStartTemp && n.finish_rent >= dateFinishTemp) ||
                    //    (n.start_rent >= dateStartTemp && n.start_rent <= dateFinishTemp) ||
                    //    (n.finish_rent >= dateStartTemp && n.finish_rent <= dateFinishTemp) ||
                    //    (n.start_rent.Day <= dateStartTemp.Day && n.finish_rent.Day >= dateStartTemp.Day) ||
                    //    (n.start_rent.Day >= dateStartTemp.Day && n.finish_rent.Day <= dateFinishTemp.Day) ||
                    //    (n.finish_rent.Day >= dateStartTemp.Day && n.finish_rent.Day <= dateFinishTemp.Day)
                    //).ToList();

                    dtStartDay  = new DateTime(iteration.Year, iteration.Month, j, 0, 0, 0);
                    dtStartDay  = DateTime.SpecifyKind(dtStartDay, DateTimeKind.Local);
                    dtoStartDay = dtStartDay;

                    dtEndDay  = new DateTime(iteration.Year, iteration.Month, j, 23, 59, 59);
                    dtEndDay  = DateTime.SpecifyKind(dtEndDay, DateTimeKind.Local);
                    dtoEndDay = dtEndDay;

                    rentsPerDay = rentsPerMonth.Where(n =>
                                                      (n.start_rent <= dtoStartDay && n.finish_rent >= dtoStartDay) ||
                                                      (n.start_rent <= dtoEndDay && n.finish_rent >= dtoEndDay) ||
                                                      (n.start_rent >= dtoStartDay && n.finish_rent <= dtoEndDay) ||
                                                      (n.start_rent <= dtoStartDay && n.finish_rent >= dtoEndDay)
                                                      ).ToList();

                    carInOneDay = new List <Guid>();

                    foreach (rent r in rentsPerDay)
                    {
                        if (r.id_car.HasValue)
                        {
                            if (!carInOneDay.Contains(r.id_car.Value))
                            {
                                ++totalUsage;
                                carInOneDay.Add(r.id_car.Value);
                            }
                        }
                    }
                }

                utilization           = ((double)(totalUsage * 100)) / ((double)(daysInMonth * ownerCarsCount));
                oneMonthData.Value    = utilization;
                oneMonthData.Category = new DateTime(iteration.Year, iteration.Month, 1);
                result.Add(oneMonthData);

                iteration = iteration.AddMonths(1);
            }

            return(result);
        }
        internal void CommonFunctionality(SimpleDataset3D[] arrSimpleDS)
        {
            int            iCount           = 0;
            Background     objCBGND         = null;
            ChartAttribute objWallAttribute = null;
            Wall3D         objxyMinZWall    = null;

            Wall3D objyzMinXWall = null;

            Wall3D            objxzMinYWall = null;
            LinearAxis        xAxis         = null;
            LinearAxis        yAxis         = null;
            AxisTitle         objXAxisTitle = null;
            AxisTitle         objYAxisTitle = null;
            NumericAxisLabels XAxisLabel    = null;
            NumericAxisLabels YAxisLabel    = null;
            Grid           xGrid            = null;
            Grid           yGrid            = null;
            ChartAttribute objAttribute     = null;


            try
            {
                iCount         = arrSimpleDS.Length;
                m_objChartView = m_obj3DGraphControl;
                if (m_obj3DGraphControl != null)
                {
                    m_objChartView = m_obj3DGraphControl;
                }

                string[] sarrLabels = m_sUnits.Split(new char[] { ',' });

                m_objFont = new Font("Microsoft Sans Serif", 5, FontStyle.Regular);

                m_objCartesianCordinates = new CartesianCoordinates();
                m_objCartesianCordinates.AutoScale(arrSimpleDS, ChartObj.AUTOAXES_EXACT, ChartObj.AUTOAXES_EXACT);


                m_objCartesianCordinates.AbsRotateCoordinateSystem(new Point3D(5, 3, 0));

                m_objChartView.SetFractionalZViewportDepth(4);

                objCBGND = new Background(m_objCartesianCordinates, ChartObj.GRAPH_BACKGROUND, Color.FromArgb(241, 241, 247));
                m_objChartView.AddChartObject(objCBGND);

                objWallAttribute = new ChartAttribute(Color.Beige, 0.5, DashStyle.Solid, Color.LightGray);
                objxyMinZWall    = new Wall3D(m_objCartesianCordinates, ChartObj.XY_MAXZ_PLANE, 0, objWallAttribute);
                m_objChartView.AddChartObject(objxyMinZWall);
                objyzMinXWall = new Wall3D(m_objCartesianCordinates, ChartObj.YZ_MINX_PLANE, 0, objWallAttribute);
                m_objChartView.AddChartObject(objyzMinXWall);
                objxzMinYWall = new Wall3D(m_objCartesianCordinates, ChartObj.XZ_MINY_PLANE, 0, objWallAttribute);
                m_objChartView.AddChartObject(objxzMinYWall);

                m_objCartesianCordinates.SetGraphBorderDiagonal(0.15, .15, .90, 0.75);

                xAxis = new LinearAxis(m_objCartesianCordinates, ChartObj.X_AXIS);
                xAxis.CalcAutoAxis();
                m_objChartView.AddChartObject(xAxis);

                XAxisLabel = new NumericAxisLabels(xAxis);
                XAxisLabel.SetTextFont(m_objFont);
                m_objChartView.AddChartObject(XAxisLabel);



                switch (m_sTimeAxis)
                {
                case "Sec":
                    objXAxisTitle = new AxisTitle(xAxis, m_objFont, "Sec");
                    m_objChartView.AddChartObject(objXAxisTitle);

                    break;

                case "Others":

                    objXAxisTitle = new AxisTitle(xAxis, m_objFont, sarrLabels[0]);
                    m_objChartView.AddChartObject(objXAxisTitle);
                    break;
                }

                yAxis = new LinearAxis(m_objCartesianCordinates, ChartObj.Y_AXIS);
                yAxis.CalcAutoAxis();
                m_objChartView.AddChartObject(yAxis);

                YAxisLabel = new NumericAxisLabels(yAxis);
                YAxisLabel.SetTextFont(m_objFont);
                m_objChartView.AddChartObject(YAxisLabel);


                objYAxisTitle = new AxisTitle(yAxis, m_objFont, sarrLabels[1]);
                m_objChartView.AddChartObject(objYAxisTitle);

                switch (iCount)
                {
                case 1:

                    objAttribute       = new ChartAttribute(Color.DarkRed, 0.5, DashStyle.Solid);
                    m_objFirstLinePlot = new SimpleLinePlot(m_objCartesianCordinates, arrSimpleDS[0], objAttribute);
                    m_objChartView.AddChartObject(m_objFirstLinePlot);


                    ChartText objFirstText = new ChartText(m_objCartesianCordinates, m_objFont, (string)m_arlstDates[0], m_objFirstLinePlot.DisplayDataset.XData[m_objFirstLinePlot.DisplayDataset.XData.Length - 60], m_objFirstLinePlot.DisplayDataset.YData[m_objFirstLinePlot.DisplayDataset.YData.Length - 60], ChartObj.PHYS_POS);

                    m_objChartView.AddChartObject(objFirstText);

                    break;

                case 2:
                    objAttribute       = new ChartAttribute(Color.DarkRed, 0.5, DashStyle.Solid);
                    m_objFirstLinePlot = new SimpleLinePlot(m_objCartesianCordinates, arrSimpleDS[0], objAttribute);
                    m_objChartView.AddChartObject(m_objFirstLinePlot);

                    ChartText objNewFirstText = new ChartText(m_objCartesianCordinates, m_objFont, (string)m_arlstDates[1], m_objFirstLinePlot.DisplayDataset.XData[m_objFirstLinePlot.DisplayDataset.XData.Length - 60], m_objFirstLinePlot.DisplayDataset.YData[m_objFirstLinePlot.DisplayDataset.YData.Length - 60], 0.002, ChartObj.PHYS_POS);

                    m_objChartView.AddChartObject(objNewFirstText);

                    objAttribute        = new ChartAttribute(Color.DarkGreen, 0.5, DashStyle.Solid);
                    m_objSecondLinePlot = new SimpleLinePlot(m_objCartesianCordinates, arrSimpleDS[1], objAttribute);
                    m_objChartView.AddChartObject(m_objSecondLinePlot);

                    ChartText objSecondText = new ChartText(m_objCartesianCordinates, m_objFont, (string)m_arlstDates[0], m_objSecondLinePlot.DisplayDataset.XData[m_objSecondLinePlot.DisplayDataset.XData.Length - 60], m_objSecondLinePlot.DisplayDataset.YData[m_objSecondLinePlot.DisplayDataset.YData.Length - 60], 0, ChartObj.PHYS_POS);
                    m_objChartView.AddChartObject(objSecondText);


                    break;

                case 3:

                    objAttribute       = new ChartAttribute(Color.DarkRed, 0.5, DashStyle.Solid);
                    m_objFirstLinePlot = new SimpleLinePlot(m_objCartesianCordinates, arrSimpleDS[0], objAttribute);
                    m_objChartView.AddChartObject(m_objFirstLinePlot);

                    ChartText objThirdFirstText = new ChartText(m_objCartesianCordinates, m_objFont, (string)m_arlstDates[2], m_objFirstLinePlot.DisplayDataset.XData[m_objFirstLinePlot.DisplayDataset.XData.Length - 60], m_objFirstLinePlot.DisplayDataset.YData[m_objFirstLinePlot.DisplayDataset.YData.Length - 60], 0.0045, ChartObj.PHYS_POS);

                    m_objChartView.AddChartObject(objThirdFirstText);

                    objAttribute        = new ChartAttribute(Color.DarkGreen, 0.5, DashStyle.Solid);
                    m_objSecondLinePlot = new SimpleLinePlot(m_objCartesianCordinates, arrSimpleDS[1], objAttribute);
                    m_objChartView.AddChartObject(m_objSecondLinePlot);

                    ChartText objThirdSecondText = new ChartText(m_objCartesianCordinates, m_objFont, (string)m_arlstDates[1], m_objSecondLinePlot.DisplayDataset.XData[m_objSecondLinePlot.DisplayDataset.XData.Length - 60], m_objSecondLinePlot.DisplayDataset.YData[m_objSecondLinePlot.DisplayDataset.YData.Length - 60], 0.0025, ChartObj.PHYS_POS);
                    m_objChartView.AddChartObject(objThirdSecondText);

                    objAttribute       = new ChartAttribute(Color.DarkGoldenrod, 0.5, DashStyle.Solid);
                    m_objThirdLinePlot = new SimpleLinePlot(m_objCartesianCordinates, arrSimpleDS[2], objAttribute);
                    m_objChartView.AddChartObject(m_objThirdLinePlot);

                    ChartText objThirdThirdText = new ChartText(m_objCartesianCordinates, m_objFont, (string)m_arlstDates[0], m_objThirdLinePlot.DisplayDataset.XData[m_objThirdLinePlot.DisplayDataset.XData.Length - 60], m_objThirdLinePlot.DisplayDataset.YData[m_objThirdLinePlot.DisplayDataset.YData.Length - 60], 0, ChartObj.PHYS_POS);
                    m_objChartView.AddChartObject(objThirdThirdText);



                    break;

                case 4:

                    objAttribute       = new ChartAttribute(Color.DarkRed, 0.5, DashStyle.Solid);
                    m_objFirstLinePlot = new SimpleLinePlot(m_objCartesianCordinates, arrSimpleDS[0], objAttribute);
                    m_objChartView.AddChartObject(m_objFirstLinePlot);

                    ChartText objFourthFirstText = new ChartText(m_objCartesianCordinates, m_objFont, (string)m_arlstDates[3], m_objFirstLinePlot.DisplayDataset.XData[m_objFirstLinePlot.DisplayDataset.XData.Length - 60], m_objFirstLinePlot.DisplayDataset.YData[m_objFirstLinePlot.DisplayDataset.YData.Length - 60], 0.0075, ChartObj.PHYS_POS);

                    m_objChartView.AddChartObject(objFourthFirstText);

                    objAttribute        = new ChartAttribute(Color.DarkGreen, 0.5, DashStyle.Solid);
                    m_objSecondLinePlot = new SimpleLinePlot(m_objCartesianCordinates, arrSimpleDS[1], objAttribute);
                    m_objChartView.AddChartObject(m_objSecondLinePlot);

                    ChartText objFourthSecondText = new ChartText(m_objCartesianCordinates, m_objFont, (string)m_arlstDates[2], m_objSecondLinePlot.DisplayDataset.XData[m_objSecondLinePlot.DisplayDataset.XData.Length - 60], m_objSecondLinePlot.DisplayDataset.YData[m_objSecondLinePlot.DisplayDataset.YData.Length - 60], 0.0045, ChartObj.PHYS_POS);
                    m_objChartView.AddChartObject(objFourthSecondText);

                    objAttribute       = new ChartAttribute(Color.DarkGoldenrod, 0.5, DashStyle.Solid);
                    m_objThirdLinePlot = new SimpleLinePlot(m_objCartesianCordinates, arrSimpleDS[2], objAttribute);
                    m_objChartView.AddChartObject(m_objThirdLinePlot);

                    ChartText objFourthThirdText = new ChartText(m_objCartesianCordinates, m_objFont, (string)m_arlstDates[1], m_objThirdLinePlot.DisplayDataset.XData[m_objThirdLinePlot.DisplayDataset.XData.Length - 60], m_objThirdLinePlot.DisplayDataset.YData[m_objThirdLinePlot.DisplayDataset.YData.Length - 60], 0.002, ChartObj.PHYS_POS);
                    m_objChartView.AddChartObject(objFourthThirdText);


                    objAttribute        = new ChartAttribute(Color.DarkViolet, 0.5, DashStyle.Solid);
                    m_objFourthLinePlot = new SimpleLinePlot(m_objCartesianCordinates, arrSimpleDS[3], objAttribute);
                    m_objChartView.AddChartObject(m_objFourthLinePlot);


                    ChartText objFourthFourthText = new ChartText(m_objCartesianCordinates, m_objFont, (string)m_arlstDates[0], m_objFourthLinePlot.DisplayDataset.XData[m_objFourthLinePlot.DisplayDataset.XData.Length - 60], m_objFourthLinePlot.DisplayDataset.YData[m_objFourthLinePlot.DisplayDataset.YData.Length - 60], 0, ChartObj.PHYS_POS);
                    m_objChartView.AddChartObject(objFourthFourthText);

                    break;
                }
            }
            catch
            {
                throw;
            }
        }