| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import { ReactiveCache } from '/imports/reactiveCache';
- BoardMultiSelection = {
- _selectedBoards: new ReactiveVar([]),
- _isActive: new ReactiveVar(false),
- reset() {
- this._selectedBoards.set([]);
- },
- isActive() {
- return this._isActive.get();
- },
- count() {
- return this._selectedBoards.get().length;
- },
- isEmpty() {
- return this.count() === 0;
- },
- getSelectedBoardIds() {
- return this._selectedBoards.get();
- },
- activate() {
- if (!this.isActive()) {
- this._isActive.set(true);
- Tracker.flush();
- }
- },
- disable() {
- if (this.isActive()) {
- this._isActive.set(false);
- this.reset();
- }
- },
- add(boardIds) {
- return this.toggle(boardIds, { add: true, remove: false });
- },
- remove(boardIds) {
- return this.toggle(boardIds, { add: false, remove: true });
- },
- toogle(boardIds) {
- return this.toggle(boardIds, { add: true, remove: true });
- },
- toggle(boardIds, { add, remove } = {}) {
- boardIds = _.isString(boardIds) ? [boardIds] : boardIds;
- let selectedBoards = this._selectedBoards.get();
- boardIds.forEach(boardId => {
- const index = selectedBoards.indexOf(boardId);
- if (index > -1 && remove) {
- selectedBoards = selectedBoards.filter(id => id !== boardId);
- } else if (index === -1 && add) {
- selectedBoards.push(boardId);
- }
- });
- this._selectedBoards.set(selectedBoards);
- },
- isSelected(boardId) {
- return this._selectedBoards.get().includes(boardId);
- },
- };
|