aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules/Tango.PPC.Technician/Views/LoggingView.xaml
blob: 8393349eaf00eb1a9924dcb17001ee0a93eb722f (plain)
1
<
<UserControl x:Class="Tango.PPC.Technician.Views.LoggingView"
             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:local="clr-namespace:Tango.PPC.Technician.Views"
             xmlns:sys="clr-namespace:System;assembly=mscorlib"
             xmlns:vm="clr-namespace:Tango.PPC.Technician.ViewModels"
             xmlns:touch="clr-namespace:Tango.Touch.Controls;assembly=Tango.Touch"
             xmlns:converters="clr-namespace:Tango.PPC.Technician.Converters"
             xmlns:global="clr-namespace:Tango.PPC.Technician"
             mc:Ignorable="d" 
             d:DesignHeight="1280" d:DesignWidth="800" d:DataContext="{d:DesignInstance Type=vm:LoggingViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.LoggingViewVM}">

    <UserControl.Resources>
        <converters:LogItemMessageToOneLineConverter x:Key="LogItemMessageToOneLineConverter" />
    </UserControl.Resources>

    <Grid Background="{StaticResource TangoMidBackgroundBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="1*"/>
        </Grid.RowDefinitions>

        <Border Padding="20" Background="{StaticResource TangoPrimaryBackgroundBrush}" BorderThickness="0 0 0 1" BorderBrush="{StaticResource TangoDividerBrush}">
            <Border.Effect>
                <DropShadowEffect Color="Silver" ShadowDepth="0" BlurRadius="20" Opacity="1" />
            </Border.Effect>
            <TextBlock VerticalAlignment="Center" FontSize="{StaticResource TangoHeaderFontSize}" FontWeight="SemiBold">Logging</TextBlock>
        </Border>

        <Grid Grid.Row="1">

            <DockPanel>
                <DockPanel DockPanel.Dock="Top">
                    <StackPanel Orientation="Horizontal">
                        <touch:TouchNavigationLinks x:Name="nav" Margin="20" FontSize="{StaticResource TangoNavigationLinksFontSize}">
                            <sys:String>Application</sys:String>
                            <sys:String>Embedded</sys:String>
                        </touch:TouchNavigationLinks>

                        <StackPanel Orientation="Horizontal" Margin="20 3 0 0">
                            <touch:TouchToggleIconButton Icon="Pause" Width="32" Height="32" Padding="7" CheckedIcon="Play" IsChecked="{Binding IsPaused}"></touch:TouchToggleIconButton>
                            <touch:TouchIconButton Margin="10 0 0 0" Icon="TrashAltRegular" Foreground="{StaticResource TangoDarkForegroundBrush}" Width="32" Height="32" Padding="7" Command="{Binding ClearCommand}"></touch:TouchIconButton>

                            <StackPanel Orientation="Horizontal" Margin="20 0 0 0">
                                <touch:TouchIcon Icon="Magnify" Foreground="{StaticResource TangoGrayBrush}" Width="16" Height="16" />
                                <touch:TouchTextBox Width="200" VerticalAlignment="Center" Margin="5 -10 0 0" Text="{Binding Filter,Delay=1000}"></touch:TouchTextBox>
                            </StackPanel>

                            <touch:TouchCheckBox IsChecked="{Binding ProcessDebugLogs}" Margin="20 0 0 0" Content="Debug Logs">
                                <touch:TouchCheckBox.Style>
                                    <Style TargetType="touch:TouchCheckBox" BasedOn="{StaticResource {x:Type touch:TouchCheckBox}}">
                                        <Setter Property="Visibility" Value="Collapsed"></Setter>
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding ElementName=nav,Path=SelectedIndex}" Value="0">
                                                <Setter Property="Visibility" Value="Visible"></Setter>
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </touch:TouchCheckBox.Style>
                            </touch:TouchCheckBox>
                        </StackPanel>
                    </StackPanel>
                    <touch:TouchDatePicker Visibility="Collapsed" SelectedDate="12/15/2018" Height="40" />
                </DockPanel>

                <Grid Margin="20">
                    <TabControl Padding="0" BorderThickness="0" Margin="0 10 0 0" Background="Transparent" SelectedIndex="{Binding ElementName=nav,Path=SelectedIndex,Mode=OneWay}">
                        <TabItem Header="Application" Visibility="Collapsed">
                            <touch:TouchSimpleDataGrid x:Name="gridApplication" Style="{StaticResource TechGrid}" ItemsSource="{Binding ApplicationLogsViewSource}" SelectedItem="{Binding SelectedLog}">
                                <DataGrid.Columns>
                                    <DataGridTemplateColumn Header="" Width="50">
                                        <DataGridTemplateColumn.CellTemplate>
                                            <DataTemplate>
                                                <touch:TouchIcon Width="16">
                                                    <touch:TouchIcon.Style>
                                                        <Style TargetType="touch:TouchIcon">
                                                            <Setter Property="Icon" Value="InformationOutline"></Setter>
                                                            <Style.Triggers>
                                                                <DataTrigger Binding="{Binding Category}" Value="Warning">
                                                                    <Setter Property="Icon" Value="ExclamationTriangleSolid"></Setter>
                                                                    <Setter Property="Foreground" Value="{StaticResource TangoWarningBrush}"></Setter>
                                                                </DataTrigger>
                                                                <DataTrigger Binding="{Binding Category}" Value="Error">
                                                                    <Setter Property="Icon" Value="Alert"></Setter>
                                                                    <Setter Property="Foreground" Value="{StaticResource TangoErrorBrush}"></Setter>
                                                                </DataTrigger>
                                                                <DataTrigger Binding="{Binding Category}" Value="Critical">
                                                                    <Setter Property="Icon" Value="Alert"></Setter>
                                                                    <Setter Property="Foreground" Value="{StaticResource TangoErrorBrush}"></Setter>
                                                                </DataTrigger>
                                                            </Style.Triggers>
                                                        </Style>
                                                    </touch:TouchIcon.Style>
                                                </touch:TouchIcon>
                                            </DataTemplate>
                                        </DataGridTemplateColumn.CellTemplate>
                                    </DataGridTemplateColumn>
                                    <DataGridTextColumn Header="Time" Width="120" Binding="{Binding TimeStamp,Converter={StaticResource DateTimeUTCToStringConverter},Mode=OneWay,ConverterParameter='hh\\:mm\\:ss.ff'}" />
                                    <DataGridTemplateColumn Header="Message" Width="1*">
                                        <DataGridTemplateColumn.CellTemplate>
                                            <DataTemplate>
                                                <TextBlock Text="{Binding Message,Converter={StaticResource LogItemMessageToOneLineConverter},ConverterParameter='70',Mode=OneWay}"/>
                                            </DataTemplate>
                                        </DataGridTemplateColumn.CellTemplate>
                                    </DataGridTemplateColumn>
                                </DataGrid.Columns>
                            </touch:TouchSimpleDataGrid>
                        </TabItem>
                        <TabItem Header="Embedded" Visibility="Collapsed">
                            <touch:TouchSimpleDataGrid x:Name="gridEmbedded" Style="{StaticResource TechGrid}" ItemsSource="{Binding EmbeddedLogsViewSource}" SelectedItem="{Binding SelectedLog}">
                                <DataGrid.Columns>
                                    <DataGridTemplateColumn Header="" Width="50">
                                        <DataGridTemplateColumn.CellTemplate>
                                            <DataTemplate>
                                                <touch:TouchIcon Width="16">
                                                    <touch:TouchIcon.Style>
                                                        <Style TargetType="touch:TouchIcon">
                                                            <Setter Property="Icon" Value="InformationOutline"></Setter>
                                                            <Style.Triggers>
                                                                <DataTrigger Binding="{Binding Category}" Value="Warning">
                                                                    <Setter Property="Icon" Value="ExclamationTriangleSolid"></Setter>
                                                                    <Setter Property="Foreground" Value="{StaticResource TangoWarningBrush}"></Setter>
                                                                </DataTrigger>
                                                                <DataTrigger Binding="{Binding Category}" Value="Error">
                                                                    <Setter Property="Icon" Value="Alert"></Setter>
                                                                    <Setter Property="Foreground" Value="{StaticResource TangoErrorBrush}"></Setter>
                                                                </DataTrigger>
                                                                <DataTrigger Binding="{Binding Category}" Value="Critical">
                                                                    <Setter Property="Icon" Value="Alert"></Setter>
                                                                    <Setter Property="Foreground" Value="{StaticResource TangoErrorBrush}"></Setter>
                                                                </DataTrigger>
                                                            </Style.Triggers>
                                                        </Style>
                                                    </touch:TouchIcon.Style>
                                                </touch:TouchIcon>
                                            </DataTemplate>
                                        </DataGridTemplateColumn.CellTemplate>
                                    </DataGridTemplateColumn>
                                    <DataGridTextColumn Header="Time" Width="120" Binding="{Binding TimeStamp,Converter={StaticResource DateTimeUTCToStringConverter},Mode=OneWay,ConverterParameter='hh\\:mm\\:ss.ff'}" />
                                    <DataGridTemplateColumn Header="Message" Width="1*">
                                        <DataGridTemplateColumn.CellTemplate>
                                            <DataTemplate>
                                                <TextBlock Text="{Binding Message,Converter={StaticResource LogItemMessageToOneLineConverter},ConverterParameter='70',Mode=OneWay}"/>
                                            </DataTemplate>
                                        </DataGridTemplateColumn.CellTemplate>
                                    </DataGridTemplateColumn>
                                </DataGrid.Columns>
                            </touch:TouchSimpleDataGrid>
                        </TabItem>
                    </TabControl>
                </Grid>
            </DockPanel>

        </Grid>
    </Grid>
</UserControl>