utils.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. Warning: {
  20. get: function() {
  21. return Session.get('warning');
  22. },
  23. open: function(desc) {
  24. Session.set('warning', { desc: desc });
  25. },
  26. close: function() {
  27. Session.set('warning', false);
  28. }
  29. },
  30. // XXX We should remove these two methods
  31. goBoardId: function(_id) {
  32. var board = Boards.findOne(_id);
  33. return board && Router.go('Board', {
  34. _id: board._id,
  35. slug: board.slug
  36. });
  37. },
  38. goCardId: function(_id) {
  39. var card = Cards.findOne(_id);
  40. var board = Boards.findOne(card.boardId);
  41. return board && Router.go('Card', {
  42. cardId: card._id,
  43. boardId: board._id,
  44. slug: board.slug
  45. });
  46. },
  47. liveEvent: function(events, callback) {
  48. $(document).on(events, function() {
  49. callback($(this));
  50. });
  51. },
  52. capitalize: function(string) {
  53. return string.charAt(0).toUpperCase() + string.slice(1);
  54. },
  55. getLabelIndex: function(boardId, labelId) {
  56. var board = Boards.findOne(boardId);
  57. var labels = {};
  58. _.each(board.labels, function(a, b) {
  59. labels[a._id] = b;
  60. });
  61. return {
  62. index: labels[labelId],
  63. key: function(key) {
  64. return 'labels.' + labels[labelId] + '.' + key;
  65. }
  66. };
  67. },
  68. // Determine the new sort index
  69. getSortIndex: function(prevCardDomElement, nextCardDomElement) {
  70. // If we drop the card to an empty column
  71. if (! prevCardDomElement && ! nextCardDomElement) {
  72. return 0;
  73. // If we drop the card in the first position
  74. } else if (! prevCardDomElement) {
  75. return Blaze.getData(nextCardDomElement).sort - 1;
  76. // If we drop the card in the last position
  77. } else if (! nextCardDomElement) {
  78. return Blaze.getData(prevCardDomElement).sort + 1;
  79. }
  80. // In the general case take the average of the previous and next element
  81. // sort indexes.
  82. else {
  83. var prevSortIndex = Blaze.getData(prevCardDomElement).sort;
  84. var nextSortIndex = Blaze.getData(nextCardDomElement).sort;
  85. return (prevSortIndex + nextSortIndex) / 2;
  86. }
  87. }
  88. };