znt/module/repo/js/log.ui.js

109 lines
2.5 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}