feature<Statistics>: add simple statistic page

This commit is contained in:
leo 2022-01-11 20:18:35 +08:00
parent f04c01b878
commit c52ed4a711
10 changed files with 512 additions and 0 deletions

195
src/Views/Statistics.xaml Normal file
View file

@ -0,0 +1,195 @@
<controls:Window
x:Class="SourceGit.Views.Statistics"
x:Name="me"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="clr-namespace:SourceGit.Views.Controls"
mc:Ignorable="d"
Title="Statistics"
Height="450" Width="600"
WindowStartupLocation="CenterOwner" ResizeMode="NoResize">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="28"/>
<RowDefinition Height="1"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- Title Bar -->
<Grid Grid.Row="0" Background="{DynamicResource Brush.TitleBar}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!-- Icon -->
<Path Grid.Column="0" Margin="6,0" Width="16" Height="16" Data="{StaticResource Icon.Statistics}"/>
<!-- Title -->
<TextBlock Grid.Column="1" Text="{DynamicResource Text.Statistics}"/>
<!-- Window Commands -->
<StackPanel Grid.Column="3" Orientation="Horizontal" WindowChrome.IsHitTestVisibleInChrome="True">
<controls:IconButton Click="Quit" Width="28" Padding="9" Icon="{StaticResource Icon.Close}" HoverBackground="Red" Opacity="1"/>
</StackPanel>
</Grid>
<Rectangle
Grid.Row="1"
Height="1"
HorizontalAlignment="Stretch"
Fill="{DynamicResource Brush.Border0}"/>
<!-- Contents -->
<TabControl
Grid.Row="2"
Margin="8"
Style="{DynamicResource Style.TabControl.MiddleSwitch}">
<TabItem Header="{DynamicResource Text.Statistics.ThisWeek}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="32"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="8"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<DataGrid
x:Name="lstCommitterWeek"
Grid.Row="0" Grid.Column="0"
Margin="0,8,0,0"
Background="{DynamicResource Brush.Contents}"
GridLinesVisibility="All"
HorizontalGridLinesBrush="{DynamicResource Brush.Border0}"
VerticalGridLinesBrush="{DynamicResource Brush.Border0}"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
HeadersVisibility="Column"
RowHeight="24"
ColumnHeaderHeight="24"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserResizeColumns="False"
CanUserResizeRows="False"
CanUserReorderColumns="False"
BorderThickness="1"
BorderBrush="{DynamicResource Brush.Border0}">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
<Border BorderThickness="0,0,1,1" BorderBrush="{DynamicResource Brush.Border0}" Background="{DynamicResource Brush.Window}">
<TextBlock
Text="{TemplateBinding Content}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontWeight="DemiBold"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="{DynamicResource Text.Statistics.CommitterName}" IsReadOnly="True" Binding="{Binding .Name}" ElementStyle="{StaticResource Style.TextBlock.LineContent}"/>
<DataGridTextColumn Width="*" Header="{DynamicResource Text.Statistics.CommitAmount}" IsReadOnly="True" Binding="{Binding .Count}" ElementStyle="{StaticResource Style.TextBlock.LineContent}"/>
</DataGrid.Columns>
</DataGrid>
<TextBlock Grid.Row="1" Grid.Column="0" x:Name="txtMemberCountWeek" Text="Total Committers: -"/>
<controls:Chart
Grid.Row="0"
Grid.Column="2"
Margin="8,16,0,0"
x:Name="chartWeek"
LineBrush="{DynamicResource Brush.FG1}"
ChartBrush="{DynamicResource Brush.Accent1}"/>
<TextBlock Grid.Row="1" Grid.Column="2" x:Name="txtCommitCountWeek" HorizontalAlignment="Right" Text="Total Commits: -"/>
</Grid>
</TabItem>
<TabItem Header="{DynamicResource Text.Statistics.ThisMonth}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="32"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="8"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<DataGrid
x:Name="lstCommitterMonth"
Grid.Row="0" Grid.Column="0"
Margin="0,8,0,0"
Background="{DynamicResource Brush.Contents}"
GridLinesVisibility="All"
HorizontalGridLinesBrush="{DynamicResource Brush.Border0}"
VerticalGridLinesBrush="{DynamicResource Brush.Border0}"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
HeadersVisibility="Column"
RowHeight="24"
ColumnHeaderHeight="24"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserResizeColumns="False"
CanUserResizeRows="False"
CanUserReorderColumns="False"
BorderThickness="1"
BorderBrush="{DynamicResource Brush.Border0}">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
<Border BorderThickness="0,0,1,1" BorderBrush="{DynamicResource Brush.Border0}" Background="{DynamicResource Brush.Window}">
<TextBlock
Text="{TemplateBinding Content}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontWeight="DemiBold"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="{DynamicResource Text.Statistics.CommitterName}" IsReadOnly="True" Binding="{Binding .Name}" ElementStyle="{StaticResource Style.TextBlock.LineContent}"/>
<DataGridTextColumn Width="*" Header="{DynamicResource Text.Statistics.CommitAmount}" IsReadOnly="True" Binding="{Binding .Count}" ElementStyle="{StaticResource Style.TextBlock.LineContent}"/>
</DataGrid.Columns>
</DataGrid>
<TextBlock Grid.Row="1" Grid.Column="0" x:Name="txtMemberCountMonth" Text="Total Committers: -"/>
<controls:Chart
Grid.Row="0"
Grid.Column="2"
Margin="8,16,0,0"
x:Name="chartMonth"
LineBrush="{DynamicResource Brush.FG1}"
ChartBrush="{DynamicResource Brush.Accent1}"/>
<TextBlock Grid.Row="1" Grid.Column="2" x:Name="txtCommitCountMonth" HorizontalAlignment="Right" Text="Total Commits: -"/>
</Grid>
</TabItem>
</TabControl>
<!-- Loading -->
<controls:Loading Grid.Row="2" x:Name="loading" Width="48" Height="48" IsAnimating="True"/>
</Grid>
</controls:Window>