﻿<hb:PluginControl x:Class="HMI.IOMonitor.IOMonitor"
             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:hb="clr-namespace:HMI.Base;assembly=HMI.Base"
             xmlns:local="clr-namespace:HMI.IOMonitor"
             xmlns:uic="clr-namespace:HMI.UI.Converter;assembly=HMI.UI"
             xmlns:ui="clr-namespace:HMI.UI;assembly=HMI.UI"
             xmlns:pw="https://opensource.panuon.com/wpf"
             xmlns:pu="https://opensource.panuon.com/wpf-ui"
             xmlns:dp="clr-namespace:HMI.UI.DpUtil;assembly=HMI.UI"
             mc:Ignorable="d"
             Loaded="UserControl_Loaded"
             Background="{StaticResource WorkspaceBackground}"
             d:DesignHeight="450" d:DesignWidth="800">

    <UserControl.Resources>
        <Style TargetType="Label">
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
        </Style>
        <CollectionViewSource x:Key="disFilter" Source="{Binding Dis}" Filter="CollectionViewSource_Filter"/>
        <CollectionViewSource x:Key="dosFilter" Source="{Binding Dos}" Filter="CollectionViewSource_Filter"/>
    </UserControl.Resources>

    <Border Grid.Row="1" Style="{StaticResource CardBoarder}">
        <Grid dp:GridHelper.Space="10">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition/>
            </Grid.RowDefinitions>

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="5*"/>
                <ColumnDefinition Width="5*"/>
            </Grid.ColumnDefinitions>

            <DockPanel Grid.Row="0" Grid.ColumnSpan="2">
                <StackPanel DockPanel.Dock="Right" Style="{StaticResource ButtonGroup}">
                    <Button Style="{StaticResource AddBtn}" x:Name="addBtn" Click="Button_Click"/>
                    <Button Style="{StaticResource ImportBtn}" x:Name="importBtn" Click="Button_Click"/>
                </StackPanel>

                <TextBlock DockPanel.Dock="Left" VerticalAlignment="Center" 
                       FontSize="{StaticResource TitleFontSize}" Text="{DynamicResource DIO.Title}"/>
            </DockPanel>

            <Border Grid.Row="1" Style="{StaticResource CardBoarder}" Padding="0">
                <Grid dp:GridHelper.Space="10">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition />
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>

                    <Label Grid.Row="0" Grid.Column="0" Content="{DynamicResource DIO.di.Name}"
                       FontSize="{StaticResource ContentFontSize}"/>
                    <ComboBox Grid.Row="0" Grid.Column="1" x:Name="diName" 
                          IsEditable="True" Style="{StaticResource FormComboxStyle}"/>

                    <Button Style="{StaticResource PrimaryButton}" Grid.Row="0" Grid.Column="2" 
                        x:Name="diSelect" Click="Button_Click"
                        Content="{DynamicResource DIO.di.Query}"/>
                    <Button Style="{StaticResource PrimaryButton}" Grid.Row="0" Grid.Column="3"
                        x:Name="diReset" Click="Button_Click"
                            Content="{DynamicResource DIO.di.Reset}"/>

                    <Label Grid.Row="1" Grid.Column="0" Content="{DynamicResource DIO.di.Code}"
       FontSize="{StaticResource ContentFontSize}"/>
                    <ComboBox Grid.Row="1" Grid.Column="1" x:Name="diCode" 
                          IsEditable="True"
                          Style="{StaticResource FormComboxStyle}"/>

                    <Label Grid.Row="2" Grid.Column="0" Content="{DynamicResource DIO.di.Group}"
       FontSize="{StaticResource ContentFontSize}"/>
                    <ComboBox Grid.Row="2" Grid.Column="1" x:Name="diGroup" 
                          IsEditable="True" Style="{StaticResource FormComboxStyle}"/>

                    <DataGrid Grid.Row="3" Grid.ColumnSpan="4" x:Name="diTable" Style="{StaticResource DefaultDataGrid}" 
                          ItemsSource="{Binding Source={StaticResource disFilter}}">

                        <DataGrid.RowStyle>
                            <Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Static pu:StyleKeys.DataGridRowStyle}}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding Value}" Value="True">
                                        <Setter Property="Background" Value="{StaticResource DangerColor}"/>
                                        <Setter Property="Foreground" Value="{StaticResource DangerColorContrast}"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </DataGrid.RowStyle>
                        <DataGrid.Columns>
                            <DataGridTemplateColumn Header="#" CanUserResize="False">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding Converter={StaticResource rowNumber},
    RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow},AncestorLevel=1}}"/>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>
                            <DataGridTextColumn Width="*" Binding="{Binding Code}">
                                <DataGridTextColumn.Header>
                                    <TextBlock Text="{DynamicResource DIO.Code}"/>
                                </DataGridTextColumn.Header>
                            </DataGridTextColumn>
                            <DataGridTextColumn Width="*" Binding="{Binding Name}">
                                <DataGridTextColumn.Header>
                                    <TextBlock Text="{DynamicResource DIO.Name}"/>
                                </DataGridTextColumn.Header>
                            </DataGridTextColumn>
                            <DataGridTextColumn Width="*" Binding="{Binding Type}">
                                <DataGridTextColumn.Header>
                                    <TextBlock Text="{DynamicResource DIO.Type}"/>
                                </DataGridTextColumn.Header>
                            </DataGridTextColumn>
                            <DataGridTextColumn Width="*" Binding="{Binding Value}">
                                <DataGridTextColumn.Header>
                                    <TextBlock Text="{DynamicResource DIO.di.Value}"/>
                                </DataGridTextColumn.Header>
                            </DataGridTextColumn>
                        </DataGrid.Columns>
                    </DataGrid>
                </Grid>
            </Border>

            <Border Grid.Row="1" Grid.Column="1" Style="{StaticResource CardBoarder}" Padding="0">
                <Grid dp:GridHelper.Space="10">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition />
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>

                    <Label Grid.Row="0" Grid.Column="0" Content="{DynamicResource DIO.do.Name}"
                   FontSize="{StaticResource ContentFontSize}"/>
                    <ComboBox Grid.Row="0" Grid.Column="1" x:Name="doName"
                          IsEditable="True" Style="{StaticResource FormComboxStyle}"/>

                    <Button Style="{StaticResource PrimaryButton}" Grid.Row="0" Grid.Column="2"
                        x:Name="doSelect" Click="Button_Click" Content="{DynamicResource DIO.do.Query}"/>
                    <Button Style="{StaticResource PrimaryButton}" Grid.Row="0" Grid.Column="3"
                        x:Name="doReset" Click="Button_Click" Content="{DynamicResource DIO.do.Reset}"/>

                    <Label Grid.Row="1" Grid.Column="0" Content="{DynamicResource DIO.do.Code}"
   FontSize="{StaticResource ContentFontSize}"/>
                    <ComboBox Grid.Row="1" Grid.Column="1" x:Name="doCode"
                          IsEditable="True" Style="{StaticResource FormComboxStyle}"/>

                    <Label Grid.Row="2" Grid.Column="0" Content="{DynamicResource DIO.do.Group}"
   FontSize="{StaticResource ContentFontSize}"/>
                    <ComboBox Grid.Row="2" Grid.Column="1" x:Name="doGroup"
                          IsEditable="True" Style="{StaticResource FormComboxStyle}"/>

                    <DataGrid Grid.Row="3" Grid.ColumnSpan="4" x:Name="doTable" Style="{StaticResource DefaultDataGrid}" 
                      ItemsSource="{Binding Source={StaticResource dosFilter}}">
                        <DataGrid.RowStyle>
                            <Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Static pu:StyleKeys.DataGridRowStyle}}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding Value}" Value="True">
                                        <Setter Property="Background" Value="{StaticResource DangerColor}"/>
                                        <Setter Property="Foreground" Value="{StaticResource DangerColorContrast}"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </DataGrid.RowStyle>
                        <DataGrid.Columns>
                            <DataGridTemplateColumn Header="#" CanUserResize="False">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding Converter={StaticResource rowNumber},
RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow},AncestorLevel=1}}"/>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>
                            <DataGridTextColumn Width="*" Binding="{Binding Code}">
                                <DataGridTextColumn.Header>
                                    <TextBlock Text="{DynamicResource DIO.Code}"/>
                                </DataGridTextColumn.Header>
                            </DataGridTextColumn>
                            <DataGridTextColumn Width="*" Binding="{Binding Name}">
                                <DataGridTextColumn.Header>
                                    <TextBlock Text="{DynamicResource DIO.Name}"/>
                                </DataGridTextColumn.Header>
                            </DataGridTextColumn>
                            <DataGridTextColumn Width="*" Binding="{Binding Type}">
                                <DataGridTextColumn.Header>
                                    <TextBlock Text="{DynamicResource DIO.Type}"/>
                                </DataGridTextColumn.Header>
                            </DataGridTextColumn>
                            <DataGridTextColumn Width="*" Binding="{Binding Value}">
                                <DataGridTextColumn.Header>
                                    <TextBlock Text="{DynamicResource DIO.do.Value}"/>
                                </DataGridTextColumn.Header>
                            </DataGridTextColumn>
                        </DataGrid.Columns>
                    </DataGrid>
                </Grid>
            </Border>
        </Grid>
    </Border>
</hb:PluginControl>