1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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);
});
});
}
}
}
|