aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/Views/HomeView.xaml
blob: 1059a06a7f449bdf16e1398d5dca9753d78bd51b (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
<UserControl x:Class="Tango.MachineStudio.Logging.Views.HomeView"
             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:global="clr-namespace:Tango.MachineStudio.Logging"
             xmlns:vm="clr-namespace:Tango.MachineStudio.Logging.ViewModels"
             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
             xmlns:local="clr-namespace:Tango.MachineStudio.Logging.Views"
             mc:Ignorable="d" 
             d:DesignHeight="1080" d:DesignWidth="1920" d:DataContext="{d:DesignInstance Type=vm:HomeViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.HomeViewVM}">

    <UserControl.Resources>
        <Style TargetType="Border" x:Key="LogBorder">
            <Setter Property="Padding" Value="50"></Setter>
            <Setter Property="Background" Value="{DynamicResource LogBorder.Background}"/>
            <Setter Property="CornerRadius" Value="20"></Setter>
            <Setter Property="Width" Value="450"></Setter>
            <Setter Property="Height" Value="400"></Setter>
            <Setter Property="TextElement.Foreground" Value="{DynamicResource DarkGrayBrush}"></Setter>
            <Setter Property="TextElement.FontSize" Value="25"></Setter>
            <Setter Property="BorderThickness" Value="1"></Setter>
            <Setter Property="BorderBrush" Value="{DynamicResource LightGrayBrush200}"></Setter>
            <Setter Property="Cursor" Value="Hand"></Setter>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="TextElement.Foreground" Value="DodgerBlue"></Setter>
                    <Setter Property="BorderBrush" Value="DodgerBlue"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </UserControl.Resources>

    <Grid>

        <TextBlock Margin="80 50" FontSize="16">
            <Run FontSize="20">Machine Studio logs information from multiple source.</Run>
            <LineBreak/>
            <LineBreak/>
            <LineBreak/>
            <Run FontWeight="SemiBold">• Machine Events</Run> <Run>are predefined events that occurs only when a set of predefined actions have occurred (e.g 'Job executed', 'Thread Break').</Run>
            <LineBreak/>
            <LineBreak/>
            <Run FontWeight="SemiBold">• Application Logs</Run> <Run>are the standard machine studio logs which can be used to trace issues in code.</Run>
            <LineBreak/>
            <LineBreak/>
            <Run FontWeight="SemiBold">• Embedded Logs</Run> <Run>are logs transmitted from the machine's embedded device software.</Run>
        </TextBlock>
        
        <UniformGrid Columns="3" Rows="1" VerticalAlignment="Center" Margin="50 150 50 0">
            <Button Style="{StaticResource emptyButton}" Margin="70" Padding="0" Height="Auto" Command="{Binding NavigateToCommand}" CommandParameter="EventsView">
                <Border Style="{StaticResource LogBorder}">
                    <DockPanel>
                        <TextBlock HorizontalAlignment="Center" Margin="0 20 0 0" DockPanel.Dock="Bottom">MACHINE EVENTS</TextBlock>
                        <Image Source="../Images/events.png"></Image>
                    </DockPanel>
                </Border>
            </Button>

            <Button Style="{StaticResource emptyButton}" Margin="70" Padding="0" Height="Auto" Command="{Binding NavigateToCommand}" CommandParameter="ApplicationLogsView">
                <Border Style="{StaticResource LogBorder}">
                    <DockPanel>
                        <TextBlock HorizontalAlignment="Center" Margin="0 20 0 0" DockPanel.Dock="Bottom">APPLICATION LOGS</TextBlock>
                        <Image Source="../Images/application-logs.png"></Image>
                    </DockPanel>
                </Border>
            </Button>

            <Button Style="{StaticResource emptyButton}" Margin="70" Padding="0" Height="Auto" Command="{Binding NavigateToCommand}" CommandParameter="EmbeddedLogsView">
                <Border Style="{StaticResource LogBorder}">
                    <DockPanel>
                        <TextBlock HorizontalAlignment="Center" Margin="0 20 0 0" DockPanel.Dock="Bottom">EMBEDDED LOGS</TextBlock>
                        <Image Source="../Images/embedded-logs.png"></Image>
                    </DockPanel>
                </Border>
            </Button>
        </UniformGrid>
    </Grid>
</UserControl>
ss="w"> = 0; head = 0; tail = 0; } /// <summary> /// Gets/Sets an element inside the deque. /// </summary> public T this[int index] { get { ThrowUtil.CheckInRangeInclusive(index, "index", 0, size - 1); return arr[(head + index) % arr.Length]; } set { ThrowUtil.CheckInRangeInclusive(index, "index", 0, size - 1); arr[(head + index) % arr.Length] = value; } } /// <summary> /// Adds an element to the end of the deque. /// </summary> [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "PushBack")] public void PushBack(T item) { if (size == arr.Length) SetCapacity(Math.Max(4, arr.Length * 2)); arr[tail++] = item; if (tail == arr.Length) tail = 0; size++; } /// <summary> /// Pops an element from the end of the deque. /// </summary> public T PopBack() { if (size == 0) throw new InvalidOperationException(); if (tail == 0) tail = arr.Length - 1; else tail--; T val = arr[tail]; arr[tail] = default(T); // allow GC to collect the element size--; return val; } /// <summary> /// Adds an element to the front of the deque. /// </summary> public void PushFront(T item) { if (size == arr.Length) SetCapacity(Math.Max(4, arr.Length * 2)); if (head == 0) head = arr.Length - 1; else head--; arr[head] = item; size++; } /// <summary> /// Pops an element from the end of the deque. /// </summary> public T PopFront() { if (size == 0) throw new InvalidOperationException(); T val = arr[head]; arr[head] = default(T); // allow GC to collect the element head++; if (head == arr.Length) head = 0; size--; return val; } void SetCapacity(int capacity) { T[] newArr = new T[capacity]; CopyTo(newArr, 0); head = 0; tail = (size == capacity) ? 0 : size; arr = newArr; } /// <inheritdoc/> public IEnumerator<T> GetEnumerator() { if (head < tail) { for (int i = head; i < tail; i++) yield return arr[i]; } else { for (int i = head; i < arr.Length; i++) yield return arr[i]; for (int i = 0; i < tail; i++) yield return arr[i]; } } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return this.GetEnumerator(); } bool ICollection<T>.IsReadOnly { get { return false; } } void ICollection<T>.Add(T item) { PushBack(item); } /// <inheritdoc/> public bool Contains(T item) { EqualityComparer<T> comparer = EqualityComparer<T>.Default; foreach (T element in this) if (comparer.Equals(item, element)) return true; return false; } /// <inheritdoc/> public void CopyTo(T[] array, int arrayIndex) { if (array == null) throw new ArgumentNullException("array"); if (head < tail) { Array.Copy(arr, head, array, arrayIndex, tail - head); } else { int num1 = arr.Length - head; Array.Copy(arr, head, array, arrayIndex, num1); Array.Copy(arr, 0, array, arrayIndex + num1, tail); } } bool ICollection<T>.Remove(T item) { throw new NotSupportedException(); } } }