molstar
Version:
A comprehensive macromolecular library.
52 lines (51 loc) • 2.14 kB
JavaScript
/**
* Copyright (c) 2017-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
export function IntCol(description) { return { type: 'int', description: description }; }
export function StrCol(description) { return { type: 'str', description: description }; }
export function FloatCol(description) { return { type: 'float', description: description }; }
export function CoordCol(description) { return { type: 'coord', description: description }; }
export function EnumCol(values, subType, description) {
return { type: 'enum', description: description, values: values, subType: subType };
}
export function VectorCol(length, description) {
return { type: 'vector', description: description, length: length };
}
export function MatrixCol(columns, rows, description) {
return { type: 'matrix', description: description, columns: columns, rows: rows };
}
export function ListCol(subType, separator, description) {
return { type: 'list', description: description, separator: separator, subType: subType };
}
export 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;
}