utils.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. Utils = {
  2. error: function(err) {
  3. Session.set('error', (err && err.message || false));
  4. },
  5. // scroll
  6. Scroll: function(selector) {
  7. var $el = $(selector);
  8. return {
  9. top: function(px, add) {
  10. var t = $el.scrollTop();
  11. $el.animate({ scrollTop: (add ? (t + px) : px) });
  12. },
  13. left: function(px, add) {
  14. var l = $el.scrollLeft();
  15. $el.animate({ scrollLeft: (add ? (l + px) : px) });
  16. }
  17. };
  18. },
  19. // XXX We should remove these two methods
  20. goBoardId: function(_id) {
  21. var board = Boards.findOne(_id);
  22. return board && Router.go('Board', {
  23. _id: board._id,
  24. slug: board.slug
  25. });
  26. },
  27. goCardId: function(_id) {
  28. var card = Cards.findOne(_id);
  29. var board = Boards.findOne(card.boardId);
  30. return board && Router.go('Card', {
  31. cardId: card._id,
  32. boardId: board._id,
  33. slug: board.slug
  34. });
  35. },
  36. capitalize: function(string) {
  37. return string.charAt(0).toUpperCase() + string.slice(1);
  38. },
  39. getLabelIndex: function(boardId, labelId) {
  40. var board = Boards.findOne(boardId);
  41. var labels = {};
  42. _.each(board.labels, function(a, b) {
  43. labels[a._id] = b;
  44. });
  45. return {
  46. index: labels[labelId],
  47. key: function(key) {
  48. return 'labels.' + labels[labelId] + '.' + key;
  49. }
  50. };
  51. },
  52. // Determine the new sort index
  53. getSortIndex: function(prevCardDomElement, nextCardDomElement) {
  54. // If we drop the card to an empty column
  55. if (! prevCardDomElement && ! nextCardDomElement) {
  56. return 0;
  57. // If we drop the card in the first position
  58. } else if (! prevCardDomElement) {
  59. return Blaze.getData(nextCardDomElement).sort - 1;
  60. // If we drop the card in the last position
  61. } else if (! nextCardDomElement) {
  62. return Blaze.getData(prevCardDomElement).sort + 1;
  63. }
  64. // In the general case take the average of the previous and next element
  65. // sort indexes.
  66. else {
  67. var prevSortIndex = Blaze.getData(prevCardDomElement).sort;
  68. var nextSortIndex = Blaze.getData(nextCardDomElement).sort;
  69. return (prevSortIndex + nextSortIndex) / 2;
  70. }
  71. }
  72. };