Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 28 additions & 15 deletions 10.0/Apps/DeveloperBalance/Pages/Controls/CategoryChart.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@
<Border xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:chart="clr-namespace:Syncfusion.Maui.Toolkit.Charts;assembly=Syncfusion.Maui.Toolkit"
xmlns:controls="clr-namespace:DeveloperBalance.Pages.Controls"
xmlns:controls="clr-namespace:DeveloperBalance.Pages.Controls"
xmlns:shimmer="clr-namespace:Syncfusion.Maui.Toolkit.Shimmer;assembly=Syncfusion.Maui.Toolkit"
xmlns:pageModels="clr-namespace:DeveloperBalance.PageModels"
x:Class="DeveloperBalance.Pages.Controls.CategoryChart"
HeightRequest="{OnIdiom 300, Phone=200}"
x:DataType="pageModels:MainPageModel"
Style="{StaticResource CardStyle}">
<shimmer:SfShimmer
AutomationProperties.IsInAccessibleTree="False"
BackgroundColor="Transparent"
VerticalOptions="Fill"
IsActive ="{Binding IsBusy}">
IsActive="{Binding IsBusy}">
<shimmer:SfShimmer.CustomView>
<Grid>
<BoxView
Expand All @@ -22,8 +23,12 @@
</Grid>
</shimmer:SfShimmer.CustomView>
<shimmer:SfShimmer.Content>
<chart:SfCircularChart x:Name="Chart" SemanticProperties.Description="Task Categories Chart">
<chart:DoughnutSeries
<chart:SfCircularChart x:Name="Chart"
SemanticProperties.Description="Task Categories Chart">
<chart:SfCircularChart.Resources>
<controls:ChartDataLabelConverter x:Key="ChartDataLabelConverter"/>
</chart:SfCircularChart.Resources>
<chart:DoughnutSeries
ItemsSource="{Binding TodoCategoryData}"
PaletteBrushes="{Binding TodoCategoryColors}"
XBindingPath="Title"
Expand All @@ -32,27 +37,35 @@
EnableTooltip="False"
x:Name="doughnutSeries"
Radius="{OnIdiom 0.6, Phone=0.5}"
InnerRadius="0.7" >
InnerRadius="0.7">
<chart:DoughnutSeries.LabelTemplate>
<DataTemplate >
<HorizontalStackLayout>
<Label Text="{Binding Item.Title}" TextColor="{AppThemeBinding
<DataTemplate>
<HorizontalStackLayout x:DataType="chart:ChartDataLabel">
<Label Text="{Binding Item, Converter={StaticResource ChartDataLabelConverter}, ConverterParameter='title'}"
TextColor="{AppThemeBinding
Light={StaticResource DarkOnLightBackground},
Dark={StaticResource LightOnDarkBackground}}" FontSize="{OnIdiom 18, Phone=14}"/>
<Label Text=": " TextColor="{AppThemeBinding
Dark={StaticResource LightOnDarkBackground}}"
FontSize="{OnIdiom 18, Phone=14}"/>
<Label Text=": "
TextColor="{AppThemeBinding
Light={StaticResource DarkOnLightBackground},
Dark={StaticResource LightOnDarkBackground}}" FontSize="{OnIdiom 18, Phone=14}"/>
<Label Text="{Binding Item.Count}" TextColor="{AppThemeBinding
Dark={StaticResource LightOnDarkBackground}}"
FontSize="{OnIdiom 18, Phone=14}"/>
<Label Text="{Binding Item, Converter={StaticResource ChartDataLabelConverter}, ConverterParameter='count'}"
TextColor="{AppThemeBinding
Light={StaticResource DarkOnLightBackground},
Dark={StaticResource LightOnDarkBackground}}" FontSize="{OnIdiom 18, Phone=14}"/>
Dark={StaticResource LightOnDarkBackground}}"
FontSize="{OnIdiom 18, Phone=14}"/>
</HorizontalStackLayout>
</DataTemplate>
</chart:DoughnutSeries.LabelTemplate>

<chart:DoughnutSeries.DataLabelSettings>
<chart:CircularDataLabelSettings LabelPosition="Outside" SmartLabelAlignment="Shift">
<chart:CircularDataLabelSettings LabelPosition="Outside"
SmartLabelAlignment="Shift">
<chart:CircularDataLabelSettings.ConnectorLineSettings>
<chart:ConnectorLineStyle ConnectorType="Line" StrokeWidth="3" ></chart:ConnectorLineStyle>
<chart:ConnectorLineStyle ConnectorType="Line"
StrokeWidth="3"></chart:ConnectorLineStyle>
</chart:CircularDataLabelSettings.ConnectorLineSettings>
</chart:CircularDataLabelSettings>
</chart:DoughnutSeries.DataLabelSettings>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using System;
using System.Globalization;
using DeveloperBalance.Models;

namespace DeveloperBalance.Pages.Controls;

public class ChartDataLabelConverter : IValueConverter
{
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
{
if (value is CategoryChartData categoryData && parameter is string parameterValue)
{
return parameterValue?.ToLower() switch
{
"title" => categoryData.Title,
"count" => categoryData.Count.ToString(),
_ => value?.ToString()
};
}

return value?.ToString();
}

public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Loading