@attribute [Route(Routes.ASSISTANT_BEYOND_FACTS_LAB)] @inherits MSGComponentBase @* The lab does not inherit AssistantBase, so it sets up the inner scrolling itself, the way the Visual Briefing assistant does. *@
@T("BeyondFacts Lab") @TA("Prepare a challenging appearance as a researcher step by step, e.g., a panel discussion, an interview, or a hearing. Each preparation belongs to one event and has its own steps, chats, and work states.") @TA("Your preparations") @if (this.projects.Count == 0) { @TA("You have no preparations yet. Create one for the event you want to prepare for.") } else { @foreach (var project in this.projects) { @this.ProjectDisplayName(project) @this.ProjectCaption(project) @if (this.projectsWithMissingDetails.Contains(project.ProjectId)) { @T("Details missing") } @if (!project.IsAvailable) { @this.ProjectStatusName(project.Status) } } } @T("New preparation") @if (this.selectedProject is { IsAvailable: false } unavailableProject) { @this.ProjectDisplayName(unavailableProject) @this.ProjectRecoveryMessage(unavailableProject.Status) @T("AI Studio has left the files of this preparation unchanged. A future update may make it accessible again.") @T("Preparation ID"): @unavailableProject.ProjectId.ToString("D") @T("Delete") } else if (this.selectedProject?.Project is { } project) { @* Stays at the top while the person scrolls, like the header of the workspaces: the preparation, its provider, and the steps remain in view, and only the list of preparations scrolls away. The empty anchor before it marks where the header sits in the flow, to scroll back there for another step. *@
@project.Name @if (project.HappenedAtUtc is { } happenedAtUtc) { @string.Format(Culture, T("Marked on {0}."), happenedAtUtc.ToLocalTime().ToString("d", Culture)) } @T("The event has taken place") @T("Rename") @T("Delete") @* The steps have no content of their own: only the navigation of the stepper stays in view, and the step shown follows below. *@ @foreach (var step in BflStep.All) { }
@this.activeStep.Title @this.activeStep.Description @TA("Your details") @if (this.forms.TryGetValue(this.activeStep, out var form)) { var step = this.activeStep; } else { @TA("AI Studio cannot open your details for this step. Their file may be damaged, or a newer version of AI Studio stored it. AI Studio leaves the file unchanged.") }
} else { @TA("Create a preparation to begin.") }