/// <summary> /// /// </summary> /// <param name="Period"></param> /// <param name="LoggerProviderName"></param> /// <param name="logLevel"></param> /// <param name="keyFormatString"></param> /// <param name="groupByClause"></param> /// <returns></returns> public JsonResult ChartDataByTimePeriod(string Period, string LoggerProviderName, string logLevel, string keyFormatString, Func <LogEvent, Object> groupByClause) { TimePeriod timePeriod = TimePeriodHelper.GetUtcTimePeriod(Period); // Grab ALL entries for the chart (DO NOT PAGE REPORTING DATA!!!) IPagedList <LogEvent> chartEntries = loggingRepository.GetByDateRangeAndType(0, Int32.MaxValue, timePeriod.Start, timePeriod.End, LoggerProviderName, logLevel); var groupedByDate = chartEntries.GroupBy(groupByClause).OrderBy(y => y.Key); var groupedByDateAndThenName = groupedByDate.Select(group => new { Key = group.Key, NestedGroup = group.ToLookup(result => result.LoggerProviderName, result => result.Id) }); var LoggerNames = (from logEvent in chartEntries select new { Name = logEvent.LoggerProviderName } ).Distinct().OrderBy(item => item.Name); ChartData chartData = new ChartData(); // Add columns chartData.AddColumn(new ChartColumn("0", "Period", "string")); int columnIndex = 1; foreach (var name in LoggerNames) { chartData.AddColumn(new ChartColumn(columnIndex.ToString(), name.Name.ToString(), "number")); columnIndex++; } // add row data foreach (var myDate in groupedByDateAndThenName) { ChartRow row = new ChartRow(); string dateString = (myDate.Key is DateTime) ? ((DateTime)myDate.Key).ToString(keyFormatString) : myDate.Key.ToString(); row.AddCellItem(new ChartCellItem(dateString, "")); foreach (var name in LoggerNames) { bool valueFound = false; foreach (var myLogger in myDate.NestedGroup) { if (myLogger.Key == name.Name.ToString()) { row.AddCellItem(new ChartCellItem(myLogger.Count(), "")); valueFound = true; } } if (!valueFound) { row.AddCellItem(new ChartCellItem(0, "")); } } chartData.AddRow(row); } return(Json(chartData, "text/x-json", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet)); }
static ChartRow CreateErrorObject(string StockName, string stockCode) { ChartRow RowData = new ChartRow(); RowData.CurrencySymbol = ""; RowData.StockName = "? " + StockName + "\r\n> FAILED LOADING"; RowData.StockCode = stockCode; RowData.VisualStockCode = stockCode + " - FAILED TO LOAD!"; RowData.FailedRetrival = true; return(RowData); }
public async Task UpdateStockEntries() { List <StockListEntries> stockItems = SQLiteDatabaseHelper <StockListEntries> .ReadRecordToList(); if (stockItems.Count == 0) { return; } var chartData = await ChartRow.ConvertStockEntriesToChartData(stockItems); CorrectListEntriesWhichUpdated(chartData); }
public ChartNode(Graph parentGraph) { var inputRow = new InputRow("Chart", "Number", this); var chartRow = new ChartRow(); Rows = new List <BaseRow> { inputRow, chartRow }; this.parentGraph = parentGraph; tape = chartRow.tape; inputRow.inputTape = tape; }
public static List <ChartRow> BuildChartRows(List <Line> lines) { // Line chart rows var chartRows = new List <ChartRow>(); // For each line foreach (var line in lines) { var chartRow = new ChartRow(line.Time, line.Value, line.AverageBuy, line.AverageSell); chartRows.Add(chartRow); } // Return return(chartRows); }
public async void DeleteChartRow(ChartRow chartRow) { var stockName = chartRow.StockName; var stockCode = chartRow.StockCode; var deleted = await SQLiteDatabaseHelper <StockListEntries> .DeleteRecord(row => row.StockCode == stockCode); if (!deleted.IsValid) { var error = deleted.GetErrorResponse(); await App.Current.MainPage.DisplayAlert("Error Deleting", "Error in deleting row", "OK"); return; } ChartListData.Remove(chartRow); }
public static async Task <ChartRow> QueryStockInformation(string StockName, string stockCode) { ChartRow RowData = new ChartRow(); string searchFor = WebUtility.UrlEncode(stockCode.Trim()); string region = "US"; string language = "en-US"; string interval = Intervals.Days1.GetDescriptionString(); string range = Intervals.Months3.GetDescriptionString(); List <Result> chartData = await YahooAPIQuery.GetChartData(searchFor, region, language, interval, range); int takeIndex = 0; if (chartData == null || chartData.Count == 0) { return(CreateErrorObject(StockName, stockCode)); } Result result = chartData[takeIndex]; double prevClose = result.meta.chartPreviousClose; double regMarketPrice = result.meta.regularMarketPrice; RowData.CurrencySymbol = CurrencySymbolConverter.CurrencyCodeToSymbol(result.meta.currency); RowData.StockName = StockName; RowData.StockCode = stockCode; RowData.VisualStockCode = stockCode; RowData.CurrentValue = regMarketPrice; RowData.FirstRangeValue = prevClose; RowData.CurrentRate = (float)(prevClose / regMarketPrice * 100.0f); RowData.ChartData = result.indicators.adjclose[takeIndex].adjclose as List <double?>; if (RowData.ChartData != null) { RowData.MinValue = (double)RowData.ChartData.Min(); RowData.HighValue = (double)RowData.ChartData.Max(); var chartEntries = RowData.ChartData.Where(chart => chart != null).Select(chart => new Microcharts.ChartEntry((float)chart - (float)prevClose)).ToList(); RowData.TheChart = new LineChart { Entries = chartEntries, LineMode = LineMode.Straight, PointMode = PointMode.Square, BackgroundColor = SKColors.Transparent, LineAreaAlpha = 0, AnimationDuration = new TimeSpan(0), IsAnimated = false }; } return(await Task.FromResult(RowData)); }
private void GenerateData(FrameGroup group) { List <ThreadRow> rows = new List <ThreadRow>(); if (group != null) { rows.Add(new HeaderThreadRow(group) { GradientTop = (ThreadView.OptickAlternativeBackground as SolidColorBrush).Color, GradientBottom = (ThreadView.OptickBackground as SolidColorBrush).Color, TextColor = Colors.Gray, //Header = new ThreadFilterView(), }); ChartRow cpuCoreChart = EventThreadView.GenerateCoreChart(group); if (cpuCoreChart != null) { cpuCoreChart.IsExpanded = false; //cpuCoreChart.ExpandChanged += CpuCoreChart_ExpandChanged; //cpuCoreChart.ChartHover += Row_ChartHover; rows.Add(cpuCoreChart); } //List<EventsThreadRow> threadRows = GenerateThreadRows(group); //foreach (EventsThreadRow row in threadRows) //{ // if (row.Description.Origin == ThreadDescription.Source.Core) // { // row.IsVisible = false; // coreRows.Add(row); // } //} //rows.AddRange(threadRows); } ThreadView.Scroll.ViewUnit.Width = 1.0; ThreadView.InitRows(rows, group != null ? group.Board.TimeSlice : null); }