UNPKG

@rcsb/rcsb-saguaro

Version:
82 lines (81 loc) 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RcsbSelection = void 0; //TODO add a callback for the 'hover' case class RcsbSelection { constructor() { this.selectedElements = new Array(); this.hoverHighlightElements = new Array(); } setSelectionChangeCallback(f) { this.selectionChangeCallback = f; } getSelected(mode) { if (mode == null || mode === 'select') return this.selectedElements; else return this.hoverHighlightElements; } setSelected(elements, mode) { if (mode == null || mode === 'select') { if (elements instanceof Array) { this.selectedElements = elements; } else { this.selectedElements = [elements]; } } else { if (elements instanceof Array) { this.hoverHighlightElements = elements; } else { this.hoverHighlightElements = [elements]; } } this.callback(mode); } addSelected(elements, mode, replaceLast) { if (mode == null || mode === 'select') { if (elements instanceof Array) { this.selectedElements = this.selectedElements.concat(elements); } else { if (replaceLast) this.selectedElements[this.selectedElements.length - 1].rcsbFvTrackDataElement = elements.rcsbFvTrackDataElement; else this.selectedElements.push(elements); } } else { if (elements instanceof Array) { this.hoverHighlightElements = this.selectedElements.concat(elements); } else { this.hoverHighlightElements.push(elements); } } this.callback(mode); } clearSelection(mode) { if (mode == null || mode === 'select') { this.selectedElements = new Array(); } else { this.hoverHighlightElements = new Array(); } this.callback(mode); } reset() { this.selectedElements = new Array(); this.hoverHighlightElements = new Array(); } callback(mode) { if (mode == null || mode === 'select') { if (typeof this.selectionChangeCallback === "function") { this.selectionChangeCallback(this.selectedElements.map(e => e.rcsbFvTrackDataElement)); } } } } exports.RcsbSelection = RcsbSelection;