-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathChart.xaml.cs
94 lines (82 loc) · 3.54 KB
/
Chart.xaml.cs
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
88
89
90
91
92
93
94
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace JobsScheduler
{
/// <summary>
/// Interaction logic for Chart.xaml
/// </summary>
public partial class Chart : Window
{
public List<Rectangle> rectList = new List<Rectangle>();
public Chart(List<outputProcesses> ourProcesses , float averageWaitingTime)
{
InitializeComponent();
CreateChart(ourProcesses , averageWaitingTime);
}
public void CreateChart(List<outputProcesses> listOfProcesses , float averageWait)
{
double ctr =0;
for(int i = 0; i < listOfProcesses.Count; i++)
{
StackPanel stackPanel = new StackPanel();
outputProcesses process = listOfProcesses[i];
Rectangle rectangle = new();
rectangle.Width = (double)(process.usingTime * 17);
rectangle.Fill = new SolidColorBrush(System.Windows.Media.Colors.Violet);
rectangle.Stroke = new SolidColorBrush(System.Windows.Media.Colors.Black);
rectangle.StrokeThickness = 1;
rectangle.Height = 100;
rectList.Add(rectangle);
TextBlock ProcessName = new();
ProcessName.HorizontalAlignment = HorizontalAlignment.Center;
ProcessName.VerticalAlignment = VerticalAlignment.Center;
ProcessName.FontSize = 12;
ProcessName.Text = process.processNumber.ToString();
TextBlock startTime = new();
startTime.HorizontalAlignment = HorizontalAlignment.Left;
startTime.VerticalAlignment = VerticalAlignment.Center;
startTime.FontSize = 12;
startTime.Text = process.startTime.ToString();
TextBlock usingTime = new();
usingTime.HorizontalAlignment = HorizontalAlignment.Center;
usingTime.VerticalAlignment = VerticalAlignment.Center;
usingTime.FontSize = 12;
usingTime.Text = process.usingTime.ToString();
TextBlock averageWaitingTimeBlock = new();
averageWaitingTimeBlock.HorizontalAlignment = HorizontalAlignment.Center;
averageWaitingTimeBlock.VerticalAlignment = VerticalAlignment.Center;
averageWaitingTimeBlock.FontSize = 15;
averageWaitingTimeBlock.Text = "Average Waiting time is: " + averageWait.ToString();
stackPanel.Children.Add(usingTime);
stackPanel.Children.Add(rectangle);
stackPanel.Children.Add(startTime);
stackPanel.Children.Add(ProcessName);
chartGrid.Children.Add(stackPanel);
chartGrid.Children.Add(averageWaitingTimeBlock);
Canvas.SetTop(averageWaitingTimeBlock, 300);
Canvas.SetLeft(averageWaitingTimeBlock, 10);
Canvas.SetTop(stackPanel, 100);
if (i == 0)
{
Canvas.SetLeft(stackPanel, 10);
}
else
{
ctr += rectList[i-1].Width;
Canvas.SetLeft(stackPanel, ctr);
}
}
}
}
}