<UserControl x:Class="Server_Dashboard.Controls.ServerModules.ServerModule"
             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:Server_Dashboard.Controls.ServerModules"
             xmlns:halfroundprogressbar="clr-namespace:Server_Dashboard.Controls.HalfRoundProgressBar"
             xmlns:doubleroundprogressbar="clr-namespace:Server_Dashboard.Controls.DoubleRoundProgressBar" mc:Ignorable="d">
    <!--Module-->
    <Button Cursor="Hand">
        <Button.Style>
            <Style TargetType="Button">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Border x:Name="Border" Background="{StaticResource BackgroundSurface_02dp}" BorderThickness="2" MinHeight="300" MinWidth="400" Width="Auto" Height="Auto" Margin="10" CornerRadius="5">
                                <Border.Effect>
                                    <DropShadowEffect BlurRadius="5" ShadowDepth="0" />
                                </Border.Effect>
                                <Border x:Name="BorderBackground" Background="{StaticResource BackgroundSurface_02dp}" CornerRadius="5">
                                    <Grid>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="40" />
                                            <RowDefinition Height="Auto" />
                                            <RowDefinition Height="*" />
                                        </Grid.RowDefinitions>
                                        <!--Top Bar-->
                                        <Border CornerRadius="4 4 0 0" Grid.Row="0"  Background="{StaticResource BackgroundSurface_08dp}">
                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="Auto" />
                                                    <ColumnDefinition Width="Auto" />
                                                    <ColumnDefinition Width="*" />
                                                    <ColumnDefinition Width="Auto" />
                                                </Grid.ColumnDefinitions>
                                                <Image Grid.Column="0" Margin="7.5 0 7.5 0" Height="25" Width="25" Source="{Binding ModuleIcon}" />
                                                <TextBlock Foreground="{StaticResource DeepPurple_A100}" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Left" Text="{Binding ModuleName}" />
                                                <Border CornerRadius="0 5 0 0" Background="{Binding StatusIndicator}" Grid.Column="3">
                                                    <Grid>
                                                        <Grid.ColumnDefinitions>
                                                            <ColumnDefinition />
                                                            <ColumnDefinition />
                                                        </Grid.ColumnDefinitions>
                                                        <TextBlock Margin="7 0 30 0" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Column="0" FontSize="24" Text="Status">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.87" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                        <Border CornerRadius="0 4 0 0" Grid.Column="1" HorizontalAlignment="Right" Background="{Binding StatusIndicatorBG}" Padding="6">
                                                            <Ellipse Fill="{Binding StatusIndicator}" StrokeThickness="0" Width="25" Height="25" />
                                                        </Border>
                                                    </Grid>
                                                </Border>
                                            </Grid>
                                        </Border>
                                        <Grid Grid.Row="1">
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="Auto" />
                                                <ColumnDefinition />
                                            </Grid.ColumnDefinitions>
                                            <TextBlock Grid.Column="0" Text="Server" FontSize="20" Margin="10 5 0 5">
                                                <TextBlock.Foreground>
                                                    <SolidColorBrush Color="White" Opacity="0.87" />
                                                </TextBlock.Foreground>
                                            </TextBlock>
                                            <TextBlock Grid.Column="1" Text="{Binding ServerInformation.ServerName}" FontSize="20" Margin="10 5 0 5">
                                                <TextBlock.Foreground>
                                                    <SolidColorBrush Color="White" Opacity="0.87" />
                                                </TextBlock.Foreground>
                                            </TextBlock>
                                        </Grid>
                                        <!--Main Content-->
                                        <Grid Grid.Row="2" Margin="20" Width="Auto">
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="1.5*" />
                                                <ColumnDefinition />
                                            </Grid.ColumnDefinitions>
                                            <!--Information panel, left-->
                                            <Grid Margin="0 0 25 0">
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="Auto" />
                                                    <ColumnDefinition Width="Auto" />
                                                </Grid.ColumnDefinitions>
                                                <StackPanel Grid.Column="0">
                                                    <Border BorderThickness="0 0 0 1" Padding="0 0 0 5">
                                                        <Border.BorderBrush>
                                                            <SolidColorBrush Color="White" Opacity="0.12" />
                                                        </Border.BorderBrush>
                                                        <TextBlock Text="User" FontSize="16">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.60" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                    </Border>
                                                    <Border BorderThickness="0 1 0 1" Padding="0 5 0 5">
                                                        <Border.BorderBrush>
                                                            <SolidColorBrush Color="White" Opacity="0.12" />
                                                        </Border.BorderBrush>
                                                        <TextBlock Text="Public IP" FontSize="16">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.60" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                    </Border>
                                                    <Border BorderThickness="0 1 0 1" Padding="0 5 0 5">
                                                        <Border.BorderBrush>
                                                            <SolidColorBrush Color="White" Opacity="0.12" />
                                                        </Border.BorderBrush>
                                                        <TextBlock Text="Private IP" FontSize="16">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.60" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                    </Border>
                                                    <Border BorderThickness="0 1 0 1" Padding="0 5 0 5">
                                                        <Border.BorderBrush>
                                                            <SolidColorBrush Color="White" Opacity="0.12" />
                                                        </Border.BorderBrush>
                                                        <TextBlock Text="Uptime" FontSize="16">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.60" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                    </Border>
                                                    <Border BorderThickness="0 1 0 1" Padding="0 5 0 5">
                                                        <Border.BorderBrush>
                                                            <SolidColorBrush Color="White" Opacity="0.12" />
                                                        </Border.BorderBrush>
                                                        <TextBlock Text="Creation Date" FontSize="16">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.60" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                    </Border>
                                                    <Border BorderThickness="0 1 0 0" Padding="0 5 0 0">
                                                        <Border.BorderBrush>
                                                            <SolidColorBrush Color="White" Opacity="0.12" />
                                                        </Border.BorderBrush>
                                                        <TextBlock Text="Creator" FontSize="16">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.60" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                    </Border>
                                                </StackPanel>
                                                <StackPanel Grid.Column="1">
                                                    <Border BorderThickness="0 0 0 1" Padding="0 0 0 5">
                                                        <Border.BorderBrush>
                                                            <SolidColorBrush Color="White" Opacity="0.12" />
                                                        </Border.BorderBrush>
                                                        <TextBlock Text="{Binding ServerInformation.OsUserName}" FontSize="16" Padding="15 0 0 0">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.60" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                    </Border>
                                                    <Border BorderThickness="0 1 0 1" Padding="0 5 0 5">
                                                        <Border.BorderBrush>
                                                            <SolidColorBrush Color="White" Opacity="0.12" />
                                                        </Border.BorderBrush>
                                                        <TextBlock Text="{Binding ServerInformation.PublicIpAddress}" FontSize="16" Padding="15 0 0 0">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.60" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                    </Border>
                                                    <Border BorderThickness="0 1 0 1" Padding="0 5 0 5">
                                                        <Border.BorderBrush>
                                                            <SolidColorBrush Color="White" Opacity="0.12" />
                                                        </Border.BorderBrush>
                                                        <TextBlock Text="{Binding ServerInformation.PrivateIpAddress}" FontSize="16" Padding="15 0 0 0">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.60" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                    </Border>
                                                    <Border BorderThickness="0 1 0 1" Padding="0 5 0 5">
                                                        <Border.BorderBrush>
                                                            <SolidColorBrush Color="White" Opacity="0.12" />
                                                        </Border.BorderBrush>
                                                        <TextBlock Text="{Binding ServerInformation.Uptime}" FontSize="16" Padding="15 0 0 0">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.60" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                    </Border>
                                                    <Border BorderThickness="0 1 0 1" Padding="0 5 0 5">
                                                        <Border.BorderBrush>
                                                            <SolidColorBrush Color="White" Opacity="0.12" />
                                                        </Border.BorderBrush>
                                                        <TextBlock Text="{Binding CreationDate}" FontSize="16" Padding="15 0 0 0">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.60" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                    </Border>
                                                    <Border BorderThickness="0 1 0 0" Padding="0 5 0 0">
                                                        <Border.BorderBrush>
                                                            <SolidColorBrush Color="White" Opacity="0.12" />
                                                        </Border.BorderBrush>
                                                        <TextBlock Text="{Binding Creator}" FontSize="16" Padding="15 0 0 0">
                                                            <TextBlock.Foreground>
                                                                <SolidColorBrush Color="White" Opacity="0.60" />
                                                            </TextBlock.Foreground>
                                                        </TextBlock>
                                                    </Border>
                                                </StackPanel>
                                            </Grid>
                                            <!--Graphical Indicators Right-->
                                            <Grid Grid.Column="1">
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition />
                                                    <ColumnDefinition />
                                                </Grid.ColumnDefinitions>
                                                <Grid Grid.Column="0">
                                                    <Grid.RowDefinitions>
                                                        <RowDefinition />
                                                        <RowDefinition />
                                                    </Grid.RowDefinitions>
                                                    <halfroundprogressbar:HalfRoundProgressBar Margin="5" Grid.Row="0" ProgressBorderBrush="{StaticResource BackgroundSurface_02dp}" BackgroundBrush="{StaticResource BackgroundSurface_08dp}" Height="100" Width="100" Value="{Binding ServerInfo.CpuUsage}"  IndicatorBrush="{StaticResource Teal_A100}" />
                                                    <TextBlock Foreground="{StaticResource Teal_A100}" Grid.Row="0"  Text="CPU" VerticalAlignment="Center"  HorizontalAlignment="Center" FontSize="18" />
                                                    <halfroundprogressbar:HalfRoundProgressBar Margin="5" Grid.Row="1" ProgressBorderBrush="{StaticResource BackgroundSurface_02dp}" BackgroundBrush="{StaticResource BackgroundSurface_08dp}" Height="100" Width="100"  Value="{Binding ServerInfo.GpuUsage}" IndicatorBrush="{StaticResource Teal_A100}" />
                                                    <TextBlock Foreground="{StaticResource Teal_A100}" Grid.Row="1" Text="GPU" VerticalAlignment="Center"  HorizontalAlignment="Center"  FontSize="18" />
                                                </Grid>
                                                <Grid Grid.Column="1">
                                                    <Grid.RowDefinitions>
                                                        <RowDefinition />
                                                        <RowDefinition />
                                                    </Grid.RowDefinitions>
                                                    <doubleroundprogressbar:DoubleRoundProgressBar ValueRead="70" ValueWrite="60" ReadIndicatorBrush="{StaticResource DeepPurple_A100}" WriteIndicatorBrush="{StaticResource Teal_A100}" Margin="5" Grid.Row="0" ProgressBorderBrush="{StaticResource BackgroundSurface_02dp}" BackgroundBrush="{StaticResource BackgroundSurface_08dp}"  Height="100" Width="100" />
                                                    <StackPanel Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center">
                                                        <TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" Text="Read" Foreground="{StaticResource DeepPurple_A100}" />
                                                        <TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" Text="Write" Foreground="{StaticResource Teal_A100}" />
                                                    </StackPanel>
                                                    <doubleroundprogressbar:DoubleRoundProgressBar ValueRead="70" ValueWrite="60" ReadIndicatorBrush="{StaticResource DeepPurple_A100}" WriteIndicatorBrush="{StaticResource Teal_A100}" Margin="5" Grid.Row="1" ProgressBorderBrush="{StaticResource BackgroundSurface_02dp}" BackgroundBrush="{StaticResource BackgroundSurface_08dp}" Height="100" Width="100" />
                                                    <StackPanel Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center">
                                                        <TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" Text="UP" Foreground="{StaticResource DeepPurple_A100}" />
                                                        <TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" Text="DOWN" Foreground="{StaticResource Teal_A100}" />
                                                    </StackPanel>
                                                </Grid>
                                            </Grid>
                                        </Grid>
                                    </Grid>
                                </Border>
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter TargetName="Border" Property="BorderBrush">
                                        <Setter.Value>
                                            <SolidColorBrush Color="#B388FF" Opacity=".37" />
                                        </Setter.Value>
                                    </Setter>
                                </Trigger>
                                <Trigger Property="IsFocused" Value="True">
                                </Trigger>
                                <Trigger Property="IsPressed" Value="True">
                                    <Setter TargetName="Border" Property="BorderBrush">
                                        <Setter.Value>
                                            <SolidColorBrush Color="#B388FF" Opacity=".87" />
                                        </Setter.Value>
                                    </Setter>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Button.Style>
    </Button>
</UserControl>