<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-->
    <Border Background="{StaticResource BackgroundSurface_02dp}" MinHeight="100" MinWidth="300" Width="Auto" Height="Auto" Margin="10" CornerRadius="5">
        <Border.Effect>
            <DropShadowEffect BlurRadius="5" ShadowDepth="0"/>
        </Border.Effect>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="40"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <!--Top Bar-->
            <Border CornerRadius="5 5 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 ModulName}"/>
                    <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 5 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>
            <!--Main Content-->
            <Grid Grid.Row="2" Margin="20" Width="Auto">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="1.5*"/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <!--Information pannel, left-->
                <Grid Grid.Row="1" Margin="0 0 25 0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <StackPanel Grid.Column="0">
                        <TextBlock Text="Servername" FontSize="16" Margin="2 2 5 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <TextBlock Text="User" FontSize="16" Margin="2 2 5 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <TextBlock Text="Public IP" FontSize="16" Margin="2 2 5 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <TextBlock Text="Private IP" FontSize="16" Margin="2 2 5 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <TextBlock Text="Uptime" FontSize="16" Margin="2 2 5 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <TextBlock Text="Creation Date" FontSize="16" Margin="2 2 5 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <TextBlock Text="Creator" FontSize="16" Margin="2 2 5 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                    </StackPanel>
                    <StackPanel Grid.Column="1">
                        <TextBlock Text="{Binding ServerInfo.ServerName}" FontSize="16" Margin="5 2 2 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <TextBlock Text="{Binding ServerInfo.OSUserName}" FontSize="16" Margin="5 2 2 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <TextBlock Text="{Binding ServerInfo.PublicIpAdress}" FontSize="16" Margin="5 2 2 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <TextBlock Text="{Binding ServerInfo.PrivateIpAdress}" FontSize="16" Margin="5 2 2 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <TextBlock Text="{Binding ServerInfo.Uptime}" FontSize="16" Margin="5 2 2 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <TextBlock Text="{Binding CreationDate}" FontSize="16" Margin="5 2 2 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <TextBlock Text="{Binding Creator}" FontSize="16" Margin="5 2 2 10">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="White" Opacity="0.60"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                    </StackPanel>
                </Grid>
                <!--Graphical Indicators Right-->
                <Grid Grid.Row="1" 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>
</UserControl>
