public async Task <TelemetryInfoTable> GetPivotTableData(TelemetryItemTypes type, Guid telemetryKey, DateTime startDate, DateTime endDate) { List <RawTelemetryUnit> rows = (await this.GetRawData(telemetryKey, type, startDate, endDate)).ToList(); TelemetryInfoTableHeader header = new TelemetryInfoTableHeader(); return(new TelemetryInfoTable { Header = header, Rows = rows.Select(x => new TelemetryPivotTableRow(x)).ToList() }); }
public void ValidateExpandoObject() { TelemetryInfoTableHeader header = new TelemetryInfoTableHeader(); header.Date = new TelemetryInfoHeaderItem() { type = "datetime" }; header.ComponentName = new TelemetryInfoHeaderItem(); var serialized = JsonConvert.SerializeObject(header); }
public async Task <TelemetryInfoTable> GetPivotTableData(TelemetryItemTypes type, Guid telemetryKey) { Program program = await this.portalContext.Programs.FirstOrDefaultAsync(x => x.TelemetryKey == telemetryKey).ConfigureAwait(false); if (program == null) { throw new ArgumentException($"Program with key {telemetryKey} does not exist"); } List <TelemetryDetail> details = program.GetTelemetryDetails(this.telemetryContext, type).ToList(); List <TelemetryPivotTableRow> rows = new List <TelemetryPivotTableRow>(); foreach (TelemetryDetail detail in details) { List <TelemetryUnit> units = detail.GetTelemetryUnits().ToList(); if (units.Any()) { foreach (TelemetryUnit detailTelemetryUnit in units.Where(x => x.UnitType == TelemetryUnit.UnitTypes.Property)) { TelemetryPivotTableRow row = new TelemetryPivotTableRow(detail) { PropertyValue = detailTelemetryUnit.ValueString, Key = detailTelemetryUnit.Key, }; rows.Add(row); } foreach (TelemetryUnit detailTelemetryUnit in units.Where(x => x.UnitType == TelemetryUnit.UnitTypes.Metric)) { TelemetryPivotTableRow row = new TelemetryPivotTableRow(detail) { MetricValue = detailTelemetryUnit.ValueDouble, Key = detailTelemetryUnit.Key, }; rows.Add(row); } } else { TelemetryPivotTableRow row = new TelemetryPivotTableRow(detail); rows.Add(row); } } TelemetryInfoTableHeader header = new TelemetryInfoTableHeader(); return(new TelemetryInfoTable { Header = header, Rows = rows }); }