Changeset 2293


Ignore:
Timestamp:
Jan 6, 2011, 9:38:29 PM (10 years ago)
Author:
Sven Rech
Message:

machine statistics

Location:
trunk/CrypPlugins/KeySearcher
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/KeySearcher/KeySearcher.cs

    r2292 r2293  
    12921292            WriteStatistics(dataIdentifier);
    12931293
    1294             ((QuickWatch) QuickWatchPresentation).StatisticsPresentation.Statistics = statistic;
     1294            ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Statistics = statistic;
     1295            ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.MachineHierarchy = maschinehierarchie;
    12951296//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    12961297//TODO "maschinehierarchie" in Quickwatch einfügen. Bereits sortiert ;-) Sum = Anzahl Chunks total ; Hostname = Computername ; Users = String mit Avatarnamen der User dieses Rechners
     1298//Anmerkung: Dictionaries lassen sich nicht sortieren.
    12971299//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    12981300
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/StatisticsPresentation.xaml

    r2285 r2293  
    1010        <Controls:InformationToProgressConverter x:Key="InformationToProgressConverter"/>
    1111        <Controls:InformationToProgressConverter2 x:Key="InformationToProgressConverter2"/>
     12        <Controls:MachineSumToProgressConverter x:Key="MachineSumToProgressConverter"/>
    1213        <Controls:ChunkSumConverter x:Key="ChunkSumConverter"></Controls:ChunkSumConverter>
    1314        <g:WidthConverter x:Key="WidthConverter"></g:WidthConverter>
     
    1920    </UserControl.Resources>
    2021   
    21     <Grid>
    22         <TreeView HorizontalAlignment="Stretch" Name="statisticsTree" VerticalAlignment="Stretch" ItemsSource="{Binding}" AlternationCount="3">
    23             <TreeView.ItemTemplate>
    24                 <HierarchicalDataTemplate ItemsSource="{Binding Path=Value}">
    25                     <HierarchicalDataTemplate.ItemTemplate>
    26                         <HierarchicalDataTemplate ItemsSource="{Binding}">
    27                             <StackPanel Orientation="Horizontal" Margin="1">
    28                                 <!--<Grid.ColumnDefinitions>
    29                                     <ColumnDefinition Width="200" />
    30                                     <ColumnDefinition Width="5" />
    31                                     <ColumnDefinition/>                                   
    32                                 </Grid.ColumnDefinitions>-->
    33                                 <Grid>
    34                                     <ProgressBar Foreground="{Binding RelativeSource={RelativeSource FindAncestor,  AncestorLevel=2, AncestorType={x:Type TreeViewItem}},Path=(ItemsControl.AlternationIndex),Converter={StaticResource ResourceKey=TeamsBackgroundConverter}}" Value="{Binding Path=Value.Count, Mode=OneTime, Converter={StaticResource ResourceKey=InformationToProgressConverter2}}" Width="{Binding ElementName=statisticsTree, Path=ActualWidth, Converter={StaticResource ResourceKey=WidthConverter}}" Maximum="1" />
    35                                     <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
    36                                         <TextBlock Text="Chunks: "/>
    37                                         <TextBlock Text="{Binding Path=Value.Count, StringFormat=\{0\,-5\}}"/>
    38                                     </StackPanel>
    39                                 </Grid>
    40                                 <TextBlock Text="{Binding Path=Value.Hostname}" Grid.Column="3"/>
    41                             </StackPanel>
    42                         </HierarchicalDataTemplate>
    43                     </HierarchicalDataTemplate.ItemTemplate>
     22    <TabControl>
     23        <TabItem Header="Users">
     24            <TreeView HorizontalAlignment="Stretch" Name="statisticsTree" VerticalAlignment="Stretch" ItemsSource="{Binding}" AlternationCount="3">
     25                <TreeView.ItemTemplate>
     26                    <HierarchicalDataTemplate ItemsSource="{Binding Path=Value}">
     27                        <HierarchicalDataTemplate.ItemTemplate>
     28                            <DataTemplate>
     29                                <StackPanel Orientation="Horizontal" Margin="1">
     30                                    <Grid>
     31                                        <ProgressBar Foreground="{Binding RelativeSource={RelativeSource FindAncestor,  AncestorLevel=2, AncestorType={x:Type TreeViewItem}},Path=(ItemsControl.AlternationIndex),Converter={StaticResource ResourceKey=TeamsBackgroundConverter}}" Value="{Binding Path=Value.Count, Mode=OneTime, Converter={StaticResource ResourceKey=InformationToProgressConverter2}}" Width="{Binding ElementName=statisticsTree, Path=ActualWidth, Converter={StaticResource ResourceKey=WidthConverter}}" Maximum="1" />
     32                                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
     33                                            <TextBlock Text="Chunks: "/>
     34                                            <TextBlock Text="{Binding Path=Value.Count, StringFormat=\{0\,-5\}}"/>
     35                                        </StackPanel>
     36                                    </Grid>
     37                                    <TextBlock Text="{Binding Path=Value.Hostname}" Grid.Column="3"/>
     38                                </StackPanel>
     39                            </DataTemplate>
     40                        </HierarchicalDataTemplate.ItemTemplate>
    4441
    4542
    46                     <StackPanel Orientation="Horizontal" Margin="1">
    47                         <!--<Grid.ColumnDefinitions>
    48                                     <ColumnDefinition Width="200" />
    49                                     <ColumnDefinition Width="5" />
    50                                     <ColumnDefinition/>                                   
    51                                 </Grid.ColumnDefinitions>-->
    52                         <Grid>
    53                             <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=WidthConverter}}" Maximum="1" />
    54                             <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
    55                                 <TextBlock Text="Chunks: "/>
    56                                 <TextBlock Text="{Binding Path=Key, Converter={StaticResource ResourceKey=ChunkSumConverter}, StringFormat=\{0\,-5\}}"/>
    57                             </StackPanel>
    58                         </Grid>
    59                         <TextBlock Text="{Binding Path=Key}"/>
    60                     </StackPanel>
    61                 </HierarchicalDataTemplate>
    62             </TreeView.ItemTemplate>
    63         </TreeView>
    64     </Grid>
     43                        <StackPanel Orientation="Horizontal" Margin="1">
     44                            <Grid>
     45                                <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=WidthConverter}}" Maximum="1" />
     46                                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
     47                                    <TextBlock Text="Chunks: "/>
     48                                    <TextBlock Text="{Binding Path=Key, Converter={StaticResource ResourceKey=ChunkSumConverter}, StringFormat=\{0\,-5\}}"/>
     49                                </StackPanel>
     50                            </Grid>
     51                            <TextBlock Text="{Binding Path=Key}"/>
     52                        </StackPanel>
     53                    </HierarchicalDataTemplate>
     54                </TreeView.ItemTemplate>
     55            </TreeView>
     56        </TabItem>
     57       
     58        <TabItem Header="Machines">
     59            <TreeView HorizontalAlignment="Stretch" Name="machineTree" VerticalAlignment="Stretch" ItemsSource="{Binding}" AlternationCount="3">
     60                <TreeView.ItemTemplate>
     61                    <HierarchicalDataTemplate ItemsSource="{Binding Path=Value}">
     62                        <!--<HierarchicalDataTemplate.ItemTemplate>
     63                            <DataTemplate>
     64                                <TextBlock Text="{Binding Path=Users}"/>
     65                            </DataTemplate>
     66                        </HierarchicalDataTemplate.ItemTemplate>-->
     67                       
     68                        <StackPanel Orientation="Horizontal" Margin="1" ToolTip="{Binding Path=Key}">
     69                            <Grid>
     70                                <ProgressBar Value="{Binding Path=Value.Sum, Mode=OneTime, Converter={StaticResource ResourceKey=MachineSumToProgressConverter}}" Width="{Binding ElementName=machineTree, Path=ActualWidth, Converter={StaticResource ResourceKey=WidthConverter}}" Maximum="1" />
     71                                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
     72                                    <TextBlock Text="Chunks: "/>
     73                                    <TextBlock Text="{Binding Path=Value.Sum,StringFormat=\{0\,-5\}}"/>
     74                                </StackPanel>
     75                            </Grid>
     76                            <TextBlock Text="{Binding Path=Value.Hostname}"/>
     77                        </StackPanel>
     78                    </HierarchicalDataTemplate>
     79                </TreeView.ItemTemplate>
     80            </TreeView>
     81        </TabItem>
     82    </TabControl>
    6583</UserControl>
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/StatisticsPresentation.xaml.cs

    r2285 r2293  
    3232                double allCount = (StatisticsPresentation.Statistics).Sum(i => i.Value.Sum(j => j.Value.Count));
    3333                double vCount = ((Dictionary<long, Information>)value).Sum(i => i.Value.Count);
     34                return vCount / allCount;
     35            }
     36            else
     37            {
     38                return 0;
     39            }
     40        }
     41
     42        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
     43        {
     44            throw new NotImplementedException();
     45        }
     46    }
     47
     48    [ValueConversion(typeof(Dictionary<long, Information>), typeof(Double))]
     49    class MachineSumToProgressConverter : IValueConverter
     50    {
     51        public StatisticsPresentation StatisticsPresentation { get; set; }
     52
     53        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
     54        {
     55            if (StatisticsPresentation != null)
     56            {
     57                double allCount = (StatisticsPresentation.MachineHierarchy).Sum(i => i.Value.Sum);
     58                double vCount = (int)value;
    3459                return vCount / allCount;
    3560            }
     
    106131            ((InformationToProgressConverter2)Resources["InformationToProgressConverter2"]).StatisticsPresentation = this;
    107132            ((ChunkSumConverter)Resources["ChunkSumConverter"]).StatisticsPresentation = this;
    108 
    109 
    110 
    111 
    112             //statisticsTree.Items.SortDescriptions.Add(new SortDescription("ItemTemplate.VisualTree.Children[0].Value", ListSortDirection.Ascending));
     133            ((MachineSumToProgressConverter)Resources["MachineSumToProgressConverter"]).StatisticsPresentation = this;
    113134        }
    114135
     
    129150            }
    130151        }
     152
     153        private Dictionary<long, Maschinfo> machineHierarchy = null;
     154        public Dictionary<long, Maschinfo> MachineHierarchy
     155        {
     156            get { return machineHierarchy; }
     157            set
     158            {
     159                machineHierarchy = value;
     160                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     161                                                {
     162                                                    var orderedstats = machineHierarchy.OrderByDescending((x) => x.Value.Sum);
     163                                                    machineTree.DataContext = orderedstats;
     164                                                    machineTree.Items.Refresh();
     165                                                }, null);
     166            }
     167        }
    131168    }
    132169}
Note: See TracChangeset for help on using the changeset viewer.