| 1 | using System.Globalization; |
| 2 | |
| 3 | namespace CascadeIDE.ViewModels; |
| 4 | |
| 5 | /// <summary>Structured trace step for Power-mode timeline cards.</summary> |
| 6 | public sealed class AgentTraceStepViewModel |
| 7 | { |
| 8 | public AgentTraceStepViewModel(string kind, string text, string status, DateTimeOffset? at = null) |
| 9 | { |
| 10 | Kind = kind; |
| 11 | Text = text; |
| 12 | Status = status; |
| 13 | var t = at ?? DateTimeOffset.Now; |
| 14 | TimestampText = t.ToLocalTime().ToString("HH:mm:ss.fff", CultureInfo.InvariantCulture); |
| 15 | } |
| 16 | |
| 17 | public string Kind { get; } |
| 18 | public string Text { get; } |
| 19 | public string Status { get; } |
| 20 | public string TimestampText { get; } |
| 21 | |
| 22 | public bool IsPlan => string.Equals(Kind, "PLAN", StringComparison.OrdinalIgnoreCase); |
| 23 | public bool IsAction => string.Equals(Kind, "ACTION", StringComparison.OrdinalIgnoreCase); |
| 24 | public bool IsObservation => string.Equals(Kind, "OBSERVATION", StringComparison.OrdinalIgnoreCase); |
| 25 | public bool IsNext => string.Equals(Kind, "NEXT", StringComparison.OrdinalIgnoreCase); |
| 26 | |
| 27 | public bool IsSuccess => string.Equals(Status, "SUCCESS", StringComparison.OrdinalIgnoreCase); |
| 28 | public bool IsWarning => string.Equals(Status, "WARNING", StringComparison.OrdinalIgnoreCase); |
| 29 | public bool IsPending => string.Equals(Status, "PENDING", StringComparison.OrdinalIgnoreCase); |
| 30 | } |
| 31 | |