Files
poprhythm 5fdda08627 Refactor chip variants in event and team components for consistency
This commit updates various components within the Events and MeetingSchedule features to utilize standardized chip variants defined in the AppIcons class. The changes include replacing hardcoded chip variants with calls to the new methods for event, team, and student chips, enhancing consistency across the UI. Additionally, the UnscheduledStudentsList component has been updated to include necessary using directives, improving code clarity. These modifications contribute to a more uniform and maintainable user interface.
2026-01-14 10:22:44 -05:00

174 lines
6.0 KiB
C#

using Core.Entities;
using MudBlazor;
namespace WebApp.Models
{
public static class AppIcons
{
public static string EventRank = Icons.Material.Filled.AddChart;
public static string Teams = Icons.Material.Filled.Group;
public static string Student = Icons.Material.Filled.Person;
public static string TeamAssignment = Icons.Material.Filled.GroupAdd;
public static string Events = Icons.Material.Filled.Dashboard;
public static string Scheduler = Icons.Material.Filled.CalendarMonth;
public static string Captain = Icons.Material.Filled.Star;
public static string Registration = Icons.Material.Filled.AppRegistration;
public static string EventCalendar = Icons.Material.Filled.Event;
public static string LevelOfEffortIcon(int? loe)
{
return loe switch
{
1 => "○",
2 => "◐",
3 => "⬤",
_ => Icons.Material.Filled.QuestionMark
};
}
/*https://unicodeplus.com/search*/
public static string OnSiteActivity = "ⓐ";
public static string RegionalEvent = "ⓡ";
public static string IndividualEvent = "ⓘ";
public static string PresubmissionEvent = "ⓟ";
public static string PresentationEvent = "";
// Tooltip mapping for icon unicode characters
public static Dictionary<string, string> IconTooltips => new()
{
{ OnSiteActivity, "On-Site Activity" },
{ RegionalEvent, "Regional Event" },
{ IndividualEvent, "Individual Event" },
{ PresubmissionEvent, "Presubmission" },
{ PresentationEvent, "Presentation/Interview" },
{ "○", "Level of Effort: 1" },
{ "◐", "Level of Effort: 2" },
{ "●", "Level of Effort: 3" }
};
// Color mapping for icon unicode characters
public static Dictionary<string, string> IconColors => new()
{
{ OnSiteActivity, "#ff9800" }, // Orange
{ RegionalEvent, "#2196f3" }, // Blue
{ IndividualEvent, "#9c27b0" }, // Purple
{ PresubmissionEvent, "#4caf50" }, // Green
{ PresentationEvent, "#f44336" }, // Red
{ "○", "#757575" }, // Gray
{ "◐", "#616161" }, // Darker Gray
{ "●", "#424242" } // Even Darker Gray
};
public static string EventEffort(EventDefinition eventDefinition)
{
return LevelOfEffortIcon(eventDefinition.LevelOfEffort);
}
public static string EventAttributes(EventDefinition eventDefinition)
{
var v = new List<string>();
if (eventDefinition.EventFormat == EventFormat.Individual)
v.Add(IndividualEvent);
if (eventDefinition.RegionalEvent)
v.Add(RegionalEvent);
if (eventDefinition.InterviewOrPresentation)
v.Add(PresentationEvent);
if (eventDefinition.Presubmission)
v.Add(PresubmissionEvent);
if (eventDefinition.OnSiteActivity)
v.Add(OnSiteActivity);
return string.Join(" ", v);
}
public static string OfficerRoleIcon(OfficerRole officerRole)
{
return officerRole switch
{
OfficerRole.President => Icons.Material.Filled.Gavel,
OfficerRole.VicePresident => Icons.Material.Filled.StarBorderPurple500,
OfficerRole.Secretary => Icons.Material.Filled.Draw,
OfficerRole.Treasurer => Icons.Material.Filled.Key,
OfficerRole.Reporter => Icons.Material.Filled.Mic,
OfficerRole.SergeantAtArms => Icons.Material.Filled.Handshake,
_ => throw new ArgumentOutOfRangeException(nameof(officerRole), officerRole, null)
};
}
public static string RankedEventColor(int rank)
{
return rank switch
{
1 => "#dd7e6b",
2 => "#ea9999",
3 => "#f9cb9c",
4 => "#ffe599",
5 => "#fff2cc",
6 => "#fffaea",
7 => "#fffefa",
8 => "#fffefc",
9 => "#fffffd",
10 => "#fffffe",
_ => "#ddd"
};
}
public static string GetOrdinal(int num)
{
if (num <= 0) return num.ToString();
switch (num % 100)
{
case 11:
case 12:
case 13:
return num + "th";
}
switch (num % 10)
{
case 1:
return num + "st";
case 2:
return num + "nd";
case 3:
return num + "rd";
default:
return num + "th";
}
}
public static string GetOrdinalSuperscript(int number)
{
var suffix = number switch
{
11 or 12 or 13 => "th",
_ => (number % 10) switch
{
1 => "st",
2 => "nd",
3 => "rd",
_ => "th"
}
};
return $"{number}<sup>{suffix}</sup>";
}
/// <summary>
/// Returns the standard chip variant for student chips (Outlined).
/// </summary>
public static Variant StudentChipVariant() => Variant.Outlined;
/// <summary>
/// Returns the standard chip variant for event chips (Filled).
/// </summary>
public static Variant EventChipVariant() => Variant.Filled;
/// <summary>
/// Returns the standard chip variant for team chips (Filled).
/// </summary>
public static Variant TeamChipVariant() => Variant.Filled;
}
}