@inject TrafagSalesExporter.Services.IUiTextService UiText @using TrafagSalesExporter.Models
@T(TitleDe, TitleEn) @T(DescriptionDe, DescriptionEn)
@ResolveSectionStatus()
@foreach (var kpi in Kpis) { @T(kpi.LabelDe, kpi.LabelEn) @kpi.Value @T(kpi.DetailDe, kpi.DetailEn) }
@T(ChartTitleDe, ChartTitleEn)
@foreach (var item in ChartRows) {
@item.Label
@item.Value
}
@T("Datenstatus", "Data status")
@foreach (var status in StatusRows) {
@T(status.LabelDe, status.LabelEn) @status.Value
}
@T("Bereich", "Area") @T("Wert", "Value") @T("Dimension", "Dimension") @T("Quelle", "Source") @T(context.LabelDe, context.LabelEn) @context.Value @context.Dimension @context.Source
@code { [Parameter, EditorRequired] public string TitleDe { get; set; } = string.Empty; [Parameter, EditorRequired] public string TitleEn { get; set; } = string.Empty; [Parameter, EditorRequired] public string DescriptionDe { get; set; } = string.Empty; [Parameter, EditorRequired] public string DescriptionEn { get; set; } = string.Empty; [Parameter, EditorRequired] public string ChartTitleDe { get; set; } = string.Empty; [Parameter, EditorRequired] public string ChartTitleEn { get; set; } = string.Empty; [Parameter, EditorRequired] public IReadOnlyList Kpis { get; set; } = []; [Parameter, EditorRequired] public IReadOnlyList ChartRows { get; set; } = []; [Parameter, EditorRequired] public IReadOnlyList StatusRows { get; set; } = []; [Parameter, EditorRequired] public IReadOnlyList DetailRows { get; set; } = []; private string T(string german, string english) => UiText.Text(german, english); private static string BuildWidth(double percent) => Math.Clamp(percent, 3d, 100d).ToString("0.##", System.Globalization.CultureInfo.InvariantCulture); private static Color ResolveSourceColor(string source) => source.Equals("SAP live", StringComparison.OrdinalIgnoreCase) ? Color.Success : source.Equals("Wartet auf SAP", StringComparison.OrdinalIgnoreCase) ? Color.Warning : Color.Primary; private Color ResolveSectionColor() => DetailRows.Any(row => row.Source.Equals("SAP live", StringComparison.OrdinalIgnoreCase)) ? Color.Success : DetailRows.Any(row => row.Source.Equals("Simulation", StringComparison.OrdinalIgnoreCase)) ? Color.Info : Color.Warning; private string ResolveSectionStatus() => DetailRows.Any(row => row.Source.Equals("SAP live", StringComparison.OrdinalIgnoreCase)) ? T("Live + Analyse", "Live + analysis") : DetailRows.Any(row => row.Source.Equals("Simulation", StringComparison.OrdinalIgnoreCase)) ? T("Simulation aktiv", "Simulation active") : T("Wartet auf SAP", "Waiting for SAP"); }