log.ui.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. var revisionMap = {};
  2. var checkedIds = [];
  3. /**
  4. * 当选中两行时禁用其他行。
  5. * Disable checkable attribution when checked rows equal 2.
  6. *
  7. * @param object changes
  8. * @access public
  9. * @return void
  10. */
  11. window.checkedChange = function()
  12. {
  13. checkedIds = getCurrentCheckedIds();
  14. if(checkedIds.length < 2)
  15. {
  16. $('.btn-diff').addClass('disabled')
  17. }
  18. else
  19. {
  20. $('.btn-diff').removeClass('disabled')
  21. }
  22. }
  23. /**
  24. * 当选中数量等于2,则禁用其他所有行。
  25. * When the selected row equals 2, disable all other rows.
  26. *
  27. * @param int rowID
  28. * @access public
  29. * @return bool
  30. */
  31. window.canRowCheckable = function(rowID)
  32. {
  33. const dtable = zui.DTable.query('#repo-logs-table');
  34. if(dtable == undefined) return;
  35. var data = dtable.$.props.data;
  36. if(data.length == 0) return true;
  37. initRevisionMap(data);
  38. var currentCheckedIds = getCurrentCheckedIds();
  39. if(currentCheckedIds.length < 2) return true;
  40. if(currentCheckedIds.indexOf(rowID) == -1) return 'disabled'
  41. return true;
  42. }
  43. /**
  44. * 检测revisionMap是否跟当前页面数据一致,不一致重新生成。
  45. * Regenerate revisionMap when revisionMap is not in current list.
  46. *
  47. * @param array
  48. * @access public
  49. * @return void
  50. */
  51. function initRevisionMap(data)
  52. {
  53. if(revisionMap[data[data.length - 1].id] !== undefined) return;
  54. revisionMap = {};
  55. for (var i = 0; i < data.length; i++) revisionMap[data[i].id] = data[i].revision;
  56. }
  57. /**
  58. * 跳转比较差异页面。
  59. * Redirect to diff page.
  60. *
  61. * @access public
  62. * @return void
  63. */
  64. window.diffClick = function()
  65. {
  66. var checkedIds = getCurrentCheckedIds();
  67. if(checkedIds.length < 2) return;
  68. var newDiffLink = diffLink.replace('{oldRevision}', revisionMap[checkedIds[1]]);
  69. newDiffLink = newDiffLink.replace('{newRevision}', revisionMap[checkedIds[0]]);
  70. openUrl(newDiffLink, {app: appTab});
  71. }
  72. /**
  73. * 获取当前页码选中的行。
  74. * Get checked rows in current page.
  75. *
  76. * @access public
  77. * @return array
  78. */
  79. function getCurrentCheckedIds()
  80. {
  81. const dtable = zui.DTable.query('#repo-logs-table');
  82. if(dtable.$ == undefined) return [];
  83. var checkedIds = dtable.$.getChecks();
  84. var currentCheckedIds = [];
  85. for (var i = 0; i < checkedIds.length; i++)
  86. {
  87. if(revisionMap[checkedIds[i]]) currentCheckedIds.push(checkedIds[i]);
  88. }
  89. if(currentCheckedIds.length > 2) currentCheckedIds = currentCheckedIds.slice(0, 2);
  90. return currentCheckedIds;
  91. }