public static SummaryMethod FromDescriptor(SummaryMethodDescriptor descriptor) { switch (descriptor) { case SummaryMethodDescriptor.Count: return(Count); case SummaryMethodDescriptor.Average: return(Average); case SummaryMethodDescriptor.Median: default: return(Median); } }
public async Task <IActionResult> CreateCustomView(CreateCustomViewModel.ViewType chartViewType, string chartTitle, string apiEndpoint, SummaryMethodDescriptor summaryMethodDescriptor, ProjectionResult projectionResult, string groupedBarChartDatasetPropertyKey, string groupedBarChartCategoryPropertyKey, List <string> groupedBarChartValuePropertyKeys, string barChartCategoryPropertyKey, string barChartValuePropertyKey, bool timeRelative, int?relativeTimeStartValue, RelativeTimeGranularity?relativeTimeStartGranularity, string absoluteTimeStartDate, string absoluteTimeEndDate, List <string> floatCriteriaJsonPropertyNames, List <FloatCriterion.Relation> floatCriteriaRelations, List <float> floatCriteriaComparedValues) { // Attempt to parse date times from datepicker elements if the time is set to an absolute scale DateTime?absoluteTimeStartDateTime = null, absoluteTimeEndDateTime = null; if (!timeRelative) { if (DateTime.TryParseExact(absoluteTimeStartDate, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out var candidate)) { absoluteTimeStartDateTime = candidate; } if (DateTime.TryParseExact(absoluteTimeEndDate, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out candidate)) { absoluteTimeEndDateTime = candidate; } } switch (chartViewType) { case CreateCustomViewModel.ViewType.Bar: await InsertCustomBarChartAsync(chartTitle, apiEndpoint, summaryMethodDescriptor, projectionResult, barChartCategoryPropertyKey, barChartValuePropertyKey, timeRelative, relativeTimeStartValue, relativeTimeStartGranularity, absoluteTimeStartDateTime, absoluteTimeEndDateTime, floatCriteriaJsonPropertyNames, floatCriteriaRelations, floatCriteriaComparedValues); break; case CreateCustomViewModel.ViewType.GroupedBar: await InsertCustomGroupedBarChartAsync(chartTitle, apiEndpoint, summaryMethodDescriptor, projectionResult, groupedBarChartDatasetPropertyKey, groupedBarChartCategoryPropertyKey, groupedBarChartValuePropertyKeys, timeRelative, relativeTimeStartValue, relativeTimeStartGranularity, absoluteTimeStartDateTime, absoluteTimeEndDateTime, floatCriteriaJsonPropertyNames, floatCriteriaRelations, floatCriteriaComparedValues); break; } return(RedirectToAction("Index")); }
public async Task InsertCustomGroupedBarChartAsync(string chartTitle, string apiEndpoint, SummaryMethodDescriptor summaryMethodDescriptor, ProjectionResult?projectionResult, string datasetPropertyKey, string categoryPropertyKey, List <string> valuePropertyKeys, bool timeRelative, int?relativeTimeStartValue, RelativeTimeGranularity?relativeTimeStartGranularity, DateTime?absoluteTimeStartDate, DateTime?absoluteTimeEndDate, List <string> floatCriteriaJsonPropertyNames, List <FloatCriterion.Relation> floatCriteriaRelations, List <float> floatCriteriaComparedValues) { // Construct a list of float criteria from the individual property lists var floatCriteria = new List <CustomGroupedBarChart.CustomGroupedBarChartFloatCriterion>(); if (floatCriteriaJsonPropertyNames.Count == floatCriteriaRelations.Count && floatCriteriaJsonPropertyNames.Count == floatCriteriaComparedValues.Count) { for (var i = 0; i < floatCriteriaJsonPropertyNames.Count; i++) { floatCriteria.Add(new CustomGroupedBarChart.CustomGroupedBarChartFloatCriterion() { Key = floatCriteriaJsonPropertyNames[i], Value = floatCriteriaComparedValues[i], Relation = floatCriteriaRelations[i] }); } } // Construct a list of value token keys (entities) // from the list of valuePropertyKeys var valueTokenKeys = new List <CustomGroupedBarChart.CustomGroupedBarChartValueTokenKey>(); foreach (var valuePropertyKey in valuePropertyKeys) { valueTokenKeys.Add(new CustomGroupedBarChart.CustomGroupedBarChartValueTokenKey() { Key = valuePropertyKey }); } // Construct the chart and put it in the database var chart = new CustomGroupedBarChart() { Title = chartTitle, ApiEndpoint = apiEndpoint, ProjectionResult = projectionResult, SummaryMethodDescriptor = summaryMethodDescriptor, FloatCriteria = floatCriteria, TimeRelative = timeRelative, RelativeTimeValue = relativeTimeStartValue, RelativeTimeGranularity = relativeTimeStartGranularity, IntervalStart = absoluteTimeStartDate, IntervalEnd = absoluteTimeEndDate, DatasetTokenKey = datasetPropertyKey, CategoryTokenKey = categoryPropertyKey, ValueTokenKeys = valueTokenKeys }; await _dbContext.CustomGroupedBarCharts.AddAsync(chart); await _dbContext.SaveChangesAsync(); }