UNPKG

molstar

Version:

A comprehensive macromolecular library.

221 lines (220 loc) 9.54 kB
"use strict"; /** * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.logP = exports.abortingObserver = exports.ms = exports.testTree = exports.abortAfter = exports.test1 = void 0; var tslib_1 = require("tslib"); var mol_task_1 = require("../mol-task"); var now_1 = require("../mol-util/now"); function test1() { return tslib_1.__awaiter(this, void 0, void 0, function () { var t, r; var _this = this; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: t = mol_task_1.Task.create('test', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2 /*return*/, 1]; }); }); }); return [4 /*yield*/, t.run()]; case 1: r = _a.sent(); console.log(r); return [2 /*return*/]; } }); }); } exports.test1 = test1; function messageTree(root, prefix) { if (prefix === void 0) { prefix = ''; } var p = root.progress; if (!root.children.length) { if (p.isIndeterminate) return "".concat(prefix).concat(p.taskName, ": ").concat(p.message); return "".concat(prefix).concat(p.taskName, ": [").concat(p.current, "/").concat(p.max, "] ").concat(p.message); } var newPrefix = prefix + ' |_ '; var subTree = root.children.map(function (c) { return messageTree(c, newPrefix); }); if (p.isIndeterminate) return "".concat(prefix).concat(p.taskName, ": ").concat(p.message, "\n").concat(subTree.join('\n')); return "".concat(prefix).concat(p.taskName, ": [").concat(p.current, "/").concat(p.max, "] ").concat(p.message, "\n").concat(subTree.join('\n')); } function createTask(delayMs, r) { var _this = this; return mol_task_1.Task.create('delayed value ' + r, function (ctx) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: ctx.update("Processing delayed ".concat(r, " after ").concat(delayMs, "ms"), true); return [4 /*yield*/, mol_task_1.Scheduler.delay(delayMs)]; case 1: _a.sent(); if (!ctx.shouldUpdate) return [3 /*break*/, 3]; return [4 /*yield*/, ctx.update({ message: "hello from delayed ".concat(r, " ").concat(delayMs) })]; case 2: _a.sent(); _a.label = 3; case 3: return [2 /*return*/, r]; } }); }); }, function () { return console.log('On abort called ' + r); }); } function abortAfter(delay) { var _this = this; return mol_task_1.Task.create('abort after ' + delay, function (ctx) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, mol_task_1.Scheduler.delay(delay)]; case 1: _a.sent(); throw mol_task_1.Task.Aborted('test'); } }); }); }); } exports.abortAfter = abortAfter; function testTree() { var _this = this; return mol_task_1.Task.create('test o', function (ctx) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var c1, c2, c3, r, _a, _b; return tslib_1.__generator(this, function (_c) { switch (_c.label) { case 0: return [4 /*yield*/, mol_task_1.Scheduler.delay(250)]; case 1: _c.sent(); if (!ctx.shouldUpdate) return [3 /*break*/, 3]; return [4 /*yield*/, ctx.update({ message: 'hi! 1' })]; case 2: _c.sent(); _c.label = 3; case 3: return [4 /*yield*/, mol_task_1.Scheduler.delay(125)]; case 4: _c.sent(); if (!ctx.shouldUpdate) return [3 /*break*/, 6]; return [4 /*yield*/, ctx.update({ message: 'hi! 2' })]; case 5: _c.sent(); _c.label = 6; case 6: return [4 /*yield*/, mol_task_1.Scheduler.delay(250)]; case 7: _c.sent(); if (!ctx.shouldUpdate) return [3 /*break*/, 9]; return [4 /*yield*/, ctx.update('hi! 3')]; case 8: _c.sent(); _c.label = 9; case 9: c1 = createTask(250, 1).runAsChild(ctx); c2 = createTask(500, 2).runAsChild(ctx); c3 = createTask(750, 3).runAsChild(ctx); return [4 /*yield*/, c1]; case 10: _a = (_c.sent()); return [4 /*yield*/, c2]; case 11: _b = _a + (_c.sent()); return [4 /*yield*/, c3]; case 12: r = _b + (_c.sent()); if (!ctx.shouldUpdate) return [3 /*break*/, 14]; return [4 /*yield*/, ctx.update({ message: 'Almost done...' })]; case 13: _c.sent(); _c.label = 14; case 14: return [2 /*return*/, r + 1]; } }); }); }, function () { return console.log('On abort O'); }); } exports.testTree = testTree; function processChunk(n, state) { var toProcess = Math.min(state.current + n, state.total); var start = state.current; for (var i = start; i < toProcess; i++) { for (var j = 0; j < 1000000; j++) { state.i += (i * j + 1 + state.i) % 1023; state.i = state.i % 1000; } } state.current = toProcess; return toProcess - start; } exports.ms = (0, mol_task_1.MultistepTask)('ms-task', ['step 1', 'step 2', 'step 3'], function (p, step, ctx) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var child; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, step(0)]; case 1: _a.sent(); child = mol_task_1.Task.create('chunked', function (ctx) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var s; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, (0, mol_task_1.chunkedSubtask)(ctx, 25, { i: 0, current: 0, total: 125 }, processChunk, function (ctx, s, p) { return ctx.update('chunk test ' + p); })]; case 1: s = _a.sent(); return [2 /*return*/, s.i]; } }); }); }); return [4 /*yield*/, child.runAsChild(ctx)]; case 2: _a.sent(); return [4 /*yield*/, mol_task_1.Scheduler.delay(250)]; case 3: _a.sent(); return [4 /*yield*/, step(1)]; case 4: _a.sent(); return [4 /*yield*/, (0, mol_task_1.chunkedSubtask)(ctx, 25, { i: 0, current: 0, total: 80 }, processChunk, function (ctx, s, p) { return ctx.update('chunk test ' + p); })]; case 5: _a.sent(); return [4 /*yield*/, mol_task_1.Scheduler.delay(250)]; case 6: _a.sent(); return [4 /*yield*/, step(2)]; case 7: _a.sent(); return [4 /*yield*/, mol_task_1.Scheduler.delay(250)]; case 8: _a.sent(); return [2 /*return*/, p.i + 3]; } }); }); }); function abortingObserver(p) { console.log(messageTree(p.root)); if ((0, now_1.now)() - p.root.progress.startedTime > 1000) { p.requestAbort('test'); } } exports.abortingObserver = abortingObserver; function logP(p) { console.log(messageTree(p.root)); } exports.logP = logP; function test() { return tslib_1.__awaiter(this, void 0, void 0, function () { var m, e_1; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); return [4 /*yield*/, testTree().run(abortingObserver, 50)]; case 1: m = _a.sent(); console.log(m); return [3 /*break*/, 3]; case 2: e_1 = _a.sent(); console.error(e_1); return [3 /*break*/, 3]; case 3: return [2 /*return*/]; } }); }); } test(); // testObs();