diff --git a/10.0/Apps/DeveloperBalance/Pages/Controls/CategoryChart.xaml b/10.0/Apps/DeveloperBalance/Pages/Controls/CategoryChart.xaml index d6ac1fb5a..89a70f068 100644 --- a/10.0/Apps/DeveloperBalance/Pages/Controls/CategoryChart.xaml +++ b/10.0/Apps/DeveloperBalance/Pages/Controls/CategoryChart.xaml @@ -6,6 +6,7 @@ xmlns:shimmer="clr-namespace:Syncfusion.Maui.Toolkit.Shimmer;assembly=Syncfusion.Maui.Toolkit" xmlns:pageModels="clr-namespace:DeveloperBalance.PageModels" x:Class="DeveloperBalance.Pages.Controls.CategoryChart" + SemanticProperties.Description="{Binding TodoCategoryData, Converter={controls:ChartDataSemanticConverter}}" HeightRequest="{OnIdiom 300, Phone=200}" x:DataType="pageModels:MainPageModel" Style="{StaticResource CardStyle}"> diff --git a/10.0/Apps/DeveloperBalance/Pages/Controls/ChartDataSemanticConverter.cs b/10.0/Apps/DeveloperBalance/Pages/Controls/ChartDataSemanticConverter.cs new file mode 100644 index 000000000..894e1ca95 --- /dev/null +++ b/10.0/Apps/DeveloperBalance/Pages/Controls/ChartDataSemanticConverter.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using DeveloperBalance.Models; + +namespace DeveloperBalance.Pages.Controls; + +public class ChartDataSemanticConverter : IValueConverter +{ + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) + { + if (value is IEnumerable categoryDataList) + { + var items = categoryDataList.ToList(); + if (items.Count == 0) + return "No task categories"; + + var sb = new StringBuilder("Task Categories Chart: "); + var descriptions = items.Select(c => $"{c.Title} {c.Count}"); + sb.Append(string.Join(", ", descriptions)); + + return sb.ToString(); + } + + return "Task Categories Chart"; + } + + public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +}