Expose method drill history dashboard bands
This commit is contained in:
parent
aa1d88bd9c
commit
e328bfe006
5 changed files with 732 additions and 2 deletions
|
|
@ -7324,6 +7324,95 @@ UHyperTwistCoachDashboardWidget::GetDisplayedQueueRecoveryStatusInspectSurface()
|
|||
return Surface;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachDashboardMethodDrillRecoveryOutcomeHistoryBandInspectSurface
|
||||
UHyperTwistCoachDashboardWidget::GetDisplayedMethodDrillRecoveryOutcomeHistoryBandInspectSurface() const
|
||||
{
|
||||
FHyperTwistTrainingCoachDashboardMethodDrillRecoveryOutcomeHistoryBandInspectSurface Surface;
|
||||
Surface.Headline = TEXT("Method-drill recovery outcome history band");
|
||||
|
||||
const FHyperTwistTrainingCoachDashboardMethodDrillRecoveryOutcomeHistoryStatusInspectSurface StatusSurface =
|
||||
GetDisplayedMethodDrillRecoveryOutcomeHistoryStatusInspectSurface();
|
||||
const FHyperTwistTrainingCoachDashboardMethodDrillRecoveryOutcomeHistoryDetailInspectSurface DetailSurface =
|
||||
GetDisplayedMethodDrillRecoveryOutcomeHistoryDetailInspectSurface();
|
||||
const FHyperTwistTrainingCoachDashboardMethodDrillRecoveryOutcomeHistoryNavigationInspectSurface NavigationSurface =
|
||||
GetDisplayedMethodDrillRecoveryOutcomeHistoryNavigationInspectSurface();
|
||||
|
||||
Surface.HistoryStatusLine = StatusSurface.StatusLine.IsEmpty()
|
||||
? TEXT("Method-drill recovery outcome history status: unavailable.")
|
||||
: StatusSurface.StatusLine;
|
||||
Surface.HistoryDetailLine = DetailSurface.DetailLine.IsEmpty()
|
||||
? TEXT("Method-drill recovery outcome history detail: unavailable.")
|
||||
: DetailSurface.DetailLine;
|
||||
Surface.HistoryNavigationStatusLine = NavigationSurface.StatusLine.IsEmpty()
|
||||
? TEXT("Method-drill recovery outcome history navigation: unavailable.")
|
||||
: NavigationSurface.StatusLine;
|
||||
Surface.HistoryNavigationDetailLine = NavigationSurface.DetailLine.IsEmpty()
|
||||
? TEXT("Method-drill recovery outcome history navigation detail: unavailable.")
|
||||
: NavigationSurface.DetailLine;
|
||||
Surface.SelectedEntryOrdinal = StatusSurface.SelectedEntryOrdinal.IsEmpty()
|
||||
? (NavigationSurface.SelectedEntryOrdinal.IsEmpty() ? TEXT("none") : NavigationSurface.SelectedEntryOrdinal)
|
||||
: StatusSurface.SelectedEntryOrdinal;
|
||||
Surface.RecordedAtUtc = StatusSurface.RecordedAtUtc.IsEmpty() ? TEXT("n/a") : StatusSurface.RecordedAtUtc;
|
||||
Surface.AppliedActionLabel = !StatusSurface.AppliedActionLabel.IsEmpty()
|
||||
? StatusSurface.AppliedActionLabel
|
||||
: (NavigationSurface.AppliedActionLabel.IsEmpty() ? TEXT("n/a") : NavigationSurface.AppliedActionLabel);
|
||||
Surface.VerdictLine = !StatusSurface.VerdictLine.IsEmpty()
|
||||
? StatusSurface.VerdictLine
|
||||
: (NavigationSurface.VerdictLine.IsEmpty() ? TEXT("n/a") : NavigationSurface.VerdictLine);
|
||||
Surface.SourceDescription = !StatusSurface.SourceDescription.IsEmpty()
|
||||
? StatusSurface.SourceDescription
|
||||
: (NavigationSurface.SourceDescription.IsEmpty() ? TEXT("n/a") : NavigationSurface.SourceDescription);
|
||||
Surface.PacketStructureRecoveryLine = StatusSurface.PacketStructureRecoveryLine.IsEmpty()
|
||||
? TEXT("none")
|
||||
: StatusSurface.PacketStructureRecoveryLine;
|
||||
Surface.RetainedPostureLine = StatusSurface.RetainedPostureLine.IsEmpty()
|
||||
? TEXT("n/a")
|
||||
: StatusSurface.RetainedPostureLine;
|
||||
Surface.ReliablePlanRecoveryLine = StatusSurface.ReliablePlanRecoveryLine.IsEmpty()
|
||||
? TEXT("none")
|
||||
: StatusSurface.ReliablePlanRecoveryLine;
|
||||
Surface.PreviousLabel = NavigationSurface.PreviousLabel.IsEmpty() ? TEXT("Prev Drill Recovery") : NavigationSurface.PreviousLabel;
|
||||
Surface.NextLabel = NavigationSurface.NextLabel.IsEmpty() ? TEXT("Next Drill Recovery") : NavigationSurface.NextLabel;
|
||||
Surface.SelectedHistoryIndex = StatusSurface.SelectedHistoryIndex;
|
||||
Surface.HistoryEntryCount = StatusSurface.HistoryEntryCount;
|
||||
Surface.BeforePressureScore = DetailSurface.BeforePressureScore;
|
||||
Surface.AfterPressureScore = DetailSurface.AfterPressureScore;
|
||||
Surface.BeforeDeferredEventCount = DetailSurface.BeforeDeferredEventCount;
|
||||
Surface.AfterDeferredEventCount = DetailSurface.AfterDeferredEventCount;
|
||||
Surface.bHasSelectedEntry = StatusSurface.bHasSelectedEntry || DetailSurface.bHasSelectedEntry || NavigationSurface.bHasSelectedEntry;
|
||||
Surface.bSelectedEntryIsLatest = StatusSurface.bSelectedEntryIsLatest || NavigationSurface.bSelectedEntryIsLatest;
|
||||
Surface.bPreviousEnabled = NavigationSurface.bPreviousEnabled;
|
||||
Surface.bNextEnabled = NavigationSurface.bNextEnabled;
|
||||
Surface.bSucceeded = DetailSurface.bSucceeded;
|
||||
Surface.bReducedFriction = DetailSurface.bReducedFriction;
|
||||
Surface.bShiftedFriction = DetailSurface.bShiftedFriction;
|
||||
Surface.bUsedDeferredFirstSuppressionSignal = DetailSurface.bUsedDeferredFirstSuppressionSignal;
|
||||
Surface.bUsedMethodDrillHandoffSignal = DetailSurface.bUsedMethodDrillHandoffSignal;
|
||||
Surface.StatusLine = FString::Printf(
|
||||
TEXT("Drill-recovery-outcome band: selected %s | action %s | verdict %s | navigation %s/%s"),
|
||||
*Surface.SelectedEntryOrdinal,
|
||||
*Surface.AppliedActionLabel,
|
||||
*Surface.VerdictLine,
|
||||
Surface.bPreviousEnabled ? TEXT("enabled") : TEXT("disabled"),
|
||||
Surface.bNextEnabled ? TEXT("enabled") : TEXT("disabled"));
|
||||
Surface.DetailLine = FString::Printf(
|
||||
TEXT("%s | %s | %s | %s | source %s | packet recovery %s | retained posture %s | reliable plan %s | before/after pressure %.2f/%.2f | before/after deferred %d/%d | latest %s"),
|
||||
*Surface.HistoryStatusLine,
|
||||
*Surface.HistoryDetailLine,
|
||||
*Surface.HistoryNavigationStatusLine,
|
||||
*Surface.HistoryNavigationDetailLine,
|
||||
*Surface.SourceDescription,
|
||||
*Surface.PacketStructureRecoveryLine,
|
||||
*Surface.RetainedPostureLine,
|
||||
*Surface.ReliablePlanRecoveryLine,
|
||||
Surface.BeforePressureScore,
|
||||
Surface.AfterPressureScore,
|
||||
Surface.BeforeDeferredEventCount,
|
||||
Surface.AfterDeferredEventCount,
|
||||
Surface.bSelectedEntryIsLatest ? TEXT("yes") : TEXT("no"));
|
||||
return Surface;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachDashboardGuidanceDecisionHistoryBandInspectSurface
|
||||
UHyperTwistCoachDashboardWidget::GetDisplayedGuidanceDecisionHistoryBandInspectSurface() const
|
||||
{
|
||||
|
|
@ -7436,6 +7525,103 @@ UHyperTwistCoachDashboardWidget::GetDisplayedGuidanceDecisionHistoryBandInspectS
|
|||
return Surface;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachDashboardMethodDrillRecoveryMemoryHistoryBandInspectSurface
|
||||
UHyperTwistCoachDashboardWidget::GetDisplayedMethodDrillRecoveryMemoryHistoryBandInspectSurface() const
|
||||
{
|
||||
FHyperTwistTrainingCoachDashboardMethodDrillRecoveryMemoryHistoryBandInspectSurface Surface;
|
||||
Surface.Headline = TEXT("Method-drill recovery memory history band");
|
||||
|
||||
const FHyperTwistTrainingCoachDashboardMethodDrillRecoveryMemoryHistoryStatusInspectSurface StatusSurface =
|
||||
GetDisplayedMethodDrillRecoveryMemoryHistoryStatusInspectSurface();
|
||||
const FHyperTwistTrainingCoachDashboardMethodDrillRecoveryMemoryHistoryDetailInspectSurface DetailSurface =
|
||||
GetDisplayedMethodDrillRecoveryMemoryHistoryDetailInspectSurface();
|
||||
const FHyperTwistTrainingCoachDashboardMethodDrillRecoveryMemoryHistoryNavigationInspectSurface NavigationSurface =
|
||||
GetDisplayedMethodDrillRecoveryMemoryHistoryNavigationInspectSurface();
|
||||
|
||||
Surface.HistoryStatusLine = StatusSurface.StatusLine.IsEmpty()
|
||||
? TEXT("Method-drill recovery memory history status: unavailable.")
|
||||
: StatusSurface.StatusLine;
|
||||
Surface.HistoryDetailLine = DetailSurface.DetailLine.IsEmpty()
|
||||
? TEXT("Method-drill recovery memory history detail: unavailable.")
|
||||
: DetailSurface.DetailLine;
|
||||
Surface.HistoryNavigationStatusLine = NavigationSurface.StatusLine.IsEmpty()
|
||||
? TEXT("Method-drill recovery memory history navigation: unavailable.")
|
||||
: NavigationSurface.StatusLine;
|
||||
Surface.HistoryNavigationDetailLine = NavigationSurface.DetailLine.IsEmpty()
|
||||
? TEXT("Method-drill recovery memory history navigation detail: unavailable.")
|
||||
: NavigationSurface.DetailLine;
|
||||
Surface.SelectedEntryOrdinal = StatusSurface.SelectedEntryOrdinal.IsEmpty()
|
||||
? (NavigationSurface.SelectedEntryOrdinal.IsEmpty() ? TEXT("none") : NavigationSurface.SelectedEntryOrdinal)
|
||||
: StatusSurface.SelectedEntryOrdinal;
|
||||
Surface.RecordedAtUtc = StatusSurface.RecordedAtUtc.IsEmpty() ? TEXT("n/a") : StatusSurface.RecordedAtUtc;
|
||||
Surface.PreferredRecoveryActionLabel = !StatusSurface.PreferredRecoveryActionLabel.IsEmpty()
|
||||
? StatusSurface.PreferredRecoveryActionLabel
|
||||
: (NavigationSurface.PreferredRecoveryActionLabel.IsEmpty() ? TEXT("n/a") : NavigationSurface.PreferredRecoveryActionLabel);
|
||||
Surface.PreferredRecoveryActionSourceDescription =
|
||||
!StatusSurface.PreferredRecoveryActionSourceDescription.IsEmpty()
|
||||
? StatusSurface.PreferredRecoveryActionSourceDescription
|
||||
: (NavigationSurface.PreferredRecoveryActionSourceDescription.IsEmpty()
|
||||
? TEXT("n/a")
|
||||
: NavigationSurface.PreferredRecoveryActionSourceDescription);
|
||||
Surface.RecommendedHandoffKindLabel = !StatusSurface.RecommendedHandoffKindLabel.IsEmpty()
|
||||
? StatusSurface.RecommendedHandoffKindLabel
|
||||
: (NavigationSurface.RecommendedHandoffKindLabel.IsEmpty() ? TEXT("n/a") : NavigationSurface.RecommendedHandoffKindLabel);
|
||||
Surface.DominantBiasLine = !StatusSurface.DominantBiasLine.IsEmpty()
|
||||
? StatusSurface.DominantBiasLine
|
||||
: (NavigationSurface.DominantBiasLine.IsEmpty() ? TEXT("n/a") : NavigationSurface.DominantBiasLine);
|
||||
Surface.GeneratedGuidancePacketKindLabel = !StatusSurface.GeneratedGuidancePacketKindLabel.IsEmpty()
|
||||
? StatusSurface.GeneratedGuidancePacketKindLabel
|
||||
: (NavigationSurface.GeneratedGuidancePacketKindLabel.IsEmpty()
|
||||
? TEXT("none")
|
||||
: NavigationSurface.GeneratedGuidancePacketKindLabel);
|
||||
Surface.GeneratedPlanPostureLabel = !StatusSurface.GeneratedPlanPostureLabel.IsEmpty()
|
||||
? StatusSurface.GeneratedPlanPostureLabel
|
||||
: (NavigationSurface.GeneratedPlanPostureLabel.IsEmpty() ? TEXT("n/a") : NavigationSurface.GeneratedPlanPostureLabel);
|
||||
Surface.PlanSourceLine = DetailSurface.PlanSourceLine.IsEmpty() ? TEXT("none") : DetailSurface.PlanSourceLine;
|
||||
Surface.PlanAlignmentLine = DetailSurface.PlanAlignmentLine.IsEmpty() ? TEXT("n/a") : DetailSurface.PlanAlignmentLine;
|
||||
Surface.ComparisonPreferenceLine = DetailSurface.ComparisonPreferenceLine.IsEmpty()
|
||||
? TEXT("n/a")
|
||||
: DetailSurface.ComparisonPreferenceLine;
|
||||
Surface.PreviousLabel = NavigationSurface.PreviousLabel.IsEmpty() ? TEXT("Prev Drill Memory") : NavigationSurface.PreviousLabel;
|
||||
Surface.NextLabel = NavigationSurface.NextLabel.IsEmpty() ? TEXT("Next Drill Memory") : NavigationSurface.NextLabel;
|
||||
Surface.SelectedEntryIndex = StatusSurface.SelectedEntryIndex;
|
||||
Surface.HistoryEntryCount = StatusSurface.HistoryEntryCount;
|
||||
Surface.GeneratedGuidancePacketFocusCaseCount = DetailSurface.GeneratedGuidancePacketFocusCaseCount;
|
||||
Surface.MethodDrillRecoveryHistoryCount = DetailSurface.MethodDrillRecoveryHistoryCount;
|
||||
Surface.MethodDrillRecoveryAverageOutcomeScore = DetailSurface.MethodDrillRecoveryAverageOutcomeScore;
|
||||
Surface.bHasSelectedEntry = StatusSurface.bHasSelectedEntry || DetailSurface.bHasSelectedEntry || NavigationSurface.bHasSelectedEntry;
|
||||
Surface.bSelectedEntryIsLatest = StatusSurface.bSelectedEntryIsLatest || NavigationSurface.bSelectedEntryIsLatest;
|
||||
Surface.bPreviousEnabled = NavigationSurface.bPreviousEnabled;
|
||||
Surface.bNextEnabled = NavigationSurface.bNextEnabled;
|
||||
Surface.bStrongPressureDominant = DetailSurface.bStrongPressureDominant;
|
||||
Surface.bWeakPressureDominant = DetailSurface.bWeakPressureDominant;
|
||||
Surface.bUsedMethodDrillRecoveryMemoryForRecovery = DetailSurface.bUsedMethodDrillRecoveryMemoryForRecovery;
|
||||
Surface.bUsedMethodDrillRecoveryMemoryForHandoff = DetailSurface.bUsedMethodDrillRecoveryMemoryForHandoff;
|
||||
Surface.StatusLine = FString::Printf(
|
||||
TEXT("Drill-recovery-memory band: selected %s | recovery %s | handoff %s | packet %s | navigation %s/%s"),
|
||||
*Surface.SelectedEntryOrdinal,
|
||||
*Surface.PreferredRecoveryActionLabel,
|
||||
*Surface.RecommendedHandoffKindLabel,
|
||||
*Surface.GeneratedGuidancePacketKindLabel,
|
||||
Surface.bPreviousEnabled ? TEXT("enabled") : TEXT("disabled"),
|
||||
Surface.bNextEnabled ? TEXT("enabled") : TEXT("disabled"));
|
||||
Surface.DetailLine = FString::Printf(
|
||||
TEXT("%s | %s | %s | %s | bias %s | plan source %s | plan align %s | comparison %s | focus cases %d | recovery history %d avg %.1f | latest %s"),
|
||||
*Surface.HistoryStatusLine,
|
||||
*Surface.HistoryDetailLine,
|
||||
*Surface.HistoryNavigationStatusLine,
|
||||
*Surface.HistoryNavigationDetailLine,
|
||||
*Surface.DominantBiasLine,
|
||||
*Surface.PlanSourceLine,
|
||||
*Surface.PlanAlignmentLine,
|
||||
*Surface.ComparisonPreferenceLine,
|
||||
Surface.GeneratedGuidancePacketFocusCaseCount,
|
||||
Surface.MethodDrillRecoveryHistoryCount,
|
||||
Surface.MethodDrillRecoveryAverageOutcomeScore,
|
||||
Surface.bSelectedEntryIsLatest ? TEXT("yes") : TEXT("no"));
|
||||
return Surface;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachDashboardQueueRecoveryDetailInspectSurface
|
||||
UHyperTwistCoachDashboardWidget::GetDisplayedQueueRecoveryDetailInspectSurface() const
|
||||
{
|
||||
|
|
@ -9532,6 +9718,112 @@ UHyperTwistCoachDashboardWidget::GetDisplayedMethodDrillFollowUpHistoryNavigatio
|
|||
return Surface;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachDashboardMethodDrillFollowUpHistoryBandInspectSurface
|
||||
UHyperTwistCoachDashboardWidget::GetDisplayedMethodDrillFollowUpHistoryBandInspectSurface() const
|
||||
{
|
||||
FHyperTwistTrainingCoachDashboardMethodDrillFollowUpHistoryBandInspectSurface Surface;
|
||||
Surface.Headline = TEXT("Method-drill follow-up history band");
|
||||
|
||||
const FHyperTwistTrainingCoachDashboardMethodDrillFollowUpHistoryStatusInspectSurface StatusSurface =
|
||||
GetDisplayedMethodDrillFollowUpHistoryStatusInspectSurface();
|
||||
const FHyperTwistTrainingCoachDashboardMethodDrillFollowUpHistoryDetailInspectSurface DetailSurface =
|
||||
GetDisplayedMethodDrillFollowUpHistoryDetailInspectSurface();
|
||||
const FHyperTwistTrainingCoachDashboardMethodDrillFollowUpHistoryNavigationInspectSurface NavigationSurface =
|
||||
GetDisplayedMethodDrillFollowUpHistoryNavigationInspectSurface();
|
||||
|
||||
Surface.HistoryStatusLine = StatusSurface.StatusLine.IsEmpty()
|
||||
? TEXT("Method-drill follow-up history status: unavailable.")
|
||||
: StatusSurface.StatusLine;
|
||||
Surface.HistoryDetailLine = DetailSurface.DetailLine.IsEmpty()
|
||||
? TEXT("Method-drill follow-up history detail: unavailable.")
|
||||
: DetailSurface.DetailLine;
|
||||
Surface.HistoryNavigationStatusLine = NavigationSurface.StatusLine.IsEmpty()
|
||||
? TEXT("Method-drill follow-up history navigation: unavailable.")
|
||||
: NavigationSurface.StatusLine;
|
||||
Surface.HistoryNavigationDetailLine = NavigationSurface.DetailLine.IsEmpty()
|
||||
? TEXT("Method-drill follow-up history navigation detail: unavailable.")
|
||||
: NavigationSurface.DetailLine;
|
||||
Surface.SelectedEntryOrdinal = StatusSurface.SelectedEntryOrdinal.IsEmpty()
|
||||
? (NavigationSurface.SelectedEntryOrdinal.IsEmpty() ? TEXT("none") : NavigationSurface.SelectedEntryOrdinal)
|
||||
: StatusSurface.SelectedEntryOrdinal;
|
||||
Surface.RecordedAtUtc = StatusSurface.RecordedAtUtc.IsEmpty() ? TEXT("n/a") : StatusSurface.RecordedAtUtc;
|
||||
Surface.StageLabel = !StatusSurface.StageLabel.IsEmpty()
|
||||
? StatusSurface.StageLabel
|
||||
: (NavigationSurface.StageLabel.IsEmpty() ? TEXT("n/a") : NavigationSurface.StageLabel);
|
||||
Surface.DiagnosticStateLabel = DetailSurface.DiagnosticStateLabel.IsEmpty()
|
||||
? (NavigationSurface.DiagnosticStateLabel.IsEmpty() ? TEXT("n/a") : NavigationSurface.DiagnosticStateLabel)
|
||||
: DetailSurface.DiagnosticStateLabel;
|
||||
Surface.RecommendedReviewGradeLabel = !StatusSurface.RecommendedReviewGradeLabel.IsEmpty()
|
||||
? StatusSurface.RecommendedReviewGradeLabel
|
||||
: (NavigationSurface.RecommendedReviewGradeLabel.IsEmpty()
|
||||
? TEXT("n/a")
|
||||
: NavigationSurface.RecommendedReviewGradeLabel);
|
||||
Surface.SuggestedModeLabel = !StatusSurface.SuggestedModeLabel.IsEmpty()
|
||||
? StatusSurface.SuggestedModeLabel
|
||||
: (NavigationSurface.SuggestedModeLabel.IsEmpty() ? TEXT("n/a") : NavigationSurface.SuggestedModeLabel);
|
||||
Surface.SuggestedSelectionLabel = DetailSurface.SuggestedSelectionLabel.IsEmpty()
|
||||
? TEXT("n/a")
|
||||
: DetailSurface.SuggestedSelectionLabel;
|
||||
Surface.OutcomePreferenceLine = !StatusSurface.OutcomePreferenceLine.IsEmpty()
|
||||
? StatusSurface.OutcomePreferenceLine
|
||||
: (NavigationSurface.OutcomePreferenceLine.IsEmpty() ? TEXT("n/a") : NavigationSurface.OutcomePreferenceLine);
|
||||
Surface.PacketStructureLabel = !StatusSurface.PacketStructureLabel.IsEmpty()
|
||||
? StatusSurface.PacketStructureLabel
|
||||
: (NavigationSurface.PacketStructureLabel.IsEmpty() ? TEXT("default") : NavigationSurface.PacketStructureLabel);
|
||||
Surface.PacketLaneLabel = DetailSurface.PacketLaneLabel.IsEmpty() ? TEXT("none") : DetailSurface.PacketLaneLabel;
|
||||
Surface.PacketStanceLabel = !StatusSurface.PacketStanceLabel.IsEmpty()
|
||||
? StatusSurface.PacketStanceLabel
|
||||
: (NavigationSurface.PacketStanceLabel.IsEmpty() ? TEXT("none") : NavigationSurface.PacketStanceLabel);
|
||||
Surface.SourceRunId = DetailSurface.SourceRunId.IsEmpty() ? TEXT("n/a") : DetailSurface.SourceRunId;
|
||||
Surface.SourceDrillId = DetailSurface.SourceDrillId.IsEmpty() ? TEXT("n/a") : DetailSurface.SourceDrillId;
|
||||
Surface.SourceSessionId = DetailSurface.SourceSessionId.IsEmpty() ? TEXT("n/a") : DetailSurface.SourceSessionId;
|
||||
Surface.PreviousLabel = NavigationSurface.PreviousLabel.IsEmpty() ? TEXT("Prev Drill Follow-Up") : NavigationSurface.PreviousLabel;
|
||||
Surface.NextLabel = NavigationSurface.NextLabel.IsEmpty() ? TEXT("Next Drill Follow-Up") : NavigationSurface.NextLabel;
|
||||
Surface.SelectedEntryIndex = StatusSurface.SelectedEntryIndex;
|
||||
Surface.HistoryEntryCount = StatusSurface.HistoryEntryCount;
|
||||
Surface.MatchingHistoryCount = StatusSurface.MatchingHistoryCount;
|
||||
Surface.FocusCaseCount = DetailSurface.FocusCaseCount;
|
||||
Surface.LaunchedCaseCount = DetailSurface.LaunchedCaseCount;
|
||||
Surface.CompletedAttemptCount = DetailSurface.CompletedAttemptCount;
|
||||
Surface.TotalMistakes = DetailSurface.TotalMistakes;
|
||||
Surface.SuccessRate = DetailSurface.SuccessRate;
|
||||
Surface.AverageSuccessRate = DetailSurface.AverageSuccessRate;
|
||||
Surface.AverageMistakes = DetailSurface.AverageMistakes;
|
||||
Surface.bHasSelectedEntry = StatusSurface.bHasSelectedEntry || DetailSurface.bHasSelectedEntry || NavigationSurface.bHasSelectedEntry;
|
||||
Surface.bSelectedEntryIsLatest = StatusSurface.bSelectedEntryIsLatest || NavigationSurface.bSelectedEntryIsLatest;
|
||||
Surface.bPreviousEnabled = NavigationSurface.bPreviousEnabled;
|
||||
Surface.bNextEnabled = NavigationSurface.bNextEnabled;
|
||||
Surface.bHasHistoryWeighting = StatusSurface.bHasHistoryWeighting || DetailSurface.bHasHistoryWeighting || NavigationSurface.bHasHistoryWeighting;
|
||||
Surface.bPreferDrillFollowUp = StatusSurface.bPreferDrillFollowUp || DetailSurface.bPreferDrillFollowUp || NavigationSurface.bPreferDrillFollowUp;
|
||||
Surface.bPreferCoachHandoff = StatusSurface.bPreferCoachHandoff || DetailSurface.bPreferCoachHandoff || NavigationSurface.bPreferCoachHandoff;
|
||||
Surface.bHasUpstreamStructureSignal = StatusSurface.bHasUpstreamStructureSignal || DetailSurface.bHasUpstreamStructureSignal || NavigationSurface.bHasUpstreamStructureSignal;
|
||||
Surface.StatusLine = FString::Printf(
|
||||
TEXT("Drill-follow-up-history band: selected %s | stage %s | review %s | navigation %s/%s | weighting %s"),
|
||||
*Surface.SelectedEntryOrdinal,
|
||||
*Surface.StageLabel,
|
||||
*Surface.RecommendedReviewGradeLabel,
|
||||
Surface.bPreviousEnabled ? TEXT("enabled") : TEXT("disabled"),
|
||||
Surface.bNextEnabled ? TEXT("enabled") : TEXT("disabled"),
|
||||
Surface.bHasHistoryWeighting ? TEXT("yes") : TEXT("no"));
|
||||
Surface.DetailLine = FString::Printf(
|
||||
TEXT("%s | %s | %s | %s | source drill %s | mode %s | selection %s | packet %s/%s/%s | focus %d | launched %d | success %.2f | latest %s"),
|
||||
*Surface.HistoryStatusLine,
|
||||
*Surface.HistoryDetailLine,
|
||||
*Surface.HistoryNavigationStatusLine,
|
||||
*Surface.HistoryNavigationDetailLine,
|
||||
*Surface.SourceDrillId,
|
||||
*Surface.SuggestedModeLabel,
|
||||
*Surface.SuggestedSelectionLabel,
|
||||
*Surface.PacketStructureLabel,
|
||||
*Surface.PacketLaneLabel,
|
||||
*Surface.PacketStanceLabel,
|
||||
Surface.FocusCaseCount,
|
||||
Surface.LaunchedCaseCount,
|
||||
Surface.SuccessRate,
|
||||
Surface.bSelectedEntryIsLatest ? TEXT("yes") : TEXT("no"));
|
||||
return Surface;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachDashboardHandoffHistoryInspectSurface
|
||||
UHyperTwistCoachDashboardWidget::GetSelectedHandoffHistoryInspectSurface() const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -783,6 +783,10 @@ public:
|
|||
FHyperTwistTrainingCoachDashboardMethodDrillRecoveryOutcomeHistoryNavigationInspectSurface
|
||||
GetDisplayedMethodDrillRecoveryOutcomeHistoryNavigationInspectSurface() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach|Dashboard")
|
||||
FHyperTwistTrainingCoachDashboardMethodDrillRecoveryOutcomeHistoryBandInspectSurface
|
||||
GetDisplayedMethodDrillRecoveryOutcomeHistoryBandInspectSurface() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach|Dashboard")
|
||||
FHyperTwistTrainingCoachDashboardMethodDrillRecoveryMemoryHistoryInspectSurface
|
||||
GetSelectedMethodDrillRecoveryMemoryHistoryInspectSurface() const;
|
||||
|
|
@ -799,6 +803,10 @@ public:
|
|||
FHyperTwistTrainingCoachDashboardMethodDrillRecoveryMemoryHistoryNavigationInspectSurface
|
||||
GetDisplayedMethodDrillRecoveryMemoryHistoryNavigationInspectSurface() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach|Dashboard")
|
||||
FHyperTwistTrainingCoachDashboardMethodDrillRecoveryMemoryHistoryBandInspectSurface
|
||||
GetDisplayedMethodDrillRecoveryMemoryHistoryBandInspectSurface() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach|Dashboard")
|
||||
FHyperTwistTrainingCoachDashboardMethodDrillFollowUpHistoryInspectSurface
|
||||
GetSelectedMethodDrillFollowUpHistoryInspectSurface() const;
|
||||
|
|
@ -815,6 +823,10 @@ public:
|
|||
FHyperTwistTrainingCoachDashboardMethodDrillFollowUpHistoryNavigationInspectSurface
|
||||
GetDisplayedMethodDrillFollowUpHistoryNavigationInspectSurface() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach|Dashboard")
|
||||
FHyperTwistTrainingCoachDashboardMethodDrillFollowUpHistoryBandInspectSurface
|
||||
GetDisplayedMethodDrillFollowUpHistoryBandInspectSurface() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach|Dashboard")
|
||||
FHyperTwistTrainingCoachDashboardHandoffHistoryInspectSurface
|
||||
GetSelectedHandoffHistoryInspectSurface() const;
|
||||
|
|
|
|||
|
|
@ -9103,6 +9103,117 @@ struct FHyperTwistTrainingCoachDashboardQueueSuppressionHistoryNavigationInspect
|
|||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCoachDashboardMethodDrillRecoveryOutcomeHistoryBandInspectSurface
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString Headline;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString StatusLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString DetailLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString HistoryStatusLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString HistoryDetailLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString HistoryNavigationStatusLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString HistoryNavigationDetailLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SelectedEntryOrdinal;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RecordedAtUtc;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString AppliedActionLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString VerdictLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SourceDescription;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PacketStructureRecoveryLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RetainedPostureLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString ReliablePlanRecoveryLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PreviousLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString NextLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 SelectedHistoryIndex = INDEX_NONE;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 HistoryEntryCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float BeforePressureScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float AfterPressureScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 BeforeDeferredEventCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 AfterDeferredEventCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasSelectedEntry = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bSelectedEntryIsLatest = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bPreviousEnabled = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bNextEnabled = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bSucceeded = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bReducedFriction = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bShiftedFriction = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bUsedDeferredFirstSuppressionSignal = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bUsedMethodDrillHandoffSignal = false;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !StatusLine.IsEmpty()
|
||||
|| !DetailLine.IsEmpty()
|
||||
|| bHasSelectedEntry
|
||||
|| bPreviousEnabled
|
||||
|| bNextEnabled;
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCoachDashboardClosureRecoveryHistoryInspectSurface
|
||||
{
|
||||
|
|
@ -9247,6 +9358,120 @@ struct FHyperTwistTrainingCoachDashboardClosureRecoveryHistoryNavigationInspectS
|
|||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCoachDashboardMethodDrillRecoveryMemoryHistoryBandInspectSurface
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString Headline;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString StatusLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString DetailLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString HistoryStatusLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString HistoryDetailLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString HistoryNavigationStatusLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString HistoryNavigationDetailLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SelectedEntryOrdinal;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RecordedAtUtc;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PreferredRecoveryActionLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PreferredRecoveryActionSourceDescription;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RecommendedHandoffKindLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString DominantBiasLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString GeneratedGuidancePacketKindLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString GeneratedPlanPostureLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PlanSourceLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PlanAlignmentLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString ComparisonPreferenceLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PreviousLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString NextLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 SelectedEntryIndex = INDEX_NONE;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 HistoryEntryCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 GeneratedGuidancePacketFocusCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 MethodDrillRecoveryHistoryCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float MethodDrillRecoveryAverageOutcomeScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasSelectedEntry = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bSelectedEntryIsLatest = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bPreviousEnabled = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bNextEnabled = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bStrongPressureDominant = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bWeakPressureDominant = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bUsedMethodDrillRecoveryMemoryForRecovery = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bUsedMethodDrillRecoveryMemoryForHandoff = false;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !StatusLine.IsEmpty()
|
||||
|| !DetailLine.IsEmpty()
|
||||
|| bHasSelectedEntry
|
||||
|| bPreviousEnabled
|
||||
|| bNextEnabled;
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCoachDashboardMethodDrillRecoveryOutcomeHistoryInspectSurface
|
||||
{
|
||||
|
|
@ -10905,6 +11130,145 @@ struct FHyperTwistTrainingCoachDashboardMethodDrillFollowUpHistoryDetailInspectS
|
|||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCoachDashboardMethodDrillFollowUpHistoryBandInspectSurface
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString Headline;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString StatusLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString DetailLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString HistoryStatusLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString HistoryDetailLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString HistoryNavigationStatusLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString HistoryNavigationDetailLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SelectedEntryOrdinal;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RecordedAtUtc;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString StageLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString DiagnosticStateLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RecommendedReviewGradeLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SuggestedModeLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SuggestedSelectionLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString OutcomePreferenceLine;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PacketStructureLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PacketLaneLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PacketStanceLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SourceRunId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SourceDrillId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SourceSessionId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString PreviousLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString NextLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 SelectedEntryIndex = INDEX_NONE;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 HistoryEntryCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 MatchingHistoryCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 FocusCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 LaunchedCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 CompletedAttemptCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 TotalMistakes = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float SuccessRate = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float AverageSuccessRate = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float AverageMistakes = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasSelectedEntry = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bSelectedEntryIsLatest = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bPreviousEnabled = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bNextEnabled = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasHistoryWeighting = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bPreferDrillFollowUp = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bPreferCoachHandoff = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasUpstreamStructureSignal = false;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !StatusLine.IsEmpty()
|
||||
|| !DetailLine.IsEmpty()
|
||||
|| bHasSelectedEntry
|
||||
|| bHasHistoryWeighting
|
||||
|| bPreviousEnabled
|
||||
|| bNextEnabled;
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCoachDashboardHandoffHistoryStatusInspectSurface
|
||||
{
|
||||
|
|
|
|||
|
|
@ -77,8 +77,8 @@ Current correction call from the source-exposed audit and current execution refr
|
|||
- the latest landed bounded `Phase 4` packet deliberately chooses another adjacent live dashboard consumer band and adds a single queue scheduling / recovery seam over the already-landed queue counts / status, schedule horizon, schedule policy / friction, and queue recovery live status/detail surfaces, so gameplay/Blueprint callers can inspect that whole scheduling-and-recovery dashboard cluster without stitching five adjacent getters together
|
||||
- the latest landed bounded `Phase 4` packet deliberately chooses another adjacent live dashboard consumer band and adds a single closure-recovery seam over the already-landed closure-recovery live status/detail and closure-recovery history navigation surfaces, so gameplay/Blueprint callers can inspect that whole closure-recovery dashboard cluster without stitching three adjacent getters together
|
||||
- the latest landed bounded `Phase 4` packet deliberately chooses another adjacent live dashboard consumer band and adds a single queue-suppression seam over the already-landed queue-suppression live summary/detail and queue-suppression history navigation surfaces, so gameplay/Blueprint callers can inspect that whole queue-suppression dashboard cluster without stitching three adjacent getters together
|
||||
- the latest landed bounded `Phase 4` packet deliberately continues across the remaining adjacent authored-history dashboard consumer pair and adds a single guidance-decision-history seam plus a single template-launch-history seam over their already-landed status/detail/navigation surfaces, so gameplay/Blueprint callers can inspect each whole history cluster without stitching three adjacent getters together per cluster
|
||||
- with the retained-history text-band lane, the template-launch / preview action-control band, the execution-action-control band, the verification / recognition / review-policy status band, the selected-queue band, the queue scheduling / recovery band, the closure-recovery band, the queue-suppression band, the handoff-history band, the guidance-decision-history band, and the template-launch-history band now all closed baseline, the next best clean move is to deliberately choose another adjacent live dashboard consumer band rather than reopen already-landed surfaces by drift
|
||||
- the latest landed bounded `Phase 4` packet deliberately continues through the remaining adjacent method-drill authored-history dashboard trio and adds a single method-drill recovery-outcome-history seam, a single method-drill recovery-memory-history seam, and a single method-drill follow-up-history seam over their already-landed status/detail/navigation surfaces, so gameplay/Blueprint callers can inspect each whole retained method-drill history cluster without stitching three adjacent getters together per cluster
|
||||
- with the retained-history text-band lane, the template-launch / preview action-control band, the execution-action-control band, the verification / recognition / review-policy status band, the selected-queue band, the queue scheduling / recovery band, the closure-recovery band, the queue-suppression band, the handoff-history band, the guidance-decision-history band, the template-launch-history band, the method-drill recovery-outcome-history band, the method-drill recovery-memory-history band, and the method-drill follow-up-history band now all closed baseline, the next best clean move is to deliberately choose another adjacent live dashboard consumer band rather than reopen already-landed surfaces by drift
|
||||
- the current execution-discipline rule that broad refactor / monolith-splitting work should not interrupt the active bounded roadmap packet unless structure is actually blocking it
|
||||
|
||||
## Donor portfolio phase taxonomy
|
||||
|
|
|
|||
|
|
@ -0,0 +1,62 @@
|
|||
# HyperTwist Phase 4 dashboard method-drill history trio bands packet
|
||||
|
||||
- bounded Phase `4` dashboard-consumer slice
|
||||
- date: `2026-05-11`
|
||||
|
||||
## Intent
|
||||
|
||||
Continue through the remaining adjacent retained method-drill history dashboard trio and expose the recovery-outcome-history, recovery-memory-history, and follow-up-history clusters as inspectable gameplay and Blueprint seams.
|
||||
|
||||
## Why this packet exists
|
||||
|
||||
`UHyperTwistCoachDashboardWidget` already exposed three adjacent surfaces for each of these retained method-drill history clusters:
|
||||
|
||||
- `GetDisplayedMethodDrillRecoveryOutcomeHistoryStatusInspectSurface()`
|
||||
- `GetDisplayedMethodDrillRecoveryOutcomeHistoryDetailInspectSurface()`
|
||||
- `GetDisplayedMethodDrillRecoveryOutcomeHistoryNavigationInspectSurface()`
|
||||
|
||||
- `GetDisplayedMethodDrillRecoveryMemoryHistoryStatusInspectSurface()`
|
||||
- `GetDisplayedMethodDrillRecoveryMemoryHistoryDetailInspectSurface()`
|
||||
- `GetDisplayedMethodDrillRecoveryMemoryHistoryNavigationInspectSurface()`
|
||||
|
||||
- `GetDisplayedMethodDrillFollowUpHistoryStatusInspectSurface()`
|
||||
- `GetDisplayedMethodDrillFollowUpHistoryDetailInspectSurface()`
|
||||
- `GetDisplayedMethodDrillFollowUpHistoryNavigationInspectSurface()`
|
||||
|
||||
Callers that wanted to reason about any whole retained method-drill history cluster still had to stitch three adjacent getters together manually per cluster.
|
||||
|
||||
## What changed
|
||||
|
||||
- added `FHyperTwistTrainingCoachDashboardMethodDrillRecoveryOutcomeHistoryBandInspectSurface`
|
||||
- added `GetDisplayedMethodDrillRecoveryOutcomeHistoryBandInspectSurface()`
|
||||
- added `FHyperTwistTrainingCoachDashboardMethodDrillRecoveryMemoryHistoryBandInspectSurface`
|
||||
- added `GetDisplayedMethodDrillRecoveryMemoryHistoryBandInspectSurface()`
|
||||
- added `FHyperTwistTrainingCoachDashboardMethodDrillFollowUpHistoryBandInspectSurface`
|
||||
- added `GetDisplayedMethodDrillFollowUpHistoryBandInspectSurface()`
|
||||
- composed each new surface entirely over the already-landed status/detail/navigation surfaces for its corresponding retained method-drill history cluster
|
||||
- kept the packet bounded by avoiding any new backend derivation or new widget-state caching
|
||||
|
||||
## Files
|
||||
|
||||
- `C:\HyperTwist\UnrealHyperTwist\Source\UnrealHyperTwist\Public\HyperTwistTraining\HyperTwistTrainingTypes.h`
|
||||
- `C:\HyperTwist\UnrealHyperTwist\Source\UnrealHyperTwist\Public\HyperTwistTraining\HyperTwistCoachDashboardWidget.h`
|
||||
- `C:\HyperTwist\UnrealHyperTwist\Source\UnrealHyperTwist\Private\HyperTwistTraining\HyperTwistCoachDashboardWidget.cpp`
|
||||
- `C:\HyperTwist\docs\HYPERTWIST_ROADMAP_OVERHAUL_EXPANSION_GUIDE.md`
|
||||
|
||||
## Outcome
|
||||
|
||||
Gameplay and Blueprint callers can now inspect:
|
||||
|
||||
- the whole retained method-drill recovery-outcome-history dashboard band through one surface
|
||||
- the whole retained method-drill recovery-memory-history dashboard band through one surface
|
||||
- the whole retained method-drill follow-up-history dashboard band through one surface
|
||||
- retained recovery outcome posture, retained recovery memory posture, and retained follow-up weighting/posture without stitching three adjacent getters together for each cluster
|
||||
|
||||
## Validation
|
||||
|
||||
- full `Development Editor | Win64` MSBuild on `UnrealHyperTwist.sln`
|
||||
- passed with `0 Warning(s), 0 Error(s)`
|
||||
|
||||
## Next clean slice
|
||||
|
||||
Treat the retained-history text-band lane, the template-launch / preview action-control band, the execution-action-control band, the verification / recognition / review-policy status band, the selected-queue band, the queue scheduling / recovery band, the closure-recovery band, the queue-suppression band, the handoff-history band, the guidance-decision-history band, the template-launch-history band, the method-drill recovery-outcome-history band, the method-drill recovery-memory-history band, and the method-drill follow-up-history band as landed baseline, then deliberately choose another adjacent live dashboard consumer band instead of reopening already-landed surfaces by drift.
|
||||
Loading…
Add table
Reference in a new issue