storykanban.ui.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. window.getItem = function(info)
  2. {
  3. if(priv.canViewStory)
  4. {
  5. info.item.title = `#${info.item.id} ${info.item.title}`;
  6. info.item.titleUrl = $.createLink('execution', 'storyView', `id=${info.item.id}&execution=${executionID}`);
  7. info.item.titleAttrs = {'data-toggle': 'modal', 'data-size' : 'lg', 'title' : info.item.title};
  8. }
  9. const unlinkUrl = $.createLink('execution', 'unlinkStory', `executionID=${executionID}&story=${info.item.id}`);
  10. const unlinkBtn = priv.canUnlinkStory ? `<a href="${unlinkUrl}" title=${unlinkLang} class="btn item text-primary toolbar-item ajax-submit square size-sm ghost"><i class='icon icon-unlink'></i></a>` : '';
  11. const content = `
  12. <div class='flex items-center'>
  13. <span class='pri-${info.item.pri}'>${info.item.pri}</span>
  14. <span class='status-${info.item.status} ml-1'>${info.item.statusLabel}</span>
  15. <div class='flex-1 flex justify-end items-center'>
  16. <span class='text-sm ml-2 mr-1'>${info.item.estimate + hourUnit}</span>
  17. <span>${unlinkBtn}</span>
  18. </div>
  19. </div>
  20. `;
  21. info.item.content = {html: content};
  22. };
  23. window.canDrop = function(dragInfo, dropInfo){
  24. if(!dragInfo || !priv.canBatchChangeStage) return false;
  25. const toCol = this.getCol(dropInfo.col);
  26. if(toCol.key != 'verified') return false;
  27. };
  28. window.onDrop = function(changes){
  29. const url = $.createLink('story', 'batchChangeStage', `stage=verified&story=${changes.items[0].id}`);
  30. const form = new FormData();
  31. const id = changes?.items[0]?.id;
  32. form.append('storyIdList[]', id);
  33. $.ajaxSubmit({
  34. url,
  35. data: form
  36. });
  37. };