rewrite subtitle rendering engine
This commit is contained in:
@@ -3,7 +3,7 @@ import {
|
||||
} from "./pythagoras_client";
|
||||
import { ScrollingTextBox } from "./scrolling_textbox";
|
||||
import { dict, IDLE_LOGOS, QUESTION_LINK, QUESTION_QR } from "./settings";
|
||||
import { el, sleep, wait_for_dom_refresh } from "./tools";
|
||||
import { AsyncRunner, el, sleep, wait_for_dom_refresh } from "./tools";
|
||||
|
||||
interface PresentationScreen {
|
||||
prepare(): Promise<void>;
|
||||
@@ -67,23 +67,25 @@ export class PresentationManager {
|
||||
|
||||
class MainScreen implements PresentationScreen {
|
||||
private dom_root: HTMLDivElement;
|
||||
private subs_english: ScrollingTextBox;
|
||||
private subs_czech: ScrollingTextBox;
|
||||
private subs_english: AsyncRunner<ScrollingTextBox>;
|
||||
private subs_czech: AsyncRunner<ScrollingTextBox>;
|
||||
private dom_question: HTMLDivElement;
|
||||
private dom_question_link: HTMLDivElement;
|
||||
private question_insert: HTMLParagraphElement;
|
||||
|
||||
public constructor() {
|
||||
this.subs_english = new ScrollingTextBox();
|
||||
this.subs_czech = new ScrollingTextBox();
|
||||
const subs_en = new ScrollingTextBox();
|
||||
const subs_cz = new ScrollingTextBox();
|
||||
this.subs_english = new AsyncRunner(subs_en);
|
||||
this.subs_czech = new AsyncRunner(subs_cz);
|
||||
this.question_insert = el.p("");
|
||||
this.dom_question_link = el.div([el.h1(QUESTION_LINK)], ["link"]);
|
||||
this.dom_question = el.div([this.dom_question_link, this.question_insert], ["question"]);
|
||||
this.dom_root = el.div([
|
||||
this.dom_question,
|
||||
el.div([
|
||||
el.div([this.subs_english.dom], ["lang"]),
|
||||
el.div([this.subs_czech.dom], ["lang"]),
|
||||
el.div([subs_en.dom], ["lang"]),
|
||||
el.div([subs_cz.dom], ["lang"]),
|
||||
], ["subtitles"]),
|
||||
], ["main"]);
|
||||
}
|
||||
@@ -117,13 +119,19 @@ class MainScreen implements PresentationScreen {
|
||||
public async serve(trigger: PythagorasIncomingMessage): Promise<void> {
|
||||
switch (trigger.type) {
|
||||
case PythagorasIncomingMessageType.SubEnUpdateCur:
|
||||
await this.subs_english.update_current(trigger.text);
|
||||
this.subs_english.run((target: ScrollingTextBox) => {
|
||||
return target.update_current(trigger.text)
|
||||
});
|
||||
break;
|
||||
case PythagorasIncomingMessageType.SubEnSubmit:
|
||||
await this.subs_english.finish_line(trigger.text);
|
||||
this.subs_english.run((target: ScrollingTextBox) => {
|
||||
return target.finish_current(trigger.text);
|
||||
});
|
||||
break;
|
||||
case PythagorasIncomingMessageType.SubCzSubmit:
|
||||
await this.subs_czech.add_line(trigger.text);
|
||||
this.subs_czech.run((target: ScrollingTextBox) => {
|
||||
return target.add_line(trigger.text);
|
||||
});
|
||||
break;
|
||||
case PythagorasIncomingMessageType.SelectedMessage:
|
||||
if (trigger.message === null) { this.hide_question(); }
|
||||
|
Reference in New Issue
Block a user