Example #1
0
        public override Task <AllTxnData> GetTxnChart(ChartParams request, ServerCallContext context)
        {
            var replay = new AllTxnData();

            replay.Datas.Add(dataChart);
            return(Task.FromResult(replay));
        }
        public string GetChartParams(int id)
        {
            var pages = db.Pages.Where(p => p.MaxResponseTime != null && p.Sitemap.UId == id).Take(350).ToList();
            var res   = new ChartParams();

            res.links  = new List <string>();
            res.values = new List <double?>();
            foreach (var page in pages)
            {
                res.links.Add(page.PageLink);
                res.values.Add(page.MaxResponseTime);
            }
            return(JsonConvert.SerializeObject(res));
        }
        public static IChart Chart(this IWorksheet ws, ChartParams chartDetails)
        {
            var chart = ws.Shapes.AddChart(chartDetails.Left, chartDetails.Top, chartDetails.Right, chartDetails.Bottom).Chart;

            chart.HasTitle        = true;
            chart.ChartTitle.Text = chartDetails.ChartName;

            chart.Axes[AxisType.Category].HasTitle       = true;
            chart.Axes[AxisType.Category].AxisTitle.Text = chartDetails.YTitle;

            chart.Axes[AxisType.Value].HasTitle       = true;
            chart.Axes[AxisType.Value].AxisTitle.Text = chartDetails.XTitle;

            return(chart);
        }
Example #4
0
        public async Task <IActionResult> GetCharts([FromRoute] Guid organizationId, [FromQuery] TimeMatrixFilters filters, [FromQuery] ChartParams chartParams)
        {
            var data = await _chartService.GetProviderChartData(_am, filters, chartParams);

            return(Ok(data));
        }
Example #5
0
        public async Task <IActionResult> GetMarketingCharts([FromRoute] Guid organizationId, [FromQuery] TimeMatrixFilters filters, [FromQuery] ChartParams chartParams)
        {
            var data = await _chartService.GetMarketingChartData(_marketingAgencyOwner.Value, filters, chartParams);

            return(Ok(data));
        }
Example #6
0
        /// <summary>
        /// Index function differentiates between showing results for just on process |processids| == 1,
        /// and showing multiple processes at a time (always without regard to the actual occurrence time of the process)
        /// </summary>
        /// <param name="processids">list of processes to show</param>
        /// <param name="precision">level of precision (compared to normalized View - [0,1]!)</param>
        /// <param name="links">number of links('Glieder') we want our Envelope to have</param>
        /// <param name="options">view options (which graphs should we draw?)</param>
        /// <param name="par">dont know, never used this</param>
        /// <returns></returns>
        public ActionResult Index(int[] processids, decimal precision = 1m, int links = 5, string options = null, ChartParams par = null)
        {
            DataContainers.Clear();
            DataContainers.EnvelopeLinks     = links;
            DataContainers.EnvelopePrecision = precision;

            // Parameter
            if (par == null)
            {
                par = new ChartParams(new List <ChartBlockParams>()
                {
                });
            }

            //view options
            var viewOptions = new List <SwhkViewOptions>();

            if (options != null)
            {
                string[] zw = options.Split('@');
                for (int i = 0; i < zw.Length; i++)
                {
                    viewOptions.Add((SwhkViewOptions)Enum.Parse(typeof(SwhkViewOptions), zw[i]));
                }
            }
            if (viewOptions.Count == 0)
            {
                viewOptions.Add(SwhkViewOptions.Original);
            }

            if (processids == null && TempData["processids"] != null)
            {
                processids = (int[])TempData["processids"];
            }

#if DEBUG
            if (processids.Length > 5)
            {
                processids = processids.Take(5).ToArray();
            }
#endif

            //Chart-Config
            ChartConfig chartConfig = new ChartConfig()
            {
                Name = "Test"
            };

            ChartArea area = new ChartArea()
            {
                Name      = "Sollwerthüllkurve",
                ChartType = (int)ChartType.Polyline,
                Seq       = 1
            };
            chartConfig.Areas.Add(area);

            ChartBlockParams cbpar = new ChartBlockParams();
            cbpar.Start = DateTime.Now - new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
            TimeSpan maxTime = new TimeSpan(0L);

            Random rand = new Random();

            foreach (int processid in processids)
            {
                PredictiveProcessData process = GetProcessData(processid);
                process.ViewOptions.AddRange(viewOptions);

                if (process == null)
                {
                    throw new ArgumentException("process-id not found!");
                }

                if ((viewOptions.Contains(SwhkViewOptions.Original)))
                {
                    area.Functions.Add(new PredictiveChartFunction()
                    {
                        ChartFunctionId       = processid,
                        PrecictiveProcessData = process,
                        Name = process.Name,
                        Seq  = 1,
                        ChartDataSourceId = 1,
                        FillColor         = "#" + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2")
                    });
                }

                //if just one process id -> show some specifig graphs
                if (processids.Length == 1)
                {
                    //'Sollhüllwertkurve'
                    if (viewOptions.Contains(SwhkViewOptions.Envelope))
                    {
                        area.Functions.Add(new PredictiveChartFunction()
                        {
                            ChartFunctionId       = processid,
                            PrecictiveProcessData = process,
                            Name      = process.Name + "-envelope",
                            Seq       = 2,
                            FillColor = "#" + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2")
                        });
                    }
                    //nomalized graph
                    if (viewOptions.Contains(SwhkViewOptions.Normalized))
                    {
                        area.Functions.Add(new PredictiveChartFunction()
                        {
                            ChartFunctionId       = processid,
                            PrecictiveProcessData = process,
                            Name      = process.Name + "-normalized",
                            Seq       = 3,
                            FillColor = "#" + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2")
                        });
                    }
                    //lower bound
                    if (viewOptions.Contains(SwhkViewOptions.LowerBound))
                    {
                        area.Functions.Add(new PredictiveChartFunction()
                        {
                            ChartFunctionId       = processid,
                            PrecictiveProcessData = process,
                            Name      = process.Name + "-lower",
                            Seq       = 4,
                            FillColor = "#" + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2")
                        });
                    }
                    //upper bound
                    if (viewOptions.Contains(SwhkViewOptions.UpperBound))
                    {
                        area.Functions.Add(new PredictiveChartFunction()
                        {
                            ChartFunctionId       = processid,
                            PrecictiveProcessData = process,
                            Name      = process.Name + "-upper",
                            Seq       = 5,
                            FillColor = "#" + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2")
                        });
                    }
                }

                if (maxTime < process.UtcTo - process.UtcFrom)
                {
                    maxTime = (TimeSpan)(process.UtcTo - process.UtcFrom);
                }
            }

            //if mor than one id -> add avg graph and stuff
            if (processids.Length > 1)
            {
                if (viewOptions.Contains(SwhkViewOptions.AverageGraph))
                {
                    area.Functions.Add(new PredictiveChartFunction()
                    {
                        ChartFunctionId       = -1,
                        PrecictiveProcessData = DataContainers,
                        Name = "Average Graph Normalized",
                        Seq  = 6,
                        ChartDataSourceId = 1,
                        FillColor         = "#" + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2")
                    });
                }
                //Sollhüllwert based on AVG Graph
                if (viewOptions.Contains(SwhkViewOptions.AvgEnvelope))
                {
                    area.Functions.Add(new PredictiveChartFunction()
                    {
                        ChartFunctionId       = -2,
                        PrecictiveProcessData = DataContainers,
                        Name = "Average Swhk",
                        Seq  = 7,
                        ChartDataSourceId = 1,
                        FillColor         = "#" + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2")
                    });
                }
                //lower bound of avg
                if (viewOptions.Contains(SwhkViewOptions.LowerAverage))
                {
                    area.Functions.Add(new PredictiveChartFunction()
                    {
                        ChartFunctionId       = -3,
                        PrecictiveProcessData = DataContainers,
                        Name = "Average Graph Lower",
                        Seq  = 8,
                        ChartDataSourceId = 1,
                        FillColor         = "#" + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2")
                    });
                }
                //upper bound of avg
                if (viewOptions.Contains(SwhkViewOptions.UpperAverage))
                {
                    area.Functions.Add(new PredictiveChartFunction()
                    {
                        ChartFunctionId       = -4,
                        PrecictiveProcessData = DataContainers,
                        Name = "Average Graph Upper",
                        Seq  = 9,
                        ChartDataSourceId = 1,
                        FillColor         = "#" + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2") + ((byte)rand.Next(256)).ToString("X2")
                    });
                }
            }

            cbpar.Stop = cbpar.Start + maxTime;
            par.Blocks.Add(cbpar);

            //ViewModel
            var viewModel = new ChartViewModel();
            viewModel.Load(chartConfig);
            viewModel.Timelines.AddRange(par.Blocks.Select(b => b.ToTimelineViewModel()));
            viewModel.PredictiveFunctions.AddRange(DataContainers);

            if (viewModel.Timelines.Count != 0)
            {
                SaveDisplayInterval(viewModel.Timelines[0].Start, viewModel.Timelines[0].Stop);
            }

            return(View(viewModel));
        }
        public async Task <MarketingAgencyOwnerChartOutput> GetMarketingChartData(IMarketingAgencyOwner owner,
                                                                                  TimeMatrixFilters filters, ChartParams chartParams)
        {
            var result = await _matrixService.GetMarketingAgencyComposedOutput(owner, filters);

            var status = result.Matrix
                         .ToStatusData <MarketingAgencyOwnerTimeMatrixOutput, MarketingAgencyOwnerChartDataItem>()
                         .FillMissingDays(chartParams.DateBreakdown, filters).TopLevelGrouping(chartParams.DateBreakdown)
                         .SecondLevelGrouping(chartParams.DateBreakdown);


            var ma = result.Matrix.ToMaData <MarketingAgencyOwnerTimeMatrixOutput, AgencyOwnerOrganizationMarketerOutput, MarketingAgencyOwnerChartDataItem>(result.Marketers).
                     FillMissingDays(chartParams.DateBreakdown, filters).
                     TopLevelGrouping(chartParams.DateBreakdown).
                     SecondLevelGrouping(chartParams.DateBreakdown);

            return(new MarketingAgencyOwnerChartOutput
            {
                Ma = ma,
                Status = status,
                CurrentBreakdown = "ma",
                CurrentDateRange = chartParams.DateBreakdown == DateBreakdown.ByMonth ? "m0" : "w0",
                DateRanges = GetDateRange(chartParams.DateBreakdown, ma),
                Breakdowns = new Dictionary <string, string>
                {
                    { "ma", "By Marketer" },
                    { "status", "By Status" }
                }
            });
        }
        public async Task <ProviderAgencyOwnerChartOutput> GetProviderChartData(IProviderAgencyOwner owner,
                                                                                TimeMatrixFilters filters, ChartParams chartParams)
        {
            var result = await _matrixService.GetProviderAgencyComposedOutput(owner, filters);

            var status = result.Matrix
                         .ToStatusData <ProviderAgencyOwnerTimeMatrixOutput, ProviderAgencyOwnerChartDataItem>()
                         .FillMissingDays(chartParams.DateBreakdown, filters).TopLevelGrouping(chartParams.DateBreakdown)
                         .SecondLevelGrouping(chartParams.DateBreakdown);

            var projs = result.Matrix
                        .ToProjData <ProviderAgencyOwnerTimeMatrixOutput, AgencyOwnerProjectOutput,
                                     ProviderAgencyOwnerChartDataItem>(result.Projects)
                        .FillMissingDays(chartParams.DateBreakdown, filters).TopLevelGrouping(chartParams.DateBreakdown)
                        .SecondLevelGrouping(chartParams.DateBreakdown);

            var am = result.Matrix
                     .ToAmData <ProviderAgencyOwnerTimeMatrixOutput, AgencyOwnerOrganizationAccountManagerOutput,
                                ProviderAgencyOwnerChartDataItem>(result.AccountManagers)
                     .FillMissingDays(chartParams.DateBreakdown, filters).TopLevelGrouping(chartParams.DateBreakdown)
                     .SecondLevelGrouping(chartParams.DateBreakdown);

            var pm = result.Matrix
                     .ToPmData <ProviderAgencyOwnerTimeMatrixOutput, AgencyOwnerOrganizationProjectManagerOutput,
                                ProviderAgencyOwnerChartDataItem>(result.ProjectManagers)
                     .FillMissingDays(chartParams.DateBreakdown, filters).TopLevelGrouping(chartParams.DateBreakdown)
                     .SecondLevelGrouping(chartParams.DateBreakdown);

            var co = result.Matrix
                     .ToCoData <ProviderAgencyOwnerTimeMatrixOutput, AgencyOwnerOrganizationContractorOutput,
                                ProviderAgencyOwnerChartDataItem>(result.Contractors)
                     .FillMissingDays(chartParams.DateBreakdown, filters).TopLevelGrouping(chartParams.DateBreakdown)
                     .SecondLevelGrouping(chartParams.DateBreakdown);


            return(new ProviderAgencyOwnerChartOutput
            {
                Proj = projs,
                Pm = pm,
                Co = co,
                Am = am,
                Status = status,
                CurrentBreakdown = "co",
                CurrentDateRange = chartParams.DateBreakdown == DateBreakdown.ByMonth ? "m0" : "w0",
                DateRanges = GetDateRange(chartParams.DateBreakdown, co),
                Breakdowns = new Dictionary <string, string>
                {
                    { "proj", "By Project" },
                    { "am", "By Account Manager" },
                    { "pm", "By Project Manager" },
                    { "co", "By Contractor" },
                    { "status", "By Status" }
                }
            });
        }
Example #9
0
        public async Task <ContractorChartOutput> GetProviderChartData(IOrganizationContractor contractor, TimeMatrixFilters filters, ChartParams chartParams)
        {
            var result = await _matrixService.GetComposedOutput(contractor, filters);

            var status = result.Matrix.ToStatusData <ContractorTimeMatrixOutput, ContractorChartDataItem>().
                         FillMissingDays(chartParams.DateBreakdown, filters).
                         TopLevelGrouping(chartParams.DateBreakdown).
                         SecondLevelGrouping(chartParams.DateBreakdown);


            var projs = result.Matrix.ToProjData <ContractorTimeMatrixOutput, ContractorProjectOutput, ContractorChartDataItem>(result.Projects).
                        FillMissingDays(chartParams.DateBreakdown, filters).
                        TopLevelGrouping(chartParams.DateBreakdown).
                        SecondLevelGrouping(chartParams.DateBreakdown);


            return(new ContractorChartOutput
            {
                Proj = projs,
                Status = status,
                CurrentBreakdown = "status",
                CurrentDateRange = chartParams.DateBreakdown == DateBreakdown.ByMonth ? "m0" : "w0",
                DateRanges = GetDateRange(chartParams.DateBreakdown, projs),
                Breakdowns = new Dictionary <string, string> {
                    { "proj", "By Project" },
                    { "status", "By Status" }
                }
            });
        }
Example #10
0
        public async Task <RecruiterChartOutput> GetProviderChartData(IOrganizationRecruiter recruiter, TimeMatrixFilters filters, ChartParams chartParams)
        {
            var result = await _matrixService.GetComposedOutput(recruiter, filters);

            var am = result.Matrix.ToAmData <RecruiterTimeMatrixOutput, RecruiterOrganizationAccountManagerOutput, RecruiterChartDataItem>(result.AccountManagers).
                     FillMissingDays(chartParams.DateBreakdown, filters).
                     TopLevelGrouping(chartParams.DateBreakdown).
                     SecondLevelGrouping(chartParams.DateBreakdown);

            var co = result.Matrix.ToCoData <RecruiterTimeMatrixOutput, RecruiterOrganizationContractorOutput, RecruiterChartDataItem>(result.Contractors).
                     FillMissingDays(chartParams.DateBreakdown, filters).
                     TopLevelGrouping(chartParams.DateBreakdown).
                     SecondLevelGrouping(chartParams.DateBreakdown);


            return(new RecruiterChartOutput
            {
                Co = co,
                Am = am,
                CurrentBreakdown = "co",
                CurrentDateRange = chartParams.DateBreakdown == DateBreakdown.ByMonth ? "m0" : "w0",
                DateRanges = GetDateRange(chartParams.DateBreakdown, co),
                Breakdowns = new Dictionary <string, string> {
                    { "am", "By Account Manager" },
                    { "co", "By Contractor" }
                }
            });
        }
Example #11
0
        public async Task <AccountManagerChartOutput> GetProviderChartData(IOrganizationAccountManager accountManager, TimeMatrixFilters filters, ChartParams chartParams)
        {
            var result = await _matrixService.GetComposedOutput(accountManager, filters);

            var status = result.Matrix.ToStatusData <AccountManagerTimeMatrixOutput, AccountManagerChartDataItem>().
                         FillMissingDays(chartParams.DateBreakdown, filters).
                         TopLevelGrouping(chartParams.DateBreakdown).
                         SecondLevelGrouping(chartParams.DateBreakdown);

            var projs = result.Matrix.ToProjData <AccountManagerTimeMatrixOutput, AccountManagerProjectOutput, AccountManagerChartDataItem>(result.Projects).
                        FillMissingDays(chartParams.DateBreakdown, filters).
                        TopLevelGrouping(chartParams.DateBreakdown).
                        SecondLevelGrouping(chartParams.DateBreakdown);

            //var re = result.Matrix.ToReData<AccountManagerTimeMatrixOutput, AccountManagerOrganizationRecruiterOutput, AccountManagerChartDataItem>(result.Recruiters).
            //                        FillMissingDays(chartParams.DateBreakdown, filters).
            //                        TopLevelGrouping(chartParams.DateBreakdown).
            //                        SecondLevelGrouping(chartParams.DateBreakdown);

            //var ma = result.Matrix.ToMaData<AccountManagerTimeMatrixOutput, AccountManagerOrganizationMarketerOutput, AccountManagerChartDataItem>(result.Marketers).
            //                        FillMissingDays(chartParams.DateBreakdown, filters).
            //                        TopLevelGrouping(chartParams.DateBreakdown).
            //                        SecondLevelGrouping(chartParams.DateBreakdown);

            var pm = result.Matrix.ToPmData <AccountManagerTimeMatrixOutput, AccountManagerOrganizationProjectManagerOutput, AccountManagerChartDataItem>(result.ProjectManagers).
                     FillMissingDays(chartParams.DateBreakdown, filters).
                     TopLevelGrouping(chartParams.DateBreakdown).
                     SecondLevelGrouping(chartParams.DateBreakdown);

            var co = result.Matrix.ToCoData <AccountManagerTimeMatrixOutput, AccountManagerOrganizationContractorOutput, AccountManagerChartDataItem>(result.Contractors).
                     FillMissingDays(chartParams.DateBreakdown, filters).
                     TopLevelGrouping(chartParams.DateBreakdown).
                     SecondLevelGrouping(chartParams.DateBreakdown);


            return(new AccountManagerChartOutput
            {
                Proj = projs,
                // Re = re,
                Pm = pm,
                Co = co,
                //Ma = ma,
                Status = status,
                CurrentBreakdown = "co",
                CurrentDateRange = chartParams.DateBreakdown == DateBreakdown.ByMonth ? "m0" : "w0",
                DateRanges = GetDateRange(chartParams.DateBreakdown, co),
                Breakdowns = new Dictionary <string, string> {
                    { "proj", "By Project" },
                    { "pm", "By Project Manager" },
                    { "co", "By Contractor" },
                    { "status", "By Status" },
                }
            });
        }