diff options
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/MainViewVM.cs | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/MainViewVM.cs new file mode 100644 index 000000000..f09ed2e0d --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/MainViewVM.cs @@ -0,0 +1,87 @@ +using LiveCharts; +using LiveCharts.Wpf; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Media; +using Tango.BL; +using Tango.BL.Enumerations; +using Tango.MachineStudio.Common; +using Tango.MachineStudio.Statistics.Models; + +namespace Tango.MachineStudio.Statistics.ViewModels +{ + public class MainViewVM : StudioViewModel + { + private ObservablesContext _context; + + private LabeledSeriesCollection _timelineJobStatusSeries; + public LabeledSeriesCollection TimelineJobStatusSeries + { + get { return _timelineJobStatusSeries; } + set { _timelineJobStatusSeries = value; RaisePropertyChangedAuto(); } + } + + public MainViewVM() + { + TimelineJobStatusSeries = new LabeledSeriesCollection() + { + ChartTitle = "Monthly Job Runs", + LabelsTitle = "Date", + SeriesColors = new List<Color>() + { + Colors.Green, + Colors.Orange, + Colors.Red, + }, + }; + } + + public override void OnApplicationReady() + { + Task.Factory.StartNew(() => + { + _context = ObservablesContext.CreateDefault(); + DateTime start_date = DateTime.UtcNow.AddMonths(-1); + var jobs_runs = _context.JobRuns.Where(x => x.StartDate > start_date).OrderBy(x => x.StartDate).ToList(); + + InvokeUIOnIdle(() => + { + var completed_job_runs = new ColumnSeries() + { + Title = "Completed", + Values = new ChartValues<int>(), + Fill = Brushes.Green, + }; + var aborted_job_runs = new ColumnSeries() + { + Title = "Aborted", + Values = new ChartValues<int>(), + Fill = Brushes.Orange, + }; + var failed_job_runs = new ColumnSeries() + { + Title = "Failed", + Values = new ChartValues<int>(), + Fill = Brushes.Red, + }; + + for (DateTime date = DateTime.Now.AddMonths(-1); date.Date <= DateTime.Now.Date; date = date.AddDays(1)) + { + completed_job_runs.Values.Add(jobs_runs.Where(x => x.StartDate.ToLocalTime().Date == date.Date && x.JobRunStatus == JobRunStatus.Completed).Count()); + aborted_job_runs.Values.Add(jobs_runs.Where(x => x.StartDate.ToLocalTime().Date == date.Date && x.JobRunStatus == JobRunStatus.Aborted).Count()); + failed_job_runs.Values.Add(jobs_runs.Where(x => x.StartDate.ToLocalTime().Date == date.Date && x.JobRunStatus == JobRunStatus.Failed).Count()); + + TimelineJobStatusSeries.Labels.Add(date.ToShortDateString()); + } + + TimelineJobStatusSeries.SeriesCollection.Add(completed_job_runs); + TimelineJobStatusSeries.SeriesCollection.Add(aborted_job_runs); + TimelineJobStatusSeries.SeriesCollection.Add(failed_job_runs); + }); + }); + } + } +} |
