| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | Utils = {  // XXX We should remove these two methods  goBoardId(_id) {    const board = Boards.findOne(_id);    return board && FlowRouter.go('board', {      id: board._id,      slug: board.slug,    });  },  goCardId(_id) {    const card = Cards.findOne(_id);    const board = Boards.findOne(card.boardId);    return board && FlowRouter.go('card', {      cardId: card._id,      boardId: board._id,      slug: board.slug,    });  },  capitalize(string) {    return string.charAt(0).toUpperCase() + string.slice(1);  },  // Determine the new sort index  calculateIndex(prevCardDomElement, nextCardDomElement, nCards = 1) {    let base, increment;    // If we drop the card to an empty column    if (!prevCardDomElement && !nextCardDomElement) {      base = 0;      increment = 1;    // If we drop the card in the first position    } else if (!prevCardDomElement) {      base = Blaze.getData(nextCardDomElement).sort - 1;      increment = -1;    // If we drop the card in the last position    } else if (!nextCardDomElement) {      base = Blaze.getData(prevCardDomElement).sort + 1;      increment = 1;    }    // In the general case take the average of the previous and next element    // sort indexes.    else {      const prevSortIndex = Blaze.getData(prevCardDomElement).sort;      const nextSortIndex = Blaze.getData(nextCardDomElement).sort;      increment = (nextSortIndex - prevSortIndex) / (nCards + 1);      base = prevSortIndex + increment;    }    // XXX Return a generator that yield values instead of a base with a    // increment number.    return {      base,      increment,    };  },};
 |