$(document).off('click', '.batch-btn').on('click', '.batch-btn', function()
{
const dtable = zui.DTable.query($(this).target);
const checkedList = dtable.$.getChecks();
if(!checkedList.length) return;
const url = $(this).data('url');
const form = new FormData();
checkedList.forEach((id) => form.append('taskIdList[]', id));
if($(this).hasClass('ajax-btn'))
{
$.ajaxSubmit({url, data: form});
}
else
{
postAndLoadPage(url, form);
}
});
/**
* 计算表格任务信息的统计。
* Set todo summary for table footer.
*
* @param element element
* @param array checkedIDList
* @access public
* @return object
*/
window.setStatistics = function(element, checks)
{
let waitCount = 0;
let doingCount = 0;
let estimate = 0;
let consumed = 0;
let left = 0;
checks.forEach((checkID) => {
const task = element.getRowInfo(checkID).data;
if(task.rawStatus == 'wait') waitCount ++;
if(task.rawStatus == 'doing') doingCount ++;
if(task.isParent > 0) return false;
estimate += parseFloat(task.estimate);
consumed += parseFloat(task.consumed);
left += parseFloat(task.left);
})
if(checks.length) return {html: element.options.checkedSummary.replaceAll('%total%', `${checks.length}`).replaceAll('%wait%', waitCount).replaceAll('%doing%', doingCount).replaceAll('%estimate%', estimate).replaceAll('%consumed%', consumed).replaceAll('%left%', left)};
return zui.formatString(element.options.defaultSummary);
}
/**
* 对部分列进行重定义。
* Redefine the partial column.
*
* @param array result
* @param array info
* @access public
* @return string|array
*/
window.renderCell = function(result, info)
{
const task = info.row.data;
if(info.col.name == 'name' && result)
{
if(typeof result[0] == 'object') result[0].props.className = 'overflow-hidden';
let html = '';
if(task.team)
{
html += "" + multipleAB + "";
}
if(task.isParent > 0)
{
html += "" + parentAB + "";
}
else if(task.parent > 0)
{
html += "" + childrenAB + "";
}
if(html) result.unshift({html});
if(typeof task.delay != 'undefined' && task.delay > 0)
{
result[result.length] = {html:'' + delayWarning.replace('%s', task.delay) + '', className:'flex items-end', style:{flexDirection:"column"}};
}
}
if(info.col.name == 'deadline' && result[0])
{
if(['done', 'cancel', 'close'].includes(task.rawStatus)) return result;
const today = zui.formatDate(zui.createDate(), 'yyyy-MM-dd');
const yesterday = zui.formatDate(convertStringToDate(today) - 24 * 60 * 60 * 1000, 'yyyy-MM-dd');
if(result[0] == today)
{
result[0] = {html: '' + todayLabel + ''};
}
else if(result[0] == yesterday)
{
result[0] = {html: '' + yesterdayLabel + ''};
}
else if(result[0] < yesterday)
{
result[0] = {html: '' + result[0] + ''};
}
}
if(info.col.name == 'status' && result)
{
result[0] = {html: `` + info.row.data.status + ""};
}
return result;
}
function convertStringToDate(dateString)
{
dateString = dateString.split('-');
dateString = dateString[1] + '/' + dateString[2] + '/' + dateString[0];
return Date.parse(dateString);
}
$(document).off('click', '.switchButton').on('click', '.switchButton', function()
{
var taskViewType = $(this).attr('data-type');
$.cookie.set('taskViewType', taskViewType, {expires:config.cookieLife, path:config.webRoot});
loadCurrentPage();
});