72 lines
1.5 KiB
TypeScript
72 lines
1.5 KiB
TypeScript
import { Stat } from "@/interfaces/user";
|
|
|
|
export interface ITrainingContent {
|
|
id: string;
|
|
created_at: number;
|
|
user: string;
|
|
exams: {
|
|
id: string;
|
|
date: number;
|
|
detailed_summary: string;
|
|
performance_comment: string;
|
|
score: number;
|
|
module: string;
|
|
stat_ids: string[];
|
|
stats?: Stat[];
|
|
}[];
|
|
tip_ids: string[];
|
|
tips?: ITrainingTip[];
|
|
weak_areas: {
|
|
area: string;
|
|
comment: string;
|
|
}[];
|
|
}
|
|
|
|
export interface ITrainingTip {
|
|
id: string;
|
|
tipCategory: string;
|
|
tipHtml: string;
|
|
standalone: boolean;
|
|
exercise?: {
|
|
question: string;
|
|
additional?: string;
|
|
segments: WalkthroughConfigs[]
|
|
}
|
|
}
|
|
|
|
export interface WalkthroughConfigs {
|
|
html: string;
|
|
wordDelay: number;
|
|
holdDelay: number;
|
|
highlight?: HighlightConfig[];
|
|
insertHTML?: InsertHtmlConfig[];
|
|
}
|
|
|
|
export type HighlightTarget = 'question' | 'additional' | 'segment' | 'all';
|
|
|
|
export interface HighlightConfig {
|
|
targets: HighlightTarget[];
|
|
phrases: string[];
|
|
}
|
|
|
|
export interface InsertHtmlConfig {
|
|
target: 'question' | 'additional' | 'segment';
|
|
targetId: string;
|
|
html: string;
|
|
position: 'append' | 'prepend' | 'replace';
|
|
}
|
|
|
|
|
|
export interface TimelineEvent {
|
|
type: 'text' | 'highlight' | 'insert';
|
|
start: number;
|
|
end: number;
|
|
segmentIndex: number;
|
|
content?: HighlightConfig[] | InsertHtmlConfig[];
|
|
}
|
|
|
|
export interface SegmentRef extends WalkthroughConfigs {
|
|
words: string[];
|
|
startTime: number;
|
|
endTime: number;
|
|
} |