This is a migrated thread and some comments may be shown as answers.

Issues with moving Footer

0 Answers 11 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Girish
Top achievements
Rank 1
Girish asked on 21 Dec 2011, 01:16 PM
Hi,

We are currently using this Style for the GridViewGroupRow:
---------------------------------------------
<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls" 
    xmlns:GridView="clr-namespace:Telerik.Windows.Controls.GridView;assembly=Telerik.Windows.Controls.GridView" 
    xmlns:ValueConverters="clr-namespace:Cobra2009.ValueConverters">
    <ValueConverters:AggregatesConverter x:Key="AggregatesConverter" />
    <telerik:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
    <telerik:Windows7Theme x:Key="BaseTheme"/>
    <SolidColorBrush x:Key="ControlOuterBorder" Color="#FF848484"/>
    <SolidColorBrush x:Key="ControlInnerBorder" Color="White"/>
    <SolidColorBrush x:Key="GridView_GroupRowIndicator" Color="Black"/>
    <SolidColorBrush x:Key="GridView_RowIndicatorCellBackground" Color="#FFE4E4E4"/>
    <SolidColorBrush x:Key="GridView_GroupRowBackground" Color="#FFE4E4E4"/>
    <SolidColorBrush x:Key="GridView_GridLinesItemBorder" Color="#FFCBCBCB"/>
    <ControlTemplate x:Key="GridViewGroupToggleButtonTemplate" TargetType="ToggleButton">
        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
            <ContentPresenter/>
        </Border>
    </ControlTemplate>
    <Style x:Key="GridViewGroupToggleButtonStyle" TargetType="ToggleButton">
        <Setter Property="Template" Value="{StaticResource GridViewGroupToggleButtonTemplate}"/>
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
        <Setter Property="Padding" Value="9,0,0,0"/>
    </Style>
    <LinearGradientBrush x:Key="HeaderColour" EndPoint="0.5,1" StartPoint="0.5,0">
        <GradientStop Color="#FFD3213B"/>
        <GradientStop Color="#FF706F70" Offset="1"/>
        <GradientStop Color="#FF040404" Offset="0.252"/>
    </LinearGradientBrush>
    <ControlTemplate x:Key="GridViewGroupRowTemplate" TargetType="GridView:GridViewGroupRow">
        <Grid x:Name="PART_GroupExpanderGrid">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition x:Name="PART_HeaderRow" MinHeight="{TemplateBinding MinHeight}"/>
                <RowDefinition x:Name="ContentRow" Height="Auto"/>
            </Grid.RowDefinitions>
            <VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="ExpandStateGroup">
                    <VisualState x:Name="Expanded">
                        <Storyboard>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="Content">
                                <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
                            </ObjectAnimationUsingKeyFrames>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="BottomBorder">
                                <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
                            </ObjectAnimationUsingKeyFrames>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderThickness" Storyboard.TargetName="IconOuterBorder">
                                <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="0,0,0,0"/>
                            </ObjectAnimationUsingKeyFrames>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderThickness" Storyboard.TargetName="IconInnerBorder">
                                <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="1,1,0,0"/>
                            </ObjectAnimationUsingKeyFrames>
                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" Storyboard.TargetName="ExpanderButton">
                                <EasingDoubleKeyFrame KeyTime="00:00:00.2" Value="180"/>
                            </DoubleAnimationUsingKeyFrames>
                        </Storyboard>
                    </VisualState>
                    <VisualState x:Name="Collapsed">
                        <Storyboard>
                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" Storyboard.TargetName="ExpanderButton">
                                <EasingDoubleKeyFrame KeyTime="00:00:00.2" Value="0"/>
                            </DoubleAnimationUsingKeyFrames>
                        </Storyboard>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Border x:Name="ToggleButtonBorder" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" Grid.Column="2" MinHeight="{TemplateBinding MinHeight}" GridView:SelectiveScrollingGrid.SelectiveScrollingClip="True">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="25"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Border  Grid.Column="2" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" GridView:SelectiveScrollingGrid.SelectiveScrollingClip="True" Visibility="{Binding ShowHeaderAggregates, Converter={StaticResource BooleanToVisibilityConverter}, RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                        <GridView:AggregateResultsList 
 HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
 ItemsSource="{Binding AggregateResults, Mode=TwoWay, Converter={StaticResource AggregatesConverter}}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                            <GridView:AggregateResultsList.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <StackPanel Orientation="Horizontal" Margin="10,0" />
                                </ItemsPanelTemplate>
                            </GridView:AggregateResultsList.ItemsPanel>
                            <GridView:AggregateResultsList.ItemTemplate>
                                <DataTemplate>
                                    <Grid VerticalAlignment="Center" Margin="0,0,5,0" DataContext="{Binding}" MinWidth="200" >
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="60" />
                                            <ColumnDefinition Width="*" MinWidth="100" />
                                        </Grid.ColumnDefinitions>
                                        <TextBlock Margin="2,0" TextAlignment="Left" VerticalAlignment="Center" Foreground="{TemplateBinding Foreground}" Text="{Binding Caption}"/>
                                        <TextBlock Grid.Column="1" Margin="2,0,40,0" TextAlignment="Right" VerticalAlignment="Center" Foreground="{TemplateBinding Foreground}" Text="{Binding FormattedValue}" />
                                    </Grid>
                                </DataTemplate>
                            </GridView:AggregateResultsList.ItemTemplate>
                        </GridView:AggregateResultsList>
                    </Border>
                    <Border x:Name="IconOuterBorder" BorderBrush="{StaticResource ControlOuterBorder}" BorderThickness="0,0,0,1" Background="Transparent" HorizontalAlignment="Stretch" GridView:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical">
                        <Border x:Name="IconInnerBorder" BorderBrush="{StaticResource ControlInnerBorder}" BorderThickness="1,1,0,1">
                            <Path x:Name="ExpanderButton" Grid.Column="0" Data="M0,0L1,0 2,0 2,0.99999991 3,0.99999991 3,2 4,2 4,0.99999991 5,0.99999991 5,0 5.9999999,0 7,0 7,0.99999991 5.9999999,0.99999991 5.9999999,2 5,2 5,3 4,3 4,4 3,4 3,3 2,3 2,2 1,2 1,0.99999991 0,0.99999991z" Fill="{StaticResource GridView_GroupRowIndicator}" HorizontalAlignment="Left" Height="5" Margin="{TemplateBinding Padding}" RenderTransformOrigin="0.5,0.5" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="7">
                                <Path.RenderTransform>
                                    <RotateTransform/>
                                </Path.RenderTransform>
                            </Path>
                        </Border>
                    </Border>
                    <ToggleButton x:Name="HeaderButton" Foreground="White" Background="{StaticResource HeaderColour}" Grid.ColumnSpan="3" Grid.Column="0" IsTabStop="{TemplateBinding IsTabStop}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Opacity="0" GridView:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical"/>
                    <ToggleButton MinWidth="100" Foreground="White" BorderBrush="{x:Null}" BorderThickness="0" Background="{StaticResource HeaderColour}" Grid.Column="1" IsTabStop="{TemplateBinding IsTabStop}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Padding="0,0,10,0" Style="{StaticResource GridViewGroupToggleButtonStyle}" GridView:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical">
                        <ContentPresenter ContentTemplate="{TemplateBinding GroupHeaderTemplate}" Content="{TemplateBinding GroupViewModel}" Grid.Column="1" Margin="0,0,10,0" VerticalAlignment="Center"/>
                    </ToggleButton>
                    <Border BorderBrush="{StaticResource ControlOuterBorder}" BorderThickness="0,0,0,1" Grid.ColumnSpan="2" Grid.Column="1" GridView:SelectiveScrollingGrid.SelectiveScrollingClip="True">
                        <Border BorderBrush="{StaticResource ControlInnerBorder}" BorderThickness="0,1,1,1"/>
                    </Border>
                </Grid>
            </Border>
            <Border x:Name="PART_IndicatorPresenter" BorderBrush="{StaticResource ControlOuterBorder}" BorderThickness="0,0,1,1" Grid.Column="0" GridView:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" Visibility="{TemplateBinding RowIndicatorVisibility}" VerticalAlignment="Stretch" Width="25">
                <Border BorderBrush="{StaticResource ControlInnerBorder}" BorderThickness="1" Background="{StaticResource GridView_RowIndicatorCellBackground}"/>
            </Border>
            <GridView:IndentPresenter Background="{TemplateBinding Background}" Grid.Column="1" IndentLevel="{TemplateBinding Level}" GridView:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" telerik:StyleManager.Theme="{StaticResource BaseTheme}"/>
            <Border x:Name="Content" Grid.ColumnSpan="5" Grid.Column="0" Grid.Row="1" Visibility="Collapsed">
                <StackPanel>
                    <GridView:GridViewGroupFooterRow x:Name="Footer" telerik:StyleManager.Theme="{StaticResource BaseTheme}" Background="LightGray"/>
                    <GridView:GridViewVirtualizingPanel x:Name="PART_GridViewVirtualizingPanel"/>
                </StackPanel>
            </Border>
            <Border x:Name="BottomBorder" BorderBrush="{StaticResource ControlOuterBorder}" BorderThickness="0,0,0,1" Grid.Column="2" Grid.Row="1" Visibility="Collapsed" VerticalAlignment="Bottom"/>
        </Grid>
    </ControlTemplate>
</ResourceDictionary>

-------------------------------------------------------------------------

When we try and display the footer column in the Header, this breaks the sum.  The GroupRow displays the wrong values for the rows:

This is what we are using as the style:
--------------------------------------------------------------------------

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls" 
    xmlns:GridView="clr-namespace:Telerik.Windows.Controls.GridView;assembly=Telerik.Windows.Controls.GridView" 
    xmlns:ValueConverters="clr-namespace:Cobra2009.ValueConverters">
    <ValueConverters:AggregatesConverter x:Key="AggregatesConverter" />
    <telerik:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
    <telerik:Windows7Theme x:Key="BaseTheme"/>
    <SolidColorBrush x:Key="ControlOuterBorder" Color="#FF848484"/>
    <SolidColorBrush x:Key="ControlInnerBorder" Color="White"/>
    <SolidColorBrush x:Key="GridView_GroupRowIndicator" Color="Black"/>
    <SolidColorBrush x:Key="GridView_RowIndicatorCellBackground" Color="#FFE4E4E4"/>
    <SolidColorBrush x:Key="GridView_GroupRowBackground" Color="#FFE4E4E4"/>
    <SolidColorBrush x:Key="GridView_GridLinesItemBorder" Color="#FFCBCBCB"/>
    <ControlTemplate x:Key="GridViewGroupToggleButtonTemplate" TargetType="ToggleButton">
        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
            <ContentPresenter/>
        </Border>
    </ControlTemplate>
    <Style x:Key="GridViewGroupToggleButtonStyle" TargetType="ToggleButton">
        <Setter Property="Template" Value="{StaticResource GridViewGroupToggleButtonTemplate}"/>
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
        <Setter Property="Padding" Value="9,0,0,0"/>
    </Style>
    <ControlTemplate x:Key="GridViewGroupRowTemplate" TargetType="GridView:GridViewGroupRow">
        <Grid x:Name="PART_GroupExpanderGrid">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition x:Name="PART_HeaderRow" MinHeight="{TemplateBinding MinHeight}"/>
                <RowDefinition x:Name="ContentRow" Height="Auto"/>
            </Grid.RowDefinitions>
            <VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="ExpandStateGroup">
                    <VisualState x:Name="Expanded">
                        <Storyboard>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="CollapseGrid">
                                <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
                            </ObjectAnimationUsingKeyFrames>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="BottomBorder">
                                <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
                            </ObjectAnimationUsingKeyFrames>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderThickness" Storyboard.TargetName="IconOuterBorder">
                                <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="0,0,0,0"/>
                            </ObjectAnimationUsingKeyFrames>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderThickness" Storyboard.TargetName="IconInnerBorder">
                                <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="1,1,0,0"/>
                            </ObjectAnimationUsingKeyFrames>
                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" Storyboard.TargetName="ExpanderButton">
                                <EasingDoubleKeyFrame KeyTime="00:00:00.2" Value="180"/>
                            </DoubleAnimationUsingKeyFrames>
                        </Storyboard>
                    </VisualState>
                    <VisualState x:Name="Collapsed">
                        <Storyboard>
                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" Storyboard.TargetName="ExpanderButton">
                                <EasingDoubleKeyFrame KeyTime="00:00:00.2" Value="0"/>
                            </DoubleAnimationUsingKeyFrames>
                        </Storyboard>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Border x:Name="Content" Grid.ColumnSpan="5" Grid.Column="2" Grid.Row="1">
                <StackPanel VirtualizingStackPanel.VirtualizationMode="Recycling">
                    <Border x:Name="ToggleButtonBorder" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" Grid.Column="2" MinHeight="{TemplateBinding MinHeight}" GridView:SelectiveScrollingGrid.SelectiveScrollingClip="True">
                        <Grid>
                            <GridView:GridViewGroupFooterRow x:Name="Footer" telerik:StyleManager.Theme="{StaticResource BaseTheme}" />
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="25"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <!--<Border Grid.Column="2" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" GridView:SelectiveScrollingGrid.SelectiveScrollingClip="True" Visibility="{Binding ShowHeaderAggregates, Converter={StaticResource BooleanToVisibilityConverter}, RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />-->
                                <Border x:Name="IconOuterBorder" BorderBrush="{StaticResource ControlOuterBorder}" BorderThickness="0,0,0,1" Background="Transparent" HorizontalAlignment="Stretch" GridView:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical">
                                    <Border x:Name="IconInnerBorder" BorderBrush="{StaticResource ControlInnerBorder}" BorderThickness="1,1,0,1">
                                        <Path x:Name="ExpanderButton" Grid.Column="0" Data="M0,0L1,0 2,0 2,0.99999991 3,0.99999991 3,2 4,2 4,0.99999991 5,0.99999991 5,0 5.9999999,0 7,0 7,0.99999991 5.9999999,0.99999991 5.9999999,2 5,2 5,3 4,3 4,4 3,4 3,3 2,3 2,2 1,2 1,0.99999991 0,0.99999991z" Fill="{StaticResource GridView_GroupRowIndicator}" HorizontalAlignment="Left" Height="5" Margin="{TemplateBinding Padding}" RenderTransformOrigin="0.5,0.5" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="7">
                                            <Path.RenderTransform>
                                                <RotateTransform/>
                                            </Path.RenderTransform>
                                        </Path>
                                    </Border>
                                </Border>
                                <ToggleButton x:Name="HeaderButton" Background="Transparent" Grid.ColumnSpan="3" Grid.Column="0" IsTabStop="{TemplateBinding IsTabStop}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Opacity="0" GridView:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical"/>
                                <ToggleButton MinWidth="75" BorderBrush="{x:Null}" BorderThickness="0" Foreground="White" Grid.Column="1" IsTabStop="{TemplateBinding IsTabStop}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Padding="0,0,10,0" Style="{StaticResource GridViewGroupToggleButtonStyle}" GridView:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical">
                                    <ToggleButton.Background>
                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                            <GradientStop Color="#FFD3213B"/>
                                            <GradientStop Color="#FF706F70" Offset="1"/>
                                            <GradientStop Color="#FF040404" Offset="0.252"/>
                                        </LinearGradientBrush>
                                    </ToggleButton.Background>
                                    <ContentPresenter ContentTemplate="{TemplateBinding GroupHeaderTemplate}" Content="{TemplateBinding GroupViewModel}" Grid.Column="1" Margin="0,0,10,0" VerticalAlignment="Center"/>
                                </ToggleButton>
                                <Border BorderBrush="{StaticResource ControlOuterBorder}" BorderThickness="0,0,0,1" Grid.ColumnSpan="2" Grid.Column="1" GridView:SelectiveScrollingGrid.SelectiveScrollingClip="True">
                                    <Border BorderBrush="{StaticResource ControlInnerBorder}" BorderThickness="0,1,1,1"/>
                                </Border>
                                <Border BorderBrush="{StaticResource ControlOuterBorder}" BorderThickness="0,0,0,1" Grid.ColumnSpan="3" Grid.Column="0" GridView:SelectiveScrollingGrid.SelectiveScrollingClip="True">
                                    <Border BorderBrush="{StaticResource ControlInnerBorder}" BorderThickness="0,1,1,1"/>
                                </Border>
                            </Grid>
                        </Grid>
                    </Border>
                    <Grid x:Name="CollapseGrid" Grid.ColumnSpan="5" Grid.Column="0" Grid.Row="1"  Visibility="Collapsed">
                        <GridView:GridViewVirtualizingPanel x:Name="PART_GridViewVirtualizingPanel"/>
                    </Grid>
                </StackPanel>
            </Border>
            <Border x:Name="PART_IndicatorPresenter" BorderBrush="{StaticResource ControlOuterBorder}" BorderThickness="0,0,1,1" Grid.Column="0" GridView:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" Visibility="{TemplateBinding RowIndicatorVisibility}" VerticalAlignment="Stretch" Width="25">
                <Border BorderBrush="{StaticResource ControlInnerBorder}" BorderThickness="1" Background="{StaticResource GridView_RowIndicatorCellBackground}"/>
            </Border>
            <GridView:IndentPresenter Background="{TemplateBinding Background}" Grid.Column="1" IndentLevel="{TemplateBinding Level}" GridView:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" telerik:StyleManager.Theme="{StaticResource BaseTheme}"/>
            <Border x:Name="BottomBorder" BorderBrush="{StaticResource ControlOuterBorder}" BorderThickness="0,0,0,1" Grid.Column="2" Grid.Row="1" Visibility="Collapsed" VerticalAlignment="Bottom"/>
        </Grid>
    </ControlTemplate>
</ResourceDictionary>

 -----------------------------------------------

Is there a bug with the GroupRowFooter that it displays the wrong value if displayed as the header?


No answers yet. Maybe you can help?

Tags
GridView
Asked by
Girish
Top achievements
Rank 1
Share this question
or