common.ui.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. window.updateKanbanRegion = function(regionID, kanbanData)
  2. {
  3. if(!regionID || !kanbanData) return;
  4. $('.kanban-list').zui('kanbanlist').$.getKanban(regionID).update(kanbanData);
  5. }
  6. window.changeSpaceType = function()
  7. {
  8. const type = $('[name=type]:checked').val();
  9. $('.ownerBox').toggleClass('hidden', type == 'private');
  10. $('.teamBox').toggleClass('hidden', type == 'private');
  11. $('.whitelistBox').toggleClass('hidden', type != 'private');
  12. }
  13. window.changeKanban = function()
  14. {
  15. const targetID = $('[name=kanban]').val();
  16. const url = $.createLink('kanban', methodName, 'kanbanID=' + kanbanID + '&regionID=' + regionID + '&groupID=' + groupID + '&columnID=' + columnID + '&targetID=' + targetID);
  17. loadPartial(url, '#cardForm');
  18. }
  19. window.changeProduct = function()
  20. {
  21. const targetID = $('[name=product]').val();
  22. const url = $.createLink('kanban', methodName, 'kanbanID=' + kanbanID + '&regionID=' + regionID + '&groupID=' + groupID + '&columnID=' + columnID + '&targetID=' + targetID);
  23. loadPartial(url, '#linkForm');
  24. }
  25. window.changeProject = function()
  26. {
  27. const targetID = $('[name=project]').val();
  28. const url = $.createLink('kanban', methodName, 'kanbanID=' + kanbanID + '&regionID=' + regionID + '&groupID=' + groupID + '&columnID=' + columnID + '&targetID=' + targetID);
  29. loadPartial(url, '#linkForm');
  30. }
  31. window.changeKanbanType = function()
  32. {
  33. const type = $('[name=type]:checked').val();
  34. const url = $.createLink('kanban', 'create', 'spaceID=' + spaceID + '&type=' + type);
  35. loadPartial(url, '#WIPCountBox, #spaceBox, #nameBox, #ownerBox, #teamBox, #fixedColBox, #autoColBox, #archiveBox, #manageProgressBox, #alignmentBox, #descBox, #whitelistBox', {success: function()
  36. {
  37. setTimeout(function()
  38. {
  39. const copySpaceID = $('#spaceBox input[name=space]').val();
  40. $('#spaceBox input[name=space]').zui('picker').$.setValue(copySpaceID);
  41. }, 10)
  42. }});
  43. }
  44. window.loadAllUsers = function()
  45. {
  46. const link = $.createLink('kanban', 'ajaxLoadUsers', 'spaceID=0&field=owner&type=all');
  47. $.getJSON(link, function(data)
  48. {
  49. $('[name=owner]').zui('picker').render({items: data});
  50. });
  51. }
  52. window.changeKanbanSpace = function()
  53. {
  54. const spaceID = $('[name=space]').val();
  55. const type = $('[name=type]').length ? $('[name=type]:checked').val() : spaceType;
  56. if(type == 'private')
  57. {
  58. const url = $.createLink('kanban', 'ajaxLoadUsers', 'spaceID=' + spaceID + '&field=whitelist');
  59. $.getJSON(url, function(data)
  60. {
  61. $('[name^=whitelist]').zui('picker').render({items: data});
  62. });
  63. }
  64. else
  65. {
  66. const url = $.createLink('kanban', 'ajaxLoadUsers', 'spaceID=' + spaceID + '&field=owner');
  67. $.getJSON(url, function(data)
  68. {
  69. $('[name=owner]').zui('picker').render({items: data});
  70. });
  71. }
  72. if(config.currentMethod == 'space')
  73. {
  74. const getTeamUrl = $.createLink('kanban', 'ajaxGetSpaceTeam', 'spaceID=' + spaceID);
  75. $.getJSON(getTeamUrl, function(team)
  76. {
  77. $('[name^=team]').zui('picker').$.setValue(team)
  78. });
  79. }
  80. }
  81. /**
  82. * Handle radio logic of Kanban column width setting.
  83. *
  84. * @access public
  85. * @return void
  86. */
  87. window.handleKanbanWidthAttr = function()
  88. {
  89. $('#colWidth, #minColWidth, #maxColWidth').attr('onkeyup', 'value=value.match(/^\\d+$/) ? value : ""');
  90. $('#colWidth, #minColWidth, #maxColWidth').attr('maxlength', '3');
  91. let fluidBoard = $(".form input[name='fluidBoard']:checked").val() || 0;
  92. let addAttrEle = fluidBoard == 0 ? '#colWidth' : '#minColWidth, #maxColWidth';
  93. let $fixedTip = $('#fixedColBox .fixedTip');
  94. let $autoTip = $('#autoColBox .autoTip');
  95. $(addAttrEle).closest('.width-radio-row').addClass('required');
  96. if(fluidBoard == 1)
  97. {
  98. $('#colWidth').attr('disabled', true);
  99. $('#minColWidth, #maxColWidth').removeAttr('disabled');
  100. }
  101. else
  102. {
  103. $('#colWidth').removeAttr('disabled');
  104. $('#minColWidth, #maxColWidth').attr('disabled', true);
  105. }
  106. $(document).on("#minColWidth, #maxColWidth", 'input', function()
  107. {
  108. $('#minColWidthLabel, #maxColWidthLabel').remove();
  109. $('#minColWidth, #maxColWidth').removeClass('has-error');
  110. });
  111. if(fluidBoard == 1)
  112. {
  113. $fixedTip.addClass('hidden');
  114. $autoTip.removeClass('hidden');
  115. $('#colWidth').closest('div').removeClass('required');
  116. $('#maxColWidth').closest('div').addClass('required');
  117. }
  118. else
  119. {
  120. $fixedTip.removeClass('hidden');
  121. $autoTip.addClass('hidden');
  122. $('#colWidth').closest('div').addClass('required');
  123. $('#maxColWidth').closest('div').removeClass('required');
  124. }
  125. }