aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Views/MainView.xaml
blob: 69708f517b58ddf7686861c3972839d2056298b3 (plain)
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
<UserControl x:Class="Tango.MachineStudio.Statistics.Views.MainView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:vm="clr-namespace:Tango.MachineStudio.Statistics.ViewModels"
             xmlns:global="clr-namespace:Tango.MachineStudio.Statistics"
             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
             xmlns:local="clr-namespace:Tango.MachineStudio.Statistics.Views"
             xmlns:tooltips="clr-namespace:Tango.MachineStudio.Statistics.Tooltips"
             xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
             mc:Ignorable="d" 
             d:DesignHeight="1080" d:DesignWidth="1920" Background="Transparent" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MainViewVM}">
    <Grid IsEnabled="{Binding IsFree}"> 
        <Grid.RowDefinitions>
            <RowDefinition Height="80"/>
            <RowDefinition Height="337*"/>
        </Grid.RowDefinitions>

        <StackPanel Margin="60 20 0 0" VerticalAlignment="Center" HorizontalAlignment="Left" Orientation="Horizontal">
            <StackPanel>
                <TextBlock FontSize="10">Start Date:</TextBlock>
                <DatePicker DisplayDateStart="{Binding MinDate}" DisplayDateEnd="{Binding MaxDate}" SelectedDate="{Binding StartDate}" materialDesign:HintAssist.Hint="Pick start date" Width="200" VerticalAlignment="Bottom" FontSize="16"></DatePicker>
            </StackPanel>

            <StackPanel Margin="40 0 0 0">
                <TextBlock FontSize="10">End Date:</TextBlock>
                <DatePicker DisplayDateStart="{Binding MinDate}" DisplayDateEnd="{Binding MaxDate}" SelectedDate="{Binding EndDate}" materialDesign:HintAssist.Hint="Pick end date" Width="200" VerticalAlignment="Bottom" FontSize="16"></DatePicker>
            </StackPanel>
        </StackPanel>

        <UniformGrid Columns="3" Margin="50 20 50 50" Rows="2" Grid.Row="1">
            <Border BorderBrush="#181818" Padding="5" BorderThickness="1" CornerRadius="5" Margin="10">
                <DockPanel>
                    <TextBlock DockPanel.Dock="Top" FontSize="16" FontWeight="Bold" HorizontalAlignment="Center" Padding="10" Text="{Binding TimelineJobStatusSeries.Title}"></TextBlock>
                    <lvc:CartesianChart Series="{Binding TimelineJobStatusSeries.SeriesCollection}" LegendLocation="Bottom" SeriesColors="{Binding TimelineJobStatusSeries.SeriesColors}">
                        <lvc:CartesianChart.AxisX>
                            <lvc:Axis Title="{Binding TimelineJobStatusSeries.LabelsTitle}" Labels="{Binding TimelineJobStatusSeries.Labels}" Foreground="#202020">
                                <lvc:Axis.Separator>
                                    <lvc:Separator Stroke="#A5A5A5" />
                                </lvc:Axis.Separator>
                            </lvc:Axis>
                        </lvc:CartesianChart.AxisX>
                        <lvc:CartesianChart.AxisY>
                            <lvc:Axis Title="{Binding TimelineJobStatusSeries.ChartTitle}" MinValue="0" Foreground="#202020" >
                                <lvc:Axis.Separator>
                                    <lvc:Separator Stroke="#B0B0B0" />
                                </lvc:Axis.Separator>
                            </lvc:Axis>
                        </lvc:CartesianChart.AxisY>
                    </lvc:CartesianChart>
                </DockPanel>
            </Border>

            <Border BorderBrush="#181818" Padding="5" BorderThickness="1" CornerRadius="5" Margin="10">
                <DockPanel>
                    <TextBlock DockPanel.Dock="Top" FontSize="16" FontWeight="Bold" HorizontalAlignment="Center" Padding="10" Text="{Binding PieJobFailedReasons.Title}"></TextBlock>
                    <UniformGrid Columns="2">
                        <lvc:PieChart DataHover="PieChart_DataHover" Series="{Binding PieJobFailedReasons.SeriesCollection}" LegendLocation="None" SeriesColors="{Binding PieJobFailedReasons.SeriesColors}">
                            <lvc:PieChart.DataTooltip>
                                <tooltips:PieChartTooltipControl Visibility="Hidden" />
                            </lvc:PieChart.DataTooltip>
                        </lvc:PieChart>

                        <TextBlock x:Name="txtPieTitle" TextWrapping="Wrap"></TextBlock>
                    </UniformGrid>
                </DockPanel>
            </Border>

            <Border BorderBrush="#181818" Padding="5" BorderThickness="1" CornerRadius="5" Margin="10">
                <DockPanel>
                    <TextBlock DockPanel.Dock="Top" FontSize="16" FontWeight="Bold" HorizontalAlignment="Center" Padding="10" Text="{Binding PrintPerWeekSeries.Title}"></TextBlock>
                    <lvc:CartesianChart Series="{Binding PrintPerWeekSeries.SeriesCollection}" LegendLocation="Bottom" SeriesColors="{Binding PrintPerWeekSeries.SeriesColors}">
                        <lvc:CartesianChart.AxisX>
                            <lvc:Axis Title="{Binding PrintPerWeekSeries.LabelsTitle}" Labels="{Binding PrintPerWeekSeries.Labels}" Foreground="#202020">
                                <lvc:Axis.Separator>
                                    <lvc:Separator Stroke="#A5A5A5" />
                                </lvc:Axis.Separator>
                            </lvc:Axis>
                        </lvc:CartesianChart.AxisX>
                        <lvc:CartesianChart.AxisY>
                            <lvc:Axis Title="{Binding PrintPerWeekSeries.ChartTitle}" MinValue="0" Foreground="#202020" >
                                <lvc:Axis.Separator>
                                    <lvc:Separator Stroke="#B0B0B0" />
                                </lvc:Axis.Separator>
                            </lvc:Axis>
                        </lvc:CartesianChart.AxisY>
                    </lvc:CartesianChart>
                </DockPanel>
            </Border>
        </UniformGrid>
    </Grid>
</UserControl>
eof(MotorItem))] [XmlInclude(typeof(MultiGraphItem))] [XmlInclude(typeof(SingleGraphItem))] [XmlInclude(typeof(ThreadMotionItem))] [XmlInclude(typeof(MotorGroupItem))] [XmlInclude(typeof(DigitalInItem))] [XmlInclude(typeof(ControllerItem))] [XmlInclude(typeof(PidItem))] [XmlInclude(typeof(WinderItem))] [XmlInclude(typeof(DancerItem))] [XmlInclude(typeof(SpeedSensorItem))] [XmlInclude(typeof(BlowerItem))] [XmlInclude(typeof(BreakSensorItem))] [XmlInclude(typeof(ProcessParametersItem))] [XmlInclude(typeof(JobRunnerItem))] [XmlInclude(typeof(TextItem))] [XmlInclude(typeof(HeaterItem))] [XmlInclude(typeof(MonitorRecorderItem))] [XmlInclude(typeof(ValveItem))] public abstract class TechItem : ExtendedObject { /// <summary> /// Initializes a new instance of the <see cref="TechItem"/> class. /// </summary> public TechItem() { ID = Guid.NewGuid().ToString(); Name = "Untitled"; Adapter = ObservablesStaticCollections.Instance; _color = Colors.DodgerBlue; } private String _description; /// <summary> /// Gets or sets the description. /// </summary> [XmlIgnore] public String Description { get { return _description; } set { _description = value; RaisePropertyChangedAuto(); } } private BitmapSource _image; /// <summary> /// Gets or sets the image. /// </summary> [XmlIgnore] public BitmapSource Image { get { return _image; } set { _image = value; RaisePropertyChangedAuto(); } } /// <summary> /// Gets or sets the db adapter. /// </summary> [XmlIgnore] public ObservablesStaticCollections Adapter { get; set; } private String _id; /// <summary> /// Unique Item ID. /// </summary> public String ID { get { return _id; } set { _id = value; RaisePropertyChanged(nameof(ID)); } } private String _name; /// <summary> /// item Name. /// </summary> [XmlIgnore] public String Name { get { return _name; } set { _name = value; RaisePropertyChanged(nameof(Name)); } } private double _left; /// <summary> /// Item Left. /// </summary> public double Left { get { return _left; } set { _left = value; RaisePropertyChanged(nameof(Left)); } } private double _top; /// <summary> /// Item Top. /// </summary> public double Top { get { return _top; } set { _top = value; RaisePropertyChanged(nameof(Top)); } } private double _width; /// <summary> /// Item Width. /// </summary> public double Width { get { return _width; } set { _width = value; RaisePropertyChanged(nameof(Width)); } } private double _height; /// <summary> /// Item Height. /// </summary> public double Height { get { return _height; } set { _height = value; RaisePropertyChanged(nameof(Height)); } } private double _angle; /// <summary> /// Item Angle. /// </summary> public double Angle { get { return _angle; } set { _angle = value; RaisePropertyChanged(nameof(Angle)); } } private String _techName; /// <summary> /// Gets or sets the tech item name. /// </summary> [XmlIgnore] public String TechName { get { return _techName; } set { _techName = value; RaisePropertyChangedAuto(); } } /// <summary> /// Gets or sets the db tech item guid. /// </summary> public String ItemGuid { get; set; } private Color _color; /// <summary> /// Gets or sets the item color. /// </summary> [XmlIgnore] public Color Color { get { return _color; } set { _color = value; RaisePropertyChanged(nameof(Color)); _colorNumber = ColorHelper.ColorToInteger(value); } } private int _colorNumber; /// <summary> /// Gets or sets the color number (for XML serialization). /// </summary> public int ColorNumber { get { return _colorNumber; } set { _colorNumber = value; _color = ColorHelper.IntegerToColor(value); _color.A = 255; RaisePropertyChanged(nameof(Color)); } } /// <summary> /// Clones this instance. /// </summary> /// <returns></returns> public virtual TechItem Clone() { TechItem cloned = Activator.CreateInstance(this.GetType()) as TechItem; cloned.Left = Left; cloned.Top = Top; cloned.Width = Width; cloned.Height = Height; cloned.Angle = Angle; cloned.Color = Color; return cloned; } /// <summary> /// Gets the available tech items. /// </summary> /// <returns></returns> public static List<TechItem> GetAvailableTechItems() { List<TechItem> items = new List<TechItem>(); foreach (var type in typeof(TechItem).Assembly.GetTypes().Where(x => typeof(TechItem).IsAssignableFrom(x) && !x.IsAbstract).OrderBy(x => x.GetCustomAttribute<TechItemAttribute>().Index)) { items.Add(Activator.CreateInstance(type) as TechItem); } return items; } /// <summary> /// Sets the bounds. /// </summary> /// <param name="bounds">The bounds.</param> public void SetBounds(Rect bounds) { Left = bounds.Left; Top = bounds.Top; Width = bounds.Width; Height = bounds.Height; } /// <summary> /// Gets the bounds. /// </summary> /// <returns></returns> public Rect GetBounds() { return new Rect(Left, Top, Width, Height); } } }