molstar
Version:
A comprehensive macromolecular library.
64 lines (63 loc) • 2.6 kB
JavaScript
/**
* Copyright (c) 2017-2022 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.mergeFilters = exports.ListCol = exports.MatrixCol = exports.VectorCol = exports.EnumCol = exports.CoordCol = exports.FloatCol = exports.StrCol = exports.IntCol = void 0;
function IntCol(description) { return { type: 'int', description: description }; }
exports.IntCol = IntCol;
function StrCol(description) { return { type: 'str', description: description }; }
exports.StrCol = StrCol;
function FloatCol(description) { return { type: 'float', description: description }; }
exports.FloatCol = FloatCol;
function CoordCol(description) { return { type: 'coord', description: description }; }
exports.CoordCol = CoordCol;
function EnumCol(values, subType, description) {
return { type: 'enum', description: description, values: values, subType: subType };
}
exports.EnumCol = EnumCol;
function VectorCol(length, description) {
return { type: 'vector', description: description, length: length };
}
exports.VectorCol = VectorCol;
function MatrixCol(columns, rows, description) {
return { type: 'matrix', description: description, columns: columns, rows: rows };
}
exports.MatrixCol = MatrixCol;
function ListCol(subType, separator, description) {
return { type: 'list', description: description, separator: separator, subType: subType };
}
exports.ListCol = ListCol;
function mergeFilters() {
var filters = [];
for (var _i = 0; _i < arguments.length; _i++) {
filters[_i] = arguments[_i];
}
var n = filters.length;
var mergedFilter = {};
var fields = new Map();
filters.forEach(function (filter) {
Object.keys(filter).forEach(function (category) {
Object.keys(filter[category]).forEach(function (field) {
var key = "".concat(category, ".").concat(field);
var value = fields.get(key) || 0;
fields.set(key, value + 1);
});
});
});
fields.forEach(function (v, k) {
if (v !== n)
return;
var _a = k.split('.'), categoryName = _a[0], fieldName = _a[1];
if (categoryName in mergedFilter) {
mergedFilter[categoryName][fieldName] = true;
}
else {
mergedFilter[categoryName] = { fieldName: true };
}
});
return mergedFilter;
}
exports.mergeFilters = mergeFilters;
;