todo.ui.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. $(document).off('click', '.batch-btn').on('click', '.batch-btn', function()
  2. {
  3. const dtable = zui.DTable.query($(this).target);
  4. const checkedList = dtable.$.getChecks();
  5. if(!checkedList.length) return;
  6. const url = $(this).data('url');
  7. const form = new FormData();
  8. checkedList.forEach((id) => form.append('todoIdList[]', id));
  9. if($(this).attr('id') == 'changeDate') form.append('date', $('#formDate').val());
  10. if($(this).hasClass('ajax-btn'))
  11. {
  12. $.ajaxSubmit({url, data: form});
  13. }
  14. else
  15. {
  16. postAndLoadPage(url, form);
  17. }
  18. });
  19. /**
  20. * Get checked items.
  21. *
  22. * @access public
  23. * @return array
  24. */
  25. function getCheckedItems()
  26. {
  27. var checkedItems = [];
  28. $('#todoForm [name^=todoIDList]:checked').each(function(index, ele)
  29. {
  30. checkedItems.push($(ele).val());
  31. });
  32. return checkedItems;
  33. };
  34. /**
  35. * 计算表格任务信息的统计。
  36. * Set todo summary for table footer.
  37. *
  38. * @param element element
  39. * @param array checkedIDList
  40. * @access public
  41. * @return object
  42. */
  43. window.setStatistics = function(element, checks)
  44. {
  45. let waitCount = 0;
  46. let doingCount = 0;
  47. checks.forEach((checkID) => {
  48. const task = element.getRowInfo(checkID).data;
  49. if(task.status == 'wait') waitCount ++;
  50. if(task.status == 'doing') doingCount ++;
  51. })
  52. if(checks.length) return {html: element.options.checkedSummary.replaceAll('%total%', `${checks.length}`).replaceAll('%wait%', waitCount).replaceAll('%doing%', doingCount)};
  53. return zui.formatString(element.options.defaultSummary);
  54. };
  55. window.generateHtml = function(event)
  56. {
  57. try
  58. {
  59. const dtable = zui.DTable.query(event.target);
  60. const checkedList = dtable.$.getChecks();
  61. if(!checkedList.length) return;
  62. let html = "<div class='toolbar input-group mr-2'>";
  63. html += "<input class='form-control size-sm' type='date' autocomplete='off' id='formDate' name='date'>";
  64. html += "<button class='btn secondary toolbar-item batch-btn ajax-btn size-sm' data-url='" + $.createLink('todo', 'import2Today') + "' id='changeDate'>";
  65. html += "<span class='text'>" + changeDateLabel + "</span>";
  66. html += "</button>";
  67. html += "</div>";
  68. return {html};
  69. }
  70. catch(error){}
  71. };