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); }
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)); }
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)); }
/// <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" } } }); }
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" } } }); }
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" } } }); }
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" }, } }); }