Exemplo n.º 1
0
        private int GetStepCount(DateTime start, ChartTimeFrame tf, bool avgUserPerHour)
        {
            if (avgUserPerHour)
            {
                return(24);
            }

            var now   = DateTime.UtcNow;
            var range = now - start;

            switch (tf)
            {
            //case ChartTimeFrame.AllTime: return MonthDifference(start, now);
            case ChartTimeFrame.LastSixMonths: return(MonthDifference(start, now));

            case ChartTimeFrame.LastThreeMonths: return(MonthDifference(start, now));

            case ChartTimeFrame.LastMonth: return((int)(new DateTime(now.Year, now.Month, 1) - start).TotalDays);

            case ChartTimeFrame.ThisMonth: return((int)range.TotalDays);

            //case ChartTimeFrame.ThisWeek: return (int)range.TotalDays;
            default: return((int)range.TotalHours);
            }
        }
Exemplo n.º 2
0
        private void chartToolStrip1_TimeFrameChanged(ChartTimeFrame timeFrame)
        {
            BarSeries barSeries = new BarSeries();

            ((TimeSeries)barSeries).DataSeries = ((TimeSeries)this.instrument.GetDailySeries()).DataSeries;
            BarSeries series = null;

            switch (timeFrame)
            {
            case ChartTimeFrame.Day:
                series      = barSeries;
                series.Name = ((FIXInstrument)this.instrument).Symbol + " - Daily";
                break;

            case ChartTimeFrame.Week:
                series      = barSeries.Compress(604800L);
                series.Name = ((FIXInstrument)this.instrument).Symbol + " - Weely";
                break;

            case ChartTimeFrame.Month:
                series      = barSeries.Compress(2419200L);
                series.Name = ((FIXInstrument)this.instrument).Symbol + " - Monthly";
                break;

            case ChartTimeFrame.Year:
                series      = barSeries.Compress(29030400L);
                series.Name = ((FIXInstrument)this.instrument).Symbol + " - Annual";
                break;
            }
            this.UpdateMe(series);
        }
Exemplo n.º 3
0
 private async Task SelectTimeFrameAsync(ChartTimeFrame tf)
 {
     newUserTimeframe = tf;
     await CreateNewUserConfig(tf);
     await CreateNewUserConfig(tf, true);
     await InvokeAsync(StateHasChanged);
 }
Exemplo n.º 4
0
 internal void EmitTimeFrameChanged(ChartTimeFrame timeFrame)
 {
     if (this.TimeFrameChanged == null)
     {
         return;
     }
     this.TimeFrameChanged(timeFrame);
 }
Exemplo n.º 5
0
        private async Task <LineConfig> CreateNewUserConfig(
            ChartTimeFrame tf,
            bool avgUserPerHour = false)
        {
            LineConfig config = null;

            if (!avgUserPerHour)
            {
                if (newUserConfig == null)
                {
                    newUserConfig = new LineConfig();
                }
                config = newUserConfig;
            }
            else
            {
                if (commonHoursNewUsers == null)
                {
                    commonHoursNewUsers = new LineConfig();
                }
                config = commonHoursNewUsers;
            }

            config.Options = new LineOptions()
            {
                Responsive = true,
                Title      = new ChartJs.Blazor.Common.OptionsTitle()
                {
                    Display = true,
                    Text    = avgUserPerHour ? "Users per hour" : "New users of " + GetName(tf)
                },
                Scales = new Scales
                {
                    XAxes = new List <CartesianAxis> {
                        new CategoryAxis
                        {
                            ScaleLabel = new ScaleLabel {
                                LabelString = GetLabel(tf)
                            }
                        }
                    },
                    YAxes = new List <CartesianAxis> {
                        new LinearCartesianAxis
                        {
                            ScaleLabel = new ScaleLabel {
                                LabelString = "Value"
                            }
                        }
                    }
                }
            };

            return(await UpdateDatasetAsync(config, tf, avgUserPerHour));
        }
Exemplo n.º 6
0
        private List <string> GetChartLabels(ChartTimeFrame tf, bool avgUserPerHour)
        {
            var now   = DateTime.UtcNow;
            var start = GetStartTime(tf, avgUserPerHour);
            var steps = GetStepCount(start, tf, avgUserPerHour);

            List <string> output = new List <string>();

            for (var i = 0; i < steps; ++i)
            {
                output.Add(GetChartLabel(i, steps, start, tf, avgUserPerHour));
            }
            return(output);
        }
Exemplo n.º 7
0
        public string GetLabel(ChartTimeFrame frame)
        {
            switch (frame)
            {
            case ChartTimeFrame.LastMonth:
            case ChartTimeFrame.ThisMonth:
                //case ChartTimeFrame.ThisWeek:
                return("Day");

            case ChartTimeFrame.Today: return("Hour");

            default: return("Month");
            }
        }
Exemplo n.º 8
0
        public string GetName(ChartTimeFrame frame)
        {
            var n = frame.ToString();
            var s = "";

            for (var i = 0; i < n.Length; ++i)
            {
                if (i == 0 || !Char.IsUpper(n[i]))
                {
                    s += n[i];
                }
                else
                {
                    s += " " + n[i];
                }
            }
            return(s);
        }
Exemplo n.º 9
0
        private async Task <LineConfig> UpdateDatasetAsync(
            LineConfig config,
            ChartTimeFrame tf,
            bool avgUserPerHour)
        {
            var now    = DateTime.UtcNow;
            var start  = GetStartTime(tf, avgUserPerHour);
            var labels = GetChartLabels(tf, avgUserPerHour);

            config.Data.Labels.Clear();
            foreach (var lb in labels)
            {
                config.Data.Labels.Add(lb);
            }

            var userData = await UserService.GetUsersByCreatedAsync(start, now);

            var outputData = GetChartData(userData, start, labels.Count, tf, avgUserPerHour);
            var total      = outputData.Length > 0 ? outputData.Sum() : 0;

            LineDataset <int> dataset = new ChartJs.Blazor.LineChart.LineDataset <int>(outputData)
            {
                Label = "New users (" + total + ")",
            };

            config.Data.Datasets.Clear();
            config.Data.Datasets.Add(dataset);

            try
            {
                if (string.IsNullOrEmpty(config?.Options?.Title?.Text?.SingleValue))
                {
                    return(config);
                }

                var title = config?.Options?.Title?.Text?.SingleValue;
                if (outputData != null && outputData.Length > 0 && title != null)
                {
                    config.Options.Title.Text = title + " - Total " + total;
                }
            }
            catch { }
            return(config);
        }
Exemplo n.º 10
0
        private string GetChartLabel(int step, int steps, DateTime start, ChartTimeFrame tf, bool avgUserPerHour)
        {
            if (avgUserPerHour)
            {
                return(step.ToString("00"));
            }

            switch (tf)
            {
            //case ChartTimeFrame.AllTime: return start.Date.AddMonths(step).ToString("Y");
            case ChartTimeFrame.LastSixMonths: return(start.Date.AddMonths(step).ToString("Y"));

            case ChartTimeFrame.LastThreeMonths: return(start.Date.AddMonths(step).ToString("Y"));

            case ChartTimeFrame.LastMonth: return(start.AddDays(step).ToString("d"));

            case ChartTimeFrame.ThisMonth: return(start.AddDays(step).ToString("d"));

            //case ChartTimeFrame.ThisWeek: return start.AddDays(step).ToString("d");
            default: return(start.AddHours(step).ToString("HH:mm"));
            }
        }
Exemplo n.º 11
0
        private DateTime GetStartTime(ChartTimeFrame tf, bool avgUserPerHour)
        {
            var now = DateTime.UtcNow;

            if (avgUserPerHour)
            {
                return(DateTime.MinValue);
            }
            switch (tf)
            {
            //case ChartTimeFrame.AllTime: return DateTime.MinValue;
            case ChartTimeFrame.LastSixMonths: return(new DateTime(now.Date.Year, now.Date.Month, 1).AddMonths(-6));

            case ChartTimeFrame.LastThreeMonths: return(new DateTime(now.Date.Year, now.Date.Month, 1).AddMonths(-3));

            case ChartTimeFrame.LastMonth: return(new DateTime(now.Date.Year, now.Date.Month, 1).AddMonths(-1));

            case ChartTimeFrame.ThisMonth: return(new DateTime(now.Year, now.Month, 1));

            //case ChartTimeFrame.ThisWeek: return now.Date.AddDays(-7);
            default: return(now.Date);
            }
        }
Exemplo n.º 12
0
    private void chartToolStrip1_TimeFrameChanged(ChartTimeFrame timeFrame)
    {
      BarSeries barSeries = new BarSeries();
			((TimeSeries) barSeries).DataSeries = ((TimeSeries) this.instrument.GetDailySeries()).DataSeries;
      BarSeries series = null;
      switch (timeFrame)
      {
        case ChartTimeFrame.Day:
          series = barSeries;
		  series.Name = ((FIXInstrument) this.instrument).Symbol + " - Daily";
          break;
        case ChartTimeFrame.Week:
          series = barSeries.Compress(604800L);
		 series.Name = ((FIXInstrument) this.instrument).Symbol + " - Weely";
          break;
        case ChartTimeFrame.Month:
          series = barSeries.Compress(2419200L);
	 	series.Name = ((FIXInstrument) this.instrument).Symbol + " - Monthly";
          break;
        case ChartTimeFrame.Year:
          series = barSeries.Compress(29030400L);
		series.Name = ((FIXInstrument) this.instrument).Symbol + " - Annual";
          break;
      }
      this.UpdateMe(series);
    }
Exemplo n.º 13
0
		internal void EmitTimeFrameChanged(ChartTimeFrame timeFrame)
		{
			if (this.TimeFrameChanged == null)
				return;
			this.TimeFrameChanged(timeFrame);
		}
Exemplo n.º 14
0
        public int[] GetChartData(
            IReadOnlyList <Models.WebsiteAdminUser> source,
            DateTime start,
            int steps,
            ChartTimeFrame tf,
            bool avgUserPerHour)
        {
            var outputData = new int[steps];

            IEnumerable <IGrouping <DateTime, Models.WebsiteAdminUser> > grouped = null;

            if (avgUserPerHour)
            {
                var data = source
                           .GroupBy(x => x.Created.Hour)
                           .OrderBy(x => x.Key)
                           .ToArray();

                for (var i = 0; i < outputData.Length; ++i)
                {
                    var record = data.FirstOrDefault(x => x.Key == i);
                    outputData[record.Key] = record?.Count() ?? 0;
                }
                return(outputData);
            }

            switch (tf)
            {
            //case ChartTimeFrame.AllTime:
            //  {
            //      var d = data
            //        .GroupBy(x => new DateTime(x.Created.Date.Year, x.Created.Date.Month, 1))
            //        .OrderBy(x => x.Key)
            //        .ToArray();
            //    for (var i = 0; i < outputData.Length; ++i)
            //    {
            //        outputData[i] = d.
            //    }
            //  }
            //  break;

            case ChartTimeFrame.LastSixMonths:
            case ChartTimeFrame.LastThreeMonths:
            {
                var records = source
                              .GroupBy(x => new DateTime(x.Created.Date.Year, x.Created.Date.Month, 1))
                              .OrderBy(x => x.Key)
                              .ToArray();
                for (var i = 0; i < outputData.Length; ++i)
                {
                    var t = start.AddMonths(i);
                    outputData[i] = records.FirstOrDefault(x => x.Key == t)?.Count() ?? 0;
                }
            }
            break;

            case ChartTimeFrame.LastMonth:
            case ChartTimeFrame.ThisMonth:
            {
                var records = source.GroupBy(x => x.Created.Date).ToArray();
                for (var i = 0; i < outputData.Length; ++i)
                {
                    outputData[i] = records.FirstOrDefault(x => x.Key.Day == i + 1)?.Count() ?? 0;
                }
            }
            break;
            //case ChartTimeFrame.ThisWeek:
            //  var di = 0;
            //  foreach (var g in data.GroupBy(x => x.Created.Date).OrderBy(x => x.Key))
            //    outputData[++di] = g.Count();
            //  break;

            case ChartTimeFrame.Today:
            {
                var records = source.GroupBy(x =>
                    {
                        var d = x.Created.Date;
                        var h = x.Created.TimeOfDay.Hours;
                        return(d.AddHours(h));
                    });
                for (var i = 0; i < outputData.Length; ++i)
                {
                    outputData[i] = records.FirstOrDefault(x => x.Key.Hour == i)?.Count() ?? 0;
                }
            }
            break;
            }

            return(outputData);
        }
Exemplo n.º 15
0
 public static bool IsTimeFrameChecked(this ChartTimeFrame frame, int value)
 {
     return(frame == (ChartTimeFrame)value);
 }