From 60cbb977bf08f7ac00106c97c06f479b147fefbf Mon Sep 17 00:00:00 2001 From: Dev Date: Tue, 7 Apr 2026 15:20:38 +0200 Subject: [PATCH] feat(09-01): add LiveCharts2 NuGet and FileTypeMetric data model - Add LiveChartsCore.SkiaSharpView.WPF 2.0.0-rc5.4 package reference - Create FileTypeMetric record with Extension, TotalSizeBytes, FileCount - Include DisplayLabel computed property for chart label binding Co-Authored-By: Claude Opus 4.6 (1M context) --- .../Core/Models/FileTypeMetric.cs | 21 +++++++++++++++++++ SharepointToolbox/SharepointToolbox.csproj | 1 + 2 files changed, 22 insertions(+) create mode 100644 SharepointToolbox/Core/Models/FileTypeMetric.cs diff --git a/SharepointToolbox/Core/Models/FileTypeMetric.cs b/SharepointToolbox/Core/Models/FileTypeMetric.cs new file mode 100644 index 0000000..f23e625 --- /dev/null +++ b/SharepointToolbox/Core/Models/FileTypeMetric.cs @@ -0,0 +1,21 @@ +namespace SharepointToolbox.Core.Models; + +/// +/// Represents storage consumption for a single file extension across all scanned libraries. +/// Produced by IStorageService.CollectFileTypeMetricsAsync and consumed by chart bindings. +/// +public record FileTypeMetric( + /// File extension including dot, e.g. ".docx", ".pdf". Empty string for extensionless files. + string Extension, + /// Total size in bytes of all files with this extension. + long TotalSizeBytes, + /// Number of files with this extension. + int FileCount) +{ + /// + /// Human-friendly display label: ".docx" becomes "DOCX", empty becomes "No Extension". + /// + public string DisplayLabel => string.IsNullOrEmpty(Extension) + ? "No Extension" + : Extension.TrimStart('.').ToUpperInvariant(); +} diff --git a/SharepointToolbox/SharepointToolbox.csproj b/SharepointToolbox/SharepointToolbox.csproj index c5449dd..01ff1f3 100644 --- a/SharepointToolbox/SharepointToolbox.csproj +++ b/SharepointToolbox/SharepointToolbox.csproj @@ -40,6 +40,7 @@ +