MCPcopy
hub / github.com/ocsjs/ocsjs / commonWork

Function commonWork

packages/scripts/src/utils/work.ts:11–143  ·  view source on GitHub ↗
(
	script: Script,
	options: {
		start_delay_seconds?: number;
		enable_control_panel?: boolean;
		workerProvider: (opts: CommonWorkOptions) => CommonEventEmitter<WorkerEvents> | undefined;
		beforeRunning?: () => void | Promise<void>;
		onRestart?: () => void | Promise<void>;
		onWorkerCreated?: (worker: CommonEventEmitter<WorkerEvents>) => void | Promise<void>;
	}
)

Source from the content-addressed store, hash-verified

9 * 通用作业考试工具方法
10 */
11export function commonWork(
12 script: Script,
13 options: {
14 start_delay_seconds?: number;
15 enable_control_panel?: boolean;
16 workerProvider: (opts: CommonWorkOptions) => CommonEventEmitter<WorkerEvents> | undefined;
17 beforeRunning?: () => void | Promise<void>;
18 onRestart?: () => void | Promise<void>;
19 onWorkerCreated?: (worker: CommonEventEmitter<WorkerEvents>) => void | Promise<void>;
20 }
21) {
22 // 置顶当前脚本
23 CommonProject.scripts.render.methods.pin(script);
24 let worker: CommonEventEmitter<WorkerEvents> | undefined;
25
26 /**
27 * 是否已经按下了开始按钮
28 */
29 let startBtnPressed = false;
30 /**
31 * 是否检查失败
32 */
33 let checkFailed = false;
34
35 /**
36 * 是否正在运行
37 */
38 let running = false;
39
40 /** 显示答题控制按钮 */
41 const createWorkControlPanel = () => {
42 const { controlBtn, restartBtn, startBtn } = createWorkerControl({
43 workerProvider: () => worker,
44 onStart: async () => {
45 startBtnPressed = true;
46 if (checkMessage instanceof MessageElement) {
47 checkMessage.remove();
48 }
49 await closeAnswerWrapperEmptyWarning();
50 start();
51 },
52 onRestart: async () => {
53 worker?.emit('close');
54 await options.onRestart?.();
55 start();
56 }
57 });
58
59 startBtn.style.flex = '1';
60 startBtn.style.padding = '4px';
61 restartBtn.style.flex = '1';
62 restartBtn.style.padding = '4px';
63 controlBtn.style.flex = '1';
64 controlBtn.style.padding = '4px';
65
66 const container = h(
67 'div',
68 { style: { marginTop: '12px', display: 'flex' } },

Callers 6

oncompleteFunction · 0.90
startFunction · 0.90
oncompleteFunction · 0.90
methodsFunction · 0.90
methodsFunction · 0.90
oncompleteFunction · 0.90

Calls 4

createWorkControlPanelFunction · 0.85
workResultPanelFunction · 0.85
workPreCheckMessageFunction · 0.85
startFunction · 0.70

Tested by

no test coverage detected