<UserControl x:Class="SmartAquaViewer.View.EnegyView"
             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:SmartAquaViewer.View"
             xmlns:control="clr-namespace:SmartAquaViewer.Controls"
             xmlns:helper="clr-namespace:SmartAquaViewer.Helper"
             xmlns:classes="clr-namespace:SmartAquaViewer.Classes"
             mc:Ignorable="d" 
             d:DesignHeight="940" d:DesignWidth="1650">

    <UserControl.Resources>
        <classes:InverseBoolConverter x:Key="InverseBoolConverter"/>
    </UserControl.Resources>
    
    <Grid Background="#243851">
        <Grid.RowDefinitions>
            <RowDefinition Height="160"/>
            <RowDefinition Height="350"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="600"/>
        </Grid.ColumnDefinitions>

        <Border Grid.ColumnSpan="2" Margin="20" BorderBrush="#3E4C60" BorderThickness="1" CornerRadius="10">
            <Border.Background>
                <ImageBrush ImageSource="/Resources/Images/top_bg.png" Stretch="Fill"/>
            </Border.Background>
            <UniformGrid Columns="9">
                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                    <TextBlock Text="총 소비 전력" HorizontalAlignment="Center" 
                               FontSize="22" Foreground="White" FontFamily="{StaticResource SCDream5}"/>
                    <TextBlock Text="{Binding TotalEnergy, StringFormat=\{0:F2\}}" HorizontalAlignment="Center" 
                               FontSize="26" Foreground="White" FontFamily="{StaticResource SCDream4}"/>
                </StackPanel>
                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                    <TextBlock Text="모래여과기" HorizontalAlignment="Center" 
                               FontSize="22" Foreground="White" FontFamily="{StaticResource SCDream5}"/>
                    <TextBlock Text="{Binding TotalSandFilterEnergy, StringFormat=\{0:F2\}}" HorizontalAlignment="Center" 
                               FontSize="26" Foreground="White" FontFamily="{StaticResource SCDream4}"/>
                </StackPanel>
                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                    <TextBlock Text="순환펌프" HorizontalAlignment="Center" 
                               FontSize="22" Foreground="White" FontFamily="{StaticResource SCDream5}"/>
                    <TextBlock Text="{Binding TotalCirculationPumpEnergy, StringFormat=\{0:F2\}}" HorizontalAlignment="Center" 
                               FontSize="26" Foreground="White" FontFamily="{StaticResource SCDream4}"/>
                </StackPanel>
                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                    <TextBlock Text="히트펌프" HorizontalAlignment="Center" 
                               FontSize="22" Foreground="White" FontFamily="{StaticResource SCDream5}"/>
                    <TextBlock Text="{Binding TotalHeatPumpEnergy, StringFormat=\{0:F2\}}" HorizontalAlignment="Center" 
                               FontSize="26" Foreground="White" FontFamily="{StaticResource SCDream4}"/>
                </StackPanel>
                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                    <TextBlock Text="에어브로와" HorizontalAlignment="Center" 
                               FontSize="22" Foreground="White" FontFamily="{StaticResource SCDream5}"/>
                    <TextBlock Text="{Binding TotalAirBlowerEnergy, StringFormat=\{0:F2\}}" HorizontalAlignment="Center" 
                               FontSize="26" Foreground="White" FontFamily="{StaticResource SCDream4}"/>
                </StackPanel>
                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                    <TextBlock Text="오존발생기" HorizontalAlignment="Center" 
                               FontSize="22" Foreground="White" FontFamily="{StaticResource SCDream5}"/>
                    <TextBlock Text="{Binding TotalOzoneGeneratorEnergy, StringFormat=\{0:F2\}}" HorizontalAlignment="Center" 
                               FontSize="26" Foreground="White" FontFamily="{StaticResource SCDream4}"/>
                </StackPanel>
                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                    <TextBlock Text="자외선 살균기" HorizontalAlignment="Center" 
                               FontSize="22" Foreground="White" FontFamily="{StaticResource SCDream5}"/>
                    <TextBlock Text="{Binding TotalUVSterilizerEnergy, StringFormat=\{0:F2\}}" HorizontalAlignment="Center" 
                               FontSize="26" Foreground="White" FontFamily="{StaticResource SCDream4}"/>
                </StackPanel>
                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                    <TextBlock Text="오존용해장치" HorizontalAlignment="Center" 
                               FontSize="22" Foreground="White" FontFamily="{StaticResource SCDream5}"/>
                    <TextBlock Text="{Binding TotalOzoneDissolverEnergy, StringFormat=\{0:F2\}}" HorizontalAlignment="Center" 
                               FontSize="26" Foreground="White" FontFamily="{StaticResource SCDream4}"/>
                </StackPanel>
                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                    <TextBlock Text="배오존장치" HorizontalAlignment="Center" 
                               FontSize="22" Foreground="White" FontFamily="{StaticResource SCDream5}"/>
                    <TextBlock Text="{Binding TotalExcessOzoneDestroyerEnergy, StringFormat=\{0:F2\}}" HorizontalAlignment="Center" 
                               FontSize="26" Foreground="White" FontFamily="{StaticResource SCDream4}"/>
                </StackPanel>
            </UniformGrid>
        </Border>

        <DataGrid Style="{StaticResource DataGridStyle}" ItemsSource="{Binding WaterQualityList}" Background="Transparent"
                  RowStyle="{StaticResource DataGridRowStyle}" ColumnHeaderStyle="{StaticResource DataGridColumnHeaderStyle}"
                  Grid.Row="1" Grid.RowSpan="2" Margin="20 0 20 20"
                  HorizontalAlignment="Stretch" ColumnWidth="*">
            <DataGrid.Columns>
                <DataGridTextColumn 
                    Header="시간"
                    Binding="{Binding RecordedTime, StringFormat=\{0:HH:mm:ss\}}"
                    ElementStyle="{StaticResource DataGridElmenetStyle}"/>

                <DataGridTextColumn Header="모래여과기" ElementStyle="{StaticResource DataGridElmenetStyle}"
                                    Binding="{Binding Filtering.SandFilterEnergy}"/>
                <DataGridTextColumn Header="순환펌프" ElementStyle="{StaticResource DataGridElmenetStyle}"
                                    Binding="{Binding Filtering.CirculationPumpEnergy}"/>
                <DataGridTextColumn Header="히트펌프" ElementStyle="{StaticResource DataGridElmenetStyle}"
                                    Binding="{Binding Filtering.HeatPumpEnergy}"/>
                <DataGridTextColumn Header="에어브로와" ElementStyle="{StaticResource DataGridElmenetStyle}"
                                    Binding="{Binding Filtering.AirBlowerEnergy}"/>
                <DataGridTextColumn Header="오존발생기" ElementStyle="{StaticResource DataGridElmenetStyle}"
                                    Binding="{Binding Sterilizing.OzoneGeneratorEnergy}"/>
                <DataGridTextColumn ElementStyle="{StaticResource DataGridElmenetStyle}"
                                    Binding="{Binding Sterilizing.UVSterilizerEnergy}">
                    <DataGridTextColumn.Header>
                        <StackPanel>
                            <TextBlock Text="자외선"/>
                            <TextBlock Text="살균기"/>
                        </StackPanel>
                    </DataGridTextColumn.Header>
                </DataGridTextColumn>
                <DataGridTextColumn Header="오존용해장치" ElementStyle="{StaticResource DataGridElmenetStyle}"
                                    Binding="{Binding Sterilizing.OzoneDissolverEnergy}"/>
                <DataGridTextColumn Header="배오존장치" ElementStyle="{StaticResource DataGridElmenetStyle}"
                                    Binding="{Binding Sterilizing.ExcessOzoneDestroyerEnergy}"/>
                <DataGridTextColumn Header="총 전력" ElementStyle="{StaticResource DataGridElmenetStyle}"
                                    Binding="{Binding TotalEnergy, StringFormat=\{0:F2\}}"/>
            </DataGrid.Columns>
        </DataGrid>

        <Border Grid.Row="1" Grid.Column="1" Margin="0 0 20 20" CornerRadius="10"
                Background="#384659" BorderBrush="#404F63" BorderThickness="1">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition/>
                    <RowDefinition Height="50"/>
                </Grid.RowDefinitions>
                <StackPanel>
                    <Grid Margin="15 15 15 15">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="80"/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="그래프" VerticalAlignment="Center"
                                   FontSize="20" FontFamily="{StaticResource SCDream4}" Foreground="White"/>

                        <ComboBox Margin="15 0 0 0" Height="40" Grid.Column="1"
                                  Style="{StaticResource ComboBoxStyle}"
                                  ItemsSource="{Binding GraphTypes}"
                                  SelectedIndex="{Binding SelectedGraphIndex, Mode=TwoWay}"
                                  helper:ComboBoxHelper.SelectFirstOnItemsChange="True"
                                  IsEditable="False" IsTextSearchEnabled="False"/>
                    </Grid>
                    <Grid Margin="15 0">
                        <Grid.Resources>
                            <Style TargetType="FrameworkElement">
                                <Setter Property="Visibility" Value="Collapsed"/>
                            </Style>
                            <Style x:Key="VisibleWhenLine" TargetType="FrameworkElement" BasedOn="{StaticResource {x:Type FrameworkElement}}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding SelectedGraphType}" Value="LINE">
                                        <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                            <Style x:Key="VisibleWhenStackArea" TargetType="FrameworkElement" BasedOn="{StaticResource {x:Type FrameworkElement}}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding SelectedGraphType}" Value="STACKAREA">
                                        <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                            <Style x:Key="VisibleWhenLineNStackArea" TargetType="FrameworkElement" BasedOn="{StaticResource {x:Type FrameworkElement}}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding SelectedGraphType}" Value="LINE">
                                        <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding SelectedGraphType}" Value="STACKAREA">
                                        <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                            <Style x:Key="VisibleWhenPie" TargetType="FrameworkElement" BasedOn="{StaticResource {x:Type FrameworkElement}}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding SelectedGraphType}" Value="PIE">
                                        <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </Grid.Resources>

                        <StackPanel>
                            <StackPanel Style="{StaticResource VisibleWhenLineNStackArea}">
                                <Grid Margin="0 0 0 20" >
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="80"/>
                                        <ColumnDefinition/>
                                    </Grid.ColumnDefinitions>
                                    <TextBlock Text="X축" VerticalAlignment="Center"
                                               FontSize="20" FontFamily="{StaticResource SCDream4}" Foreground="White"/>
                                    <TextBlock Text="{Binding SelectedXField.Display}" VerticalAlignment="Center"
                                               Margin="15 0 0 0" Grid.Column="1"
                                               FontSize="20" FontFamily="{StaticResource SCDream4}" Foreground="White"/>
                                </Grid>

                                <Grid Margin="0 0 0 15">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="80"/>
                                        <ColumnDefinition/>
                                    </Grid.ColumnDefinitions>
                                    <TextBlock Text="Y축" VerticalAlignment="Top"
                                               FontSize="20" FontFamily="{StaticResource SCDream4}" Foreground="White"/>

                                    <Border Grid.Column="1" CornerRadius="10" 
                                            Background="White" Margin="15 0 0 15">
                                        <ListBox ItemsSource="{Binding YFieldCandidates}"
                                                 DisplayMemberPath="Display"
                                                 SelectionMode="Extended"
                                                 helper:MultiSelectBehavior.SelectedItems="{Binding SelectedYFields, Mode=OneWay}"
                                                 helper:MultiSelectBehavior.KeyPath="Key"
                                                 helper:MultiSelectBehavior.ValuePath="Value"
                                                 Height="Auto" Background="White"
                                                 FontSize="16" FontWeight="Bold"
                                                 Style="{StaticResource MaterialDesignFilterChipListBox}"/>
                                    </Border>
                                </Grid>
                            </StackPanel>

                            <StackPanel Style="{StaticResource VisibleWhenPie}">
                                <Grid Margin="0 0 0 15">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="80"/>
                                        <ColumnDefinition/>
                                    </Grid.ColumnDefinitions>
                                    <TextBlock Text="필드" VerticalAlignment="Top"
                                               FontSize="20" FontFamily="{StaticResource SCDream4}" Foreground="White"/>

                                    <Border Grid.Column="1" CornerRadius="10" 
                                            Background="White" Margin="15 0 0 15">
                                        <ListBox ItemsSource="{Binding YFieldCandidates}"
                                                 DisplayMemberPath="Display"
                                                 SelectionMode="Extended"
                                                 helper:MultiSelectBehavior.SelectedItems="{Binding SelectedYFields, Mode=OneWay}"
                                                 helper:MultiSelectBehavior.KeyPath="Key"
                                                 helper:MultiSelectBehavior.ValuePath="Value"
                                                 Height="Auto" Background="White"
                                                 FontSize="16" FontWeight="Bold"
                                                 Style="{StaticResource MaterialDesignFilterChipListBox}"/>
                                    </Border>
                                </Grid>

                                <StackPanel Orientation="Horizontal" Margin="0 0 0 15">
                                    <RadioButton x:Name="rbStatus" Content="합계" 
                                                 GroupName="pie" Margin="0 0 30 0"
                                                 Foreground="White" FontSize="20"
                                                 Style="{StaticResource MaterialDesignUserForegroundRadioButton}"
                                                 IsChecked="{Binding UseAverage, Converter={StaticResource InverseBoolConverter}, Mode=TwoWay}"/>
                                    <RadioButton x:Name="pie" Content="평균" 
                                                 GroupName="pie" Grid.Column="1" 
                                                 Foreground="White" FontSize="20"
                                                 Style="{StaticResource MaterialDesignUserForegroundRadioButton}"
                                                 IsChecked="{Binding UseAverage, Mode=TwoWay}"/>
                                </StackPanel>
                            </StackPanel>

                            
                        </StackPanel>
                    </Grid>
                </StackPanel>

                <StackPanel Orientation="Horizontal" Margin="15 0 0 0" Grid.Row="1">
                    <CheckBox Content="마커 표시" IsChecked="{Binding ShowMarkers}" Margin="0 0 15 0"
                              FontSize="20" FontFamily="{StaticResource SCDream4}" Foreground="White"
                              VerticalContentAlignment="Center">
                        <CheckBox.Style>
                            <Style TargetType="CheckBox" BasedOn="{StaticResource MaterialDesignUserForegroundCheckBox}">
                                <Setter Property="Visibility" Value="Collapsed"/>
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding SelectedGraphType}" Value="LINE">
                                        <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding SelectedGraphType}" Value="STACKAREA">
                                        <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </CheckBox.Style>
                    </CheckBox>
                    <CheckBox Content="범례 표시" IsChecked="{Binding ShowLegends}" Margin="0 0 15 0"
                              FontSize="20" FontFamily="{StaticResource SCDream4}" Foreground="White"
                              VerticalContentAlignment="Center">
                        <CheckBox.Style>
                            <Style TargetType="CheckBox" BasedOn="{StaticResource MaterialDesignUserForegroundCheckBox}">
                                <Setter Property="Visibility" Value="Collapsed"/>
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding SelectedGraphType}" Value="LINE">
                                        <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding SelectedGraphType}" Value="STACKAREA">
                                        <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </CheckBox.Style>
                    </CheckBox>
                    <CheckBox Content="도넛 모드" IsChecked="{Binding IsDonut}" Margin="0 0 15 0"
                              FontSize="20" FontFamily="{StaticResource SCDream4}" Foreground="White"
                              VerticalContentAlignment="Center">
                        <CheckBox.Style>
                            <Style TargetType="CheckBox" BasedOn="{StaticResource MaterialDesignUserForegroundCheckBox}">
                                <Setter Property="Visibility" Value="Collapsed"/>
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding SelectedGraphType}" Value="PIE">
                                        <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </CheckBox.Style>
                    </CheckBox>
                </StackPanel>

                <StackPanel Orientation="Horizontal" Margin="15 0" Grid.Row="1" HorizontalAlignment="Right">
                    <Button Content="그래프 생성" Style="{StaticResource MaterialDesignFlatLightBgButton}"
                            FontWeight="Bold" Command="{Binding DrawGraphCommand}"/>
                </StackPanel>
            </Grid>
        </Border>

        <Border Grid.Row="2" Grid.Column="1" Margin="0 0 20 20" CornerRadius="10"
                Background="#384659" BorderBrush="#404F63" BorderThickness="1">
            <control:GraphControl x:Name="graphControl"
                      Margin="10" DataContext="{Binding GraphControlVM}"
                      HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
        </Border>
    </Grid>
</UserControl>
