molstar
Version:
A comprehensive macromolecular library.
151 lines • 9.06 kB
JavaScript
"use strict";
/**
* Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.DownloadFile = exports.OpenFiles = void 0;
var tslib_1 = require("tslib");
var mol_state_1 = require("../../mol-state");
var mol_task_1 = require("../../mol-task");
var file_info_1 = require("../../mol-util/file-info");
var param_definition_1 = require("../../mol-util/param-definition");
var objects_1 = require("../objects");
exports.OpenFiles = mol_state_1.StateAction.build({
display: { name: 'Open Files', description: 'Load one or more files and optionally create default visuals' },
from: objects_1.PluginStateObject.Root,
params: function (a, ctx) {
var _a = ctx.dataFormats, extensions = _a.extensions, options = _a.options;
return {
files: param_definition_1.ParamDefinition.FileList({ accept: Array.from(extensions.values()).map(function (e) { return "." + e; }).join(',') + ',.gz,.zip', multiple: true }),
format: param_definition_1.ParamDefinition.MappedStatic('auto', {
auto: param_definition_1.ParamDefinition.EmptyGroup(),
specific: param_definition_1.ParamDefinition.Select(options[0][0], options)
}),
visuals: param_definition_1.ParamDefinition.Boolean(true, { description: 'Add default visuals' }),
};
}
})(function (_a, plugin) {
var params = _a.params, state = _a.state;
return mol_task_1.Task.create('Open Files', function (taskCtx) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0:
plugin.behaviors.layout.leftPanelTabName.next('data');
return [4 /*yield*/, state.transaction(function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
var _i, _a, file, info, isBinary, data, provider, parsed, e_1;
var _b, _c;
return (0, tslib_1.__generator)(this, function (_d) {
switch (_d.label) {
case 0:
if (params.files === null) {
plugin.log.error('No file(s) selected');
return [2 /*return*/];
}
_i = 0, _a = params.files;
_d.label = 1;
case 1:
if (!(_i < _a.length)) return [3 /*break*/, 9];
file = _a[_i];
_d.label = 2;
case 2:
_d.trys.push([2, 7, , 8]);
info = (0, file_info_1.getFileInfo)(file.file);
isBinary = plugin.dataFormats.binaryExtensions.has(info.ext);
return [4 /*yield*/, plugin.builders.data.readFile({ file: file, isBinary: isBinary })];
case 3:
data = (_d.sent()).data;
provider = params.format.name === 'auto'
? plugin.dataFormats.auto(info, (_b = data.cell) === null || _b === void 0 ? void 0 : _b.obj)
: plugin.dataFormats.get(params.format.params);
if (!provider) {
plugin.log.warn("OpenFiles: could not find data provider for '" + info.name + "." + info.ext + "'");
return [3 /*break*/, 8];
}
return [4 /*yield*/, provider.parse(plugin, data)];
case 4:
parsed = _d.sent();
if (!params.visuals) return [3 /*break*/, 6];
return [4 /*yield*/, ((_c = provider.visuals) === null || _c === void 0 ? void 0 : _c.call(provider, plugin, parsed))];
case 5:
_d.sent();
_d.label = 6;
case 6: return [3 /*break*/, 8];
case 7:
e_1 = _d.sent();
plugin.log.error(e_1);
return [3 /*break*/, 8];
case 8:
_i++;
return [3 /*break*/, 1];
case 9: return [2 /*return*/];
}
});
}); }).runInContext(taskCtx)];
case 1:
_a.sent();
return [2 /*return*/];
}
});
}); });
});
exports.DownloadFile = mol_state_1.StateAction.build({
display: { name: 'Download File', description: 'Load one or more file from an URL' },
from: objects_1.PluginStateObject.Root,
params: function (a, ctx) {
var options = ctx.dataFormats.options;
return {
url: param_definition_1.ParamDefinition.Url(''),
format: param_definition_1.ParamDefinition.Select(options[0][0], options),
isBinary: param_definition_1.ParamDefinition.Boolean(false),
visuals: param_definition_1.ParamDefinition.Boolean(true, { description: 'Add default visuals' }),
};
}
})(function (_a, plugin) {
var params = _a.params, state = _a.state;
return mol_task_1.Task.create('Open Files', function (taskCtx) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0:
plugin.behaviors.layout.leftPanelTabName.next('data');
return [4 /*yield*/, state.transaction(function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
var provider, data, parsed, e_2;
var _a;
return (0, tslib_1.__generator)(this, function (_b) {
switch (_b.label) {
case 0:
_b.trys.push([0, 5, , 6]);
provider = plugin.dataFormats.get(params.format);
if (!provider) {
plugin.log.warn("DownloadFile: could not find data provider for '" + params.format + "'");
return [2 /*return*/];
}
return [4 /*yield*/, plugin.builders.data.download({ url: params.url, isBinary: params.isBinary })];
case 1:
data = _b.sent();
return [4 /*yield*/, provider.parse(plugin, data)];
case 2:
parsed = _b.sent();
if (!params.visuals) return [3 /*break*/, 4];
return [4 /*yield*/, ((_a = provider.visuals) === null || _a === void 0 ? void 0 : _a.call(provider, plugin, parsed))];
case 3:
_b.sent();
_b.label = 4;
case 4: return [3 /*break*/, 6];
case 5:
e_2 = _b.sent();
plugin.log.error(e_2);
return [3 /*break*/, 6];
case 6: return [2 /*return*/];
}
});
}); }).runInContext(taskCtx)];
case 1:
_a.sent();
return [2 /*return*/];
}
});
}); });
});
//# sourceMappingURL=file.js.map