browse.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. $(function()
  2. {
  3. $('.form-month').datetimepicker($.extend(window.datepickerOptions, {startView: 3, format: 'yyyy-mm', minView: 3}))
  4. var boardID = '';
  5. var onlybody = "onlybody=yes";
  6. $(".kanbanFrame").modalTrigger({type: 'iframe', width: '80%', afterShow:function(){ $('#ajaxModal').data('cancel-reload', true)}, afterHidden: function(){refresh()}});
  7. var $kanban = $('#kanban');
  8. var $kanbanWrapper = $('#kanbanWrapper');
  9. initBoards();
  10. var statusMap =
  11. {
  12. deploy:
  13. {
  14. today : {done: 'finish'},
  15. tomorrow : {done: 'finish'},
  16. thisweek : {done: 'finish'},
  17. thismonth : {done: 'finish'},
  18. done : {today: 'activate', tomorrow: 'activate', thisweek: 'activate', thismonth: 'activate'}
  19. }
  20. };
  21. var lastOperation;
  22. function dropTo(id, from, to, type)
  23. {
  24. if(statusMap[type][from] && statusMap[type][from][to])
  25. {
  26. lastOperation = {id: id, from: from, to: to};
  27. var moveLink = createLink(type, statusMap[type][from][to], 'id=' + id);
  28. moveLink += moveLink.indexOf('?') < 0 ? '?' : '&';
  29. moveLink += onlybody;
  30. new $.zui.ModalTrigger({type: 'iframe', url: moveLink, afterShow:function(){ $('#ajaxModal').data('cancel-reload', true)}, afterHidden: function()
  31. {
  32. refresh();
  33. }}).show();
  34. return true;
  35. }
  36. return false;
  37. }
  38. function initBoards()
  39. {
  40. $('.col-droppable').append('<div class="board-shadow"></div>');
  41. var $boardDeploy = $kanban.find('.board-deploy');
  42. $boardDeploy.droppable(
  43. {
  44. target: '.col-droppable',
  45. flex: true,
  46. before: function(e)
  47. {
  48. if(e.element.find('.dropdown.open').length) return false;
  49. },
  50. start: function(e)
  51. {
  52. e.element.closest('td').addClass('drag-from').closest('tr').addClass('dragging');
  53. $kanban.addClass('dragging').find('.board-item-shadow').height(e.element.outerHeight());
  54. },
  55. drag: function(e)
  56. {
  57. if(e.isNew)
  58. {
  59. var $dargShadow = $('.drag-shadow.board-deploy');
  60. for(var status in statusMap['deploy'])
  61. {
  62. $dargShadow.removeClass('board-deploy-' + status);
  63. }
  64. $dargShadow.addClass('board-deploy-' + e.target.data('id'));
  65. }
  66. },
  67. drop: function(e)
  68. {
  69. if(e.isNew && e.element.closest('tr').data('id') == e.target.closest('tr').data('id'))
  70. {
  71. var result = dropTo(e.element.data('id'), e.element.closest('td').data('id'), e.target.data('id'), 'deploy');
  72. if(result !== false)
  73. {
  74. for(var status in statusMap['deploy'])
  75. {
  76. e.element.removeClass('board-deploy-' + status);
  77. }
  78. e.element.addClass('board-deploy-' + e.target.data('id')).insertBefore(e.target.find('.board-shadow'));
  79. }
  80. }
  81. },
  82. finish: function(e)
  83. {
  84. $kanban.removeClass('dragging drop-in');
  85. $kanbanWrapper.find('tr.dragging').removeClass('dragging').find('.drop-in, .drag-from').removeClass('drop-in drag-from');
  86. }
  87. });
  88. }
  89. var fixH = $("#kanbanHeader").offset().top;
  90. $(window).scroll(function()
  91. {
  92. var scroH = $(this).scrollTop();
  93. if(scroH>=fixH)
  94. {
  95. $("#kanbanHeader").addClass('affix');
  96. $("#kanbanHeader").width($('#kanbanWrapper').width());
  97. }
  98. else if(scroH<fixH)
  99. {
  100. $("#kanbanHeader").removeClass('affix');
  101. $("#kanbanHeader").css('width', '100%');
  102. }
  103. });
  104. });