109 lines
2.5 KiB
JavaScript
109 lines
2.5 KiB
JavaScript
var revisionMap = {};
|
||
var checkedIds = [];
|
||
|
||
/**
|
||
* 当选中两行时禁用其他行。
|
||
* Disable checkable attribution when checked rows equal 2.
|
||
*
|
||
* @param object changes
|
||
* @access public
|
||
* @return void
|
||
*/
|
||
window.checkedChange = function()
|
||
{
|
||
checkedIds = getCurrentCheckedIds();
|
||
|
||
if(checkedIds.length < 2)
|
||
{
|
||
$('.btn-diff').addClass('disabled')
|
||
}
|
||
else
|
||
{
|
||
$('.btn-diff').removeClass('disabled')
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 当选中数量等于2,则禁用其他所有行。
|
||
* When the selected row equals 2, disable all other rows.
|
||
*
|
||
* @param int rowID
|
||
* @access public
|
||
* @return bool
|
||
*/
|
||
window.canRowCheckable = function(rowID)
|
||
{
|
||
const dtable = zui.DTable.query('#repo-logs-table');
|
||
if(dtable == undefined) return;
|
||
var data = dtable.$.props.data;
|
||
|
||
if(data.length == 0) return true;
|
||
|
||
initRevisionMap(data);
|
||
|
||
var currentCheckedIds = getCurrentCheckedIds();
|
||
|
||
if(currentCheckedIds.length < 2) return true;
|
||
if(currentCheckedIds.indexOf(rowID) == -1) return 'disabled'
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 检测revisionMap是否跟当前页面数据一致,不一致重新生成。
|
||
* Regenerate revisionMap when revisionMap is not in current list.
|
||
*
|
||
* @param array
|
||
* @access public
|
||
* @return void
|
||
*/
|
||
function initRevisionMap(data)
|
||
{
|
||
if(revisionMap[data[data.length - 1].id] !== undefined) return;
|
||
|
||
revisionMap = {};
|
||
for (var i = 0; i < data.length; i++) revisionMap[data[i].id] = data[i].revision;
|
||
}
|
||
|
||
/**
|
||
* 跳转比较差异页面。
|
||
* Redirect to diff page.
|
||
*
|
||
* @access public
|
||
* @return void
|
||
*/
|
||
window.diffClick = function()
|
||
{
|
||
var checkedIds = getCurrentCheckedIds();
|
||
if(checkedIds.length < 2) return;
|
||
|
||
var newDiffLink = diffLink.replace('{oldRevision}', revisionMap[checkedIds[1]]);
|
||
newDiffLink = newDiffLink.replace('{newRevision}', revisionMap[checkedIds[0]]);
|
||
|
||
openUrl(newDiffLink, {app: appTab});
|
||
}
|
||
|
||
/**
|
||
* 获取当前页码选中的行。
|
||
* Get checked rows in current page.
|
||
*
|
||
* @access public
|
||
* @return array
|
||
*/
|
||
function getCurrentCheckedIds()
|
||
{
|
||
const dtable = zui.DTable.query('#repo-logs-table');
|
||
if(dtable.$ == undefined) return [];
|
||
|
||
var checkedIds = dtable.$.getChecks();
|
||
var currentCheckedIds = [];
|
||
|
||
for (var i = 0; i < checkedIds.length; i++)
|
||
{
|
||
if(revisionMap[checkedIds[i]]) currentCheckedIds.push(checkedIds[i]);
|
||
}
|
||
|
||
if(currentCheckedIds.length > 2) currentCheckedIds = currentCheckedIds.slice(0, 2);
|
||
return currentCheckedIds;
|
||
}
|