|
|
@ -8,7 +8,7 @@ import {
|
|
|
|
import { RecordDoc, Tdoc } from '../interface';
|
|
|
|
import { RecordDoc, Tdoc } from '../interface';
|
|
|
|
import { PERM, PRIV, STATUS } from '../model/builtin';
|
|
|
|
import { PERM, PRIV, STATUS } from '../model/builtin';
|
|
|
|
import * as contest from '../model/contest';
|
|
|
|
import * as contest from '../model/contest';
|
|
|
|
import problem from '../model/problem';
|
|
|
|
import problem, { ProblemDoc } from '../model/problem';
|
|
|
|
import record from '../model/record';
|
|
|
|
import record from '../model/record';
|
|
|
|
import { langs } from '../model/setting';
|
|
|
|
import { langs } from '../model/setting';
|
|
|
|
import storage from '../model/storage';
|
|
|
|
import storage from '../model/storage';
|
|
|
@ -318,6 +318,7 @@ class RecordMainConnectionHandler extends ConnectionHandler {
|
|
|
|
|
|
|
|
|
|
|
|
class RecordDetailConnectionHandler extends ConnectionHandler {
|
|
|
|
class RecordDetailConnectionHandler extends ConnectionHandler {
|
|
|
|
cleanup: bus.Disposable = () => { };
|
|
|
|
cleanup: bus.Disposable = () => { };
|
|
|
|
|
|
|
|
pdoc: ProblemDoc;
|
|
|
|
rid: string = '';
|
|
|
|
rid: string = '';
|
|
|
|
disconnectTimeout: NodeJS.Timeout;
|
|
|
|
disconnectTimeout: NodeJS.Timeout;
|
|
|
|
throttleSend: any;
|
|
|
|
throttleSend: any;
|
|
|
@ -351,6 +352,7 @@ class RecordDetailConnectionHandler extends ConnectionHandler {
|
|
|
|
if (!problem.canViewBy(pdoc, this.user)) throw new PermissionError(PERM.PERM_VIEW_PROBLEM_HIDDEN);
|
|
|
|
if (!problem.canViewBy(pdoc, this.user)) throw new PermissionError(PERM.PERM_VIEW_PROBLEM_HIDDEN);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.pdoc = pdoc;
|
|
|
|
this.throttleSend = throttle(this.sendUpdate, 1000, { trailing: true });
|
|
|
|
this.throttleSend = throttle(this.sendUpdate, 1000, { trailing: true });
|
|
|
|
this.rid = rid.toString();
|
|
|
|
this.rid = rid.toString();
|
|
|
|
this.cleanup = bus.on('record/change', this.onRecordChange.bind(this));
|
|
|
|
this.cleanup = bus.on('record/change', this.onRecordChange.bind(this));
|
|
|
@ -359,8 +361,8 @@ class RecordDetailConnectionHandler extends ConnectionHandler {
|
|
|
|
|
|
|
|
|
|
|
|
async sendUpdate(rdoc: RecordDoc) {
|
|
|
|
async sendUpdate(rdoc: RecordDoc) {
|
|
|
|
this.send({
|
|
|
|
this.send({
|
|
|
|
status_html: await this.renderHTML('record_detail_status.html', { rdoc }),
|
|
|
|
status_html: await this.renderHTML('record_detail_status.html', { rdoc, pdoc: this.pdoc }),
|
|
|
|
summary_html: await this.renderHTML('record_detail_summary.html', { rdoc }),
|
|
|
|
summary_html: await this.renderHTML('record_detail_summary.html', { rdoc, pdoc: this.pdoc }),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|