Files
EasySoft-ZenTaoPMS/module/repo/js/log.ui.js
T

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(changes)
{
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;
}