source: trunk/CrypPlugins/KeySearcher/Presentation/Controls/StatisticsPresentation.xaml @ 2720

Last change on this file since 2720 was 2720, checked in by nolte, 11 years ago

Statistic Update

  • Progress Bars using full length of Screen
  • Last Working Time Bubble/Skull
  • Culture Related Time Formation
  • Some DE-ENG Workings (further changes following soon)
File size: 24.5 KB
Line 
1<UserControl x:Class="KeySearcherPresentation.Controls.StatisticsPresentation"
2             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6             xmlns:g="clr-namespace:KeySearcher.P2P.Helper"
7             xmlns:Controls="clr-namespace:KeySearcherPresentation.Controls" xmlns:System="clr-namespace:System;assembly=mscorlib" xmlns:Converter="clr-namespace:KeySearcherConverter" mc:Ignorable="d"
8             d:DesignHeight="300" d:DesignWidth="300">
9    <UserControl.Resources>
10        <Controls:InformationToProgressConverter x:Key="InformationToProgressConverter"/>
11        <Controls:InformationToProgressConverter2 x:Key="InformationToProgressConverter2"/>
12        <Controls:DateFalseVisibleConverter1 x:Key="DateFalseVisibleConverter1"/>
13        <Controls:DateTrueVisibleConverter1 x:Key="DateTrueVisibleConverter1"/>
14        <Controls:DateFalseVisibleConverter2 x:Key="DateFalseVisibleConverter2"/>
15        <Controls:DateTrueVisibleConverter2 x:Key="DateTrueVisibleConverter2"/>
16        <Controls:DateToColorConverter1 x:Key="DateToColorConverter1"/>
17        <Controls:DateToColorConverter2 x:Key="DateToColorConverter2"/>
18        <Controls:MaxDateConverter x:Key="MaxDateConverter"/>
19        <Controls:TimeConverter x:Key="TimeConverter"/>
20        <Controls:MachineSumToProgressConverter x:Key="MachineSumToProgressConverter"/>
21        <Controls:ChunkSumConverter x:Key="ChunkSumConverter"/>
22        <Controls:StringLengthConverter x:Key="StringLengthConverter"/>
23        <Controls:ColorToDateConverter x:Key="ColorToDateConverter"></Controls:ColorToDateConverter>
24        <RotateTransform x:Key="HeaderRotate" Angle="270" />
25        <g:WidthConverter x:Key="WidthConverter"></g:WidthConverter>
26        <g:WidthConverter2 x:Key="WidthConverter2"></g:WidthConverter2>
27        <g:WidthConverter3 x:Key="WidthConverter3"></g:WidthConverter3>
28        <AlternationConverter x:Key="TeamsBackgroundConverter">
29            <SolidColorBrush>LimeGreen</SolidColorBrush>
30            <SolidColorBrush>Red</SolidColorBrush>
31            <SolidColorBrush>Blue</SolidColorBrush>
32        </AlternationConverter>
33
34        <Style x:Key="ItemStyle" TargetType="TreeViewItem">
35            <Setter x:Name="P" Property="IsExpanded" Value="True" />
36        </Style>
37
38        <Style x:Key="ItemStyle2" TargetType="TreeViewItem">
39            <Setter x:Name="P" Property="IsExpanded" Value="False" />
40        </Style>
41
42        <Storyboard x:Key="BestGlow" RepeatBehavior="Forever">
43            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="BestUser">
44                <EasingColorKeyFrame KeyTime="0:0:1" Value="DarkGoldenrod"/>
45                <EasingColorKeyFrame KeyTime="0:0:2" Value="Black"/>
46            </ColorAnimationUsingKeyFrames>
47            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="BestMachine">
48                <EasingColorKeyFrame KeyTime="0:0:1" Value="DarkGoldenrod"/>
49                <EasingColorKeyFrame KeyTime="0:0:2" Value="Black"/>
50            </ColorAnimationUsingKeyFrames>
51        </Storyboard>
52
53    </UserControl.Resources>
54    <UserControl.Triggers>
55        <EventTrigger RoutedEvent="Loaded">
56            <BeginStoryboard Storyboard="{StaticResource BestGlow}" />
57        </EventTrigger>
58    </UserControl.Triggers>
59    <Grid>
60        <Grid.RowDefinitions>
61            <RowDefinition Height="Auto"/>
62            <RowDefinition Height="*" />
63        </Grid.RowDefinitions>
64        <Label Content="K e y S e a r c h e r   S t a t i s t i c" Background="Beige" BorderBrush="Black" BorderThickness="0,0,0,2" FontWeight="bold" FontSize="13" Grid.Row="0"  HorizontalAlignment="Stretch" VerticalAlignment="Top" HorizontalContentAlignment="Center" />
65        <Button Name="myProgButton" Content="X" Click="SwitchView" Width="25" Height="17" VerticalAlignment="Top" HorizontalAlignment="Right" FontWeight="bold" FontSize="9" Foreground="White" Background="Crimson" BorderBrush="DarkBlue" />
66
67        <TabControl Grid.Row="2" >
68            <TabControl.Resources>
69                <Style TargetType="{x:Type TabItem}">
70                    <Style.Triggers>
71                        <Trigger Property="IsSelected" Value="True">
72                            <Setter Property="Background">
73                                <Setter.Value>
74                                    <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
75                                        <GradientStop Color="#FFF3F3F3" Offset="0"/>
76                                        <GradientStop Color="#FF00BDFF" Offset="1"/>
77                                    </LinearGradientBrush>
78                                </Setter.Value>
79                            </Setter>
80                        </Trigger>
81                    </Style.Triggers>
82                </Style>
83            </TabControl.Resources>
84           
85            <TabItem Header="{Loc _Information_}">
86                <Viewbox>
87                <Grid Width="407">
88                        <StackPanel>
89                            <Border BorderBrush="Silver" BorderThickness="2,2,2,2">
90                                <Grid Height="225" Background="#AFE2E2FF">
91                                    <Grid.RowDefinitions>
92                                        <RowDefinition Height="25" />
93                                        <RowDefinition Height="25" />
94                                        <RowDefinition Height="25" />
95                                        <RowDefinition Height="25" />
96                                        <RowDefinition Height="25" />
97                                        <RowDefinition Height="25" />
98                                        <RowDefinition Height="25" />
99                                        <RowDefinition Height="25" />
100                                        <RowDefinition Height="25" />
101                                    </Grid.RowDefinitions>
102                                    <Grid.ColumnDefinitions>
103                                        <ColumnDefinition Width="26" />
104                                        <ColumnDefinition Width="*" />
105                                    </Grid.ColumnDefinitions>
106                                    <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Grid.Column="0" Grid.RowSpan="9" Background="#FF5C5CFF">
107                                        <Label Content="{Loc Aggregate_Statistics_}" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
108                                    </Border>
109                                    <Label Content="{Loc Total__Blocks__to__Search_}" VerticalAlignment="Center" Grid.Row="0" Grid.Column="1" />
110                                    <Label Content="-" Name="TotalAmountOfBlocks" VerticalAlignment="Center" Grid.Row="0" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5" />
111                                    <Label Content="{Loc Total__Blocks__Tested_}" VerticalAlignment="Center" Grid.Row="1" Grid.Column="1" />
112                                    <Label Content="-" Name="TotalBlocksTested" VerticalAlignment="Center" Grid.Row="1" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5" />
113                                    <Label Content="{Loc Total__Keys__to_Search_}" VerticalAlignment="Center" Grid.Row="2" Grid.Column="1" />
114                                    <Label Content="-" Name="TotalAmountOfKeys" VerticalAlignment="Center" Grid.Row="2" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5" />
115                                    <Label Content="{Loc Total__Keys__Tested_}" VerticalAlignment="Center" Grid.Row="3" Grid.Column="1" />
116                                    <Label Content="-" Name="TotalKeysTested" VerticalAlignment="Center" Grid.Row="3" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5" />
117                                    <Label Content="{Loc Total__Users_}" VerticalAlignment="Center" Grid.Row="4" Grid.Column="1" />
118                                    <Label Content="-" Name="UserCount" VerticalAlignment="Center"  Grid.Row="4" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5"/>
119                                    <Label Content="{Loc Total__Machines_}" VerticalAlignment="Center" Grid.Row="5" Grid.Column="1" />
120                                    <Label Content="-" Name="MachineCount" VerticalAlignment="Center"  Grid.Row="5" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5"/>
121                                    <Label Content="{Loc Working__Days_}" VerticalAlignment="Center" Grid.Row="6" Grid.Column="1" />
122                                    <Label Content="- Days" Name="WorkingDays" VerticalAlignment="Center" Grid.Row="6" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5" />
123                                    <Label Content="{Loc Percent__Complete_}" VerticalAlignment="Center" Grid.Row="7" Grid.Column="1" />
124                                    <Label Content="- %" Name="PercentsComplete" VerticalAlignment="Center" Grid.Row="7" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5" />
125                                    <Label Content="{Loc Average__rate_}" VerticalAlignment="Center" Grid.Row="8" Grid.Column="1" />
126                                    <Label Content="- keys/sec" Name="Rate" VerticalAlignment="Center"  Grid.Row="8" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5"/>
127
128                                </Grid>
129                            </Border>
130
131                            <Border BorderBrush="Silver" BorderThickness="2,0,2,2">
132                                <Grid Height="100" Background="#AFAAE1E8">
133                                    <Grid.RowDefinitions>
134                                        <RowDefinition Height="25" />
135                                        <RowDefinition Height="25" />
136                                        <RowDefinition Height="25" />
137                                        <RowDefinition Height="25" />
138                                    </Grid.RowDefinitions>
139                                    <Grid.ColumnDefinitions>
140                                        <ColumnDefinition Width="26" />
141                                        <ColumnDefinition Width="*" />
142                                    </Grid.ColumnDefinitions>
143                                    <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Grid.Column="0" Grid.RowSpan="6" Background="#FF099BA7">
144                                        <Label Content="{Loc CurrentStats}" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
145                                    </Border>
146                                    <Label Content="{Loc Last__Update__Time: -}" Name="LastUpdateTime"  VerticalAlignment="Center" HorizontalContentAlignment="Center"  Grid.Row="0" Grid.Column="1" ToolTip="{Loc Next__Update__Time: -}" />
147                                    <Label Content="{Loc Current__Users_}" VerticalAlignment="Center" Grid.Row="1" Grid.Column="1" />
148                                    <Label Content="-" Name="CurrentUserCount" VerticalAlignment="Center"  Grid.Row="1" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5"/>
149                                    <Label Content="{Loc Current__Machines_}" VerticalAlignment="Center" Grid.Row="2" Grid.Column="1" />
150                                    <Label Content="-" Name="CurrentMachineCount" VerticalAlignment="Center"  Grid.Row="2" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5"/>
151                                    <Label Content="{Loc Current__rate_}"  VerticalAlignment="Center" HorizontalContentAlignment="Left"  Grid.Row="3" Grid.Column="1" />
152                                    <Label Content="- keys/sec" Name="CurrentRate" VerticalAlignment="Center" Grid.Row="3" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5" />
153                                </Grid>
154                            </Border>
155                            <Border BorderBrush="Silver" BorderThickness="2,0,2,2">
156                                <Grid Height="50" Background="#FFE8DAAA">
157                                    <Grid.RowDefinitions>
158                                        <RowDefinition Height="25" />
159                                        <RowDefinition Height="25" />     
160                                    </Grid.RowDefinitions>
161                                    <Grid.ColumnDefinitions>
162                                        <ColumnDefinition Width="26" />
163                                        <ColumnDefinition Width="*" />
164                                    </Grid.ColumnDefinitions>
165                                    <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Grid.Column="0" Grid.RowSpan="6" Background="Red">
166                                        <Label Content="Top" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
167                                    </Border>
168                                    <Label Content="{Loc Top__user_}"  VerticalAlignment="Center" HorizontalContentAlignment="Left"  Grid.Row="0" Grid.Column="1" />
169                                    <Label Content="" Name="BestUser" VerticalAlignment="Center" Grid.Row="0" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5" />
170                                    <Label Content="{Loc Top__machine_}"  VerticalAlignment="Center" HorizontalContentAlignment="Left"  Grid.Row="1" Grid.Column="1" />
171                                    <Label Content="" Name="BestMachine" VerticalAlignment="Center" Grid.Row="1" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5" />
172                                </Grid>
173                            </Border>
174                       </StackPanel>
175                     </Grid>
176                </Viewbox>
177               
178            </TabItem>
179            <TabItem Header="{Loc _Users_}">
180                <Grid>
181                    <Grid.ColumnDefinitions>
182                        <ColumnDefinition Width="120"/>
183                        <ColumnDefinition/>
184                    </Grid.ColumnDefinitions>
185                    <Grid.RowDefinitions>
186                        <RowDefinition Height="Auto"/>
187                        <RowDefinition ScrollViewer.VerticalScrollBarVisibility="Auto"/>
188                    </Grid.RowDefinitions>
189                    <StackPanel Orientation="Horizontal">
190                        <TextBlock Text="User/Host " Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
191                    </StackPanel>
192                    <TextBlock Text="Calculated Chunks" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Center"/>
193                    <Button Content="Expand" Grid.Column="1" Grid.Row="0" Click="Button_Click" Width="50" HorizontalAlignment="Right"></Button>
194                    <TreeView HorizontalAlignment="Stretch" Name="statisticsTree" VerticalAlignment="Stretch" ItemsSource="{Binding}" AlternationCount="3" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" >
195                        <TreeView.ItemTemplate>
196                            <HierarchicalDataTemplate ItemsSource="{Binding Path=Value}">
197                                <HierarchicalDataTemplate.ItemTemplate>
198                                    <DataTemplate>
199                                        <StackPanel Orientation="Horizontal" Margin="1" ToolTip="{Binding Path=Value.Date, Converter={StaticResource ResourceKey=TimeConverter}}">
200                                            <Grid Width="70">
201                                                <TextBlock Text="{Binding Path=Value.Hostname, Converter={StaticResource ResourceKey=StringLengthConverter}}" HorizontalAlignment="Center" ToolTip="{Binding Path=Value.Hostname}"/>
202                                            </Grid>
203                                            <Grid>
204                                                <ProgressBar Width="{Binding ElementName=statisticsTree, Path=ActualWidth, Converter={StaticResource ResourceKey=WidthConverter}}" Value="{Binding Path=Value.Count, Mode=OneTime, Converter={StaticResource ResourceKey=InformationToProgressConverter2}}" Maximum="1">
205                                                    <ProgressBar.Foreground>
206                                                        <MultiBinding Converter="{StaticResource ResourceKey=ColorToDateConverter}">
207                                                            <Binding Path="Value.Date" Mode="OneTime"></Binding>
208                                                            <Binding RelativeSource="{RelativeSource FindAncestor, AncestorLevel=2, AncestorType={x:Type TreeViewItem}}" Path="(ItemsControl.AlternationIndex)"></Binding>
209                                                        </MultiBinding> 
210                                                    </ProgressBar.Foreground>
211                                                </ProgressBar>
212                                                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
213                                                    <TextBlock Text="{Binding Path=Value.Count, StringFormat=\{0\,-5\}}"/>
214                                                </StackPanel>
215                                            </Grid>
216                                            <Grid>
217                                                <Ellipse Name="MyEllipse2" Height="13" Width="13" HorizontalAlignment="Right" StrokeThickness="1" Stroke="Black" Fill="{Binding Path=Value.Date, Mode=OneTime, Converter={StaticResource ResourceKey=DateToColorConverter2}}" Visibility="{Binding Path=Value.Date, Converter={StaticResource ResourceKey=DateFalseVisibleConverter2}}" ToolTip="{Binding Path=Value.Date, Converter={StaticResource ResourceKey=TimeConverter}}" />
218                                                <Image Name="Skull2" Height="13" Width="13" HorizontalAlignment="Right" Source="/KeySearcher;component/Images/dead.png" Stretch="Fill" Visibility="{Binding Path=Value.Date, Converter={StaticResource ResourceKey=DateTrueVisibleConverter2}}" >
219                                                    <Image.ToolTip>
220                                                        <Image Width="22" Height="32" Source="/KeySearcher;component/Images/dead.png" Stretch="Fill"/>
221                                                    </Image.ToolTip>
222                                                </Image>
223                                            </Grid>
224                                        </StackPanel>
225                                    </DataTemplate>
226                                </HierarchicalDataTemplate.ItemTemplate>
227
228
229                                <StackPanel Orientation="Horizontal" Margin="1">
230                                    <Grid Width="70">
231                                        <TextBlock Text="{Binding Path=Key, Converter={StaticResource ResourceKey=StringLengthConverter}}" HorizontalAlignment="Center" ToolTip="{Binding Path=Key}"/>
232                                    </Grid>
233                                    <Grid>
234                                    <ProgressBar x:Name="Bar" Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeViewItem}},Path=(ItemsControl.AlternationIndex),Converter={StaticResource ResourceKey=TeamsBackgroundConverter}}" Value="{Binding Path=Value, Mode=OneTime, Converter={StaticResource ResourceKey=InformationToProgressConverter}}" Width="{Binding ElementName=statisticsTree, Path=ActualWidth, Converter={StaticResource ResourceKey=WidthConverter2}}" Maximum="1" ToolTip="{Binding Path=Key, Converter={StaticResource ResourceKey=MaxDateConverter}}" />
235                                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
236                                            <TextBlock Text="{Binding Path=Key, Converter={StaticResource ResourceKey=ChunkSumConverter}, StringFormat=\{0\,-5\}}"/>
237                                        </StackPanel>
238                                    </Grid>
239                                    <Grid>
240                                        <Ellipse Name="MyEllipse1" Height="13" Width="13" HorizontalAlignment="Right" StrokeThickness="1" Stroke="Black" Fill="{Binding Path=Key, Mode=OneTime, Converter={StaticResource ResourceKey=DateToColorConverter1}}" Visibility="{Binding Path=Key, Converter={StaticResource ResourceKey=DateFalseVisibleConverter1}}" ToolTip="{Binding Path=Key, Converter={StaticResource ResourceKey=MaxDateConverter}}" />
241                                        <Image Name="Skull1" Height="13" Width="13" HorizontalAlignment="Right" Source="/KeySearcher;component/Images/dead.png" Stretch="Fill" Visibility="{Binding Path=Key, Converter={StaticResource ResourceKey=DateTrueVisibleConverter1}}">
242                                            <Image.ToolTip>
243                                                <Image Width="22" Height="32" Source="/KeySearcher;component/Images/dead.png" Stretch="Fill"/>
244                                            </Image.ToolTip>
245                                        </Image>
246                                    </Grid>
247                                </StackPanel>
248                            </HierarchicalDataTemplate>
249                        </TreeView.ItemTemplate>
250                    </TreeView>
251                </Grid>
252                </TabItem>
253       
254            <TabItem Header="{Loc _Machines_}">
255                        <Grid>
256                    <Grid.ColumnDefinitions>
257                        <ColumnDefinition Width="120"/>
258                        <ColumnDefinition/>
259                    </Grid.ColumnDefinitions>
260                    <Grid.RowDefinitions>
261                        <RowDefinition Height="Auto"/>
262                        <RowDefinition ScrollViewer.VerticalScrollBarVisibility="Auto"/>
263                    </Grid.RowDefinitions>
264                    <TextBlock Text="Hostname " Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center"/>
265                    <TextBlock Text="Calculated Chunks" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left"/>
266                    <TreeView HorizontalAlignment="Stretch" Name="machineTree" VerticalAlignment="Stretch" ItemsSource="{Binding}" AlternationCount="3" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
267                        <TreeView.ItemTemplate>
268                            <HierarchicalDataTemplate ItemsSource="{Binding Path=Value}">
269                                <!--<HierarchicalDataTemplate.ItemTemplate>
270                                <DataTemplate>
271                                    <TextBlock Text="{Binding Path=Users}"/>
272                                </DataTemplate>
273                            </HierarchicalDataTemplate.ItemTemplate>-->
274
275                                <StackPanel Orientation="Horizontal" Margin="1" ToolTip="{Binding Path=Value.Users}">
276                                    <Grid Width="70">
277                                        <TextBlock Text="{Binding Path=Value.Hostname, Converter={StaticResource ResourceKey=StringLengthConverter}}" HorizontalAlignment="Center" ToolTip="{Binding Path=Value.Hostname}"/>
278                                    </Grid>
279                                    <Grid>
280                                        <ProgressBar Value="{Binding Path=Value.Sum, Mode=OneTime, Converter={StaticResource ResourceKey=MachineSumToProgressConverter}}" Width="{Binding ElementName=machineTree, Path=ActualWidth, Converter={StaticResource ResourceKey=WidthConverter3}}" Maximum="1" />
281                                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
282                                            <TextBlock Text="{Binding Path=Value.Sum,StringFormat=\{0\,-5\}}"/>
283                                        </StackPanel>
284                                    </Grid>
285                                </StackPanel>
286                            </HierarchicalDataTemplate>
287                        </TreeView.ItemTemplate>
288                    </TreeView>
289                </Grid>
290                </TabItem>       
291        </TabControl>
292    </Grid>
293</UserControl>
Note: See TracBrowser for help on using the repository browser.