202 lines
6.3 KiB
JavaScript
202 lines
6.3 KiB
JavaScript
window.pivotID = pivotID;
|
|
window.waitDom('#export-data-button', function()
|
|
{
|
|
$(document).off('click', '#export-data-button').on('click', '#export-data-button', () => exportData());
|
|
});
|
|
|
|
/**
|
|
* 查询条件改变时重新加载 Bug 创建表。
|
|
* Reload bug create table when query conditions changed.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function loadBugCreate()
|
|
{
|
|
const begin = $('#conditions').find('[name="begin"]').val().replaceAll('-', '');
|
|
const end = $('#conditions').find('[name="end"]').val().replaceAll('-', '');
|
|
const product = $('#conditions').find('[name=product]').val() || 0;
|
|
const execution = $('#conditions').find('[name=execution]').val() || 0;
|
|
const params = window.btoa('begin=' + begin + '&end=' + end + '&product=' + +product + '&execution=' + +execution);
|
|
const link = $.createLink('pivot', 'preview', 'dimensionID=' + dimensionID + '&groupID=' + groupID + '&method=bugCreate¶ms=' + params);
|
|
loadPage(link, '#pivotPanel');
|
|
}
|
|
|
|
/**
|
|
* 查询条件改变时重新加载产品汇总表。
|
|
* Reload product summary table when query conditions changed.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function loadProductSummary()
|
|
{
|
|
let conditions = '';
|
|
$('#conditions input[type=checkbox]').each(function(i)
|
|
{
|
|
if($(this).prop('checked')) conditions += $(this).val() + ',';
|
|
})
|
|
conditions = conditions.substring(0, conditions.length - 1);
|
|
|
|
const productID = $('#product').find('.pick-value').val();
|
|
const productStatus = $('#productStatus').find('.pick-value').val();
|
|
const productType = $('#productType').find('.pick-value').val();
|
|
|
|
const params = window.btoa('conditions=' + conditions + '&productID=' + productID + '&productStatus=' + productStatus + '&productType=' + productType);
|
|
const link = $.createLink('pivot', 'preview', 'dimensionID=' + dimensionID + '&groupID=' + groupID + '&method=productSummary¶ms=' + params);
|
|
loadPage(link, '#pivotPanel');
|
|
}
|
|
|
|
/**
|
|
* 查询条件改变时重新加载执行偏差表。
|
|
* Reload execution deviation table when query conditions changed.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function loadProjectDeviation()
|
|
{
|
|
const begin = $('#conditions').find('[name="begin"]').val().replaceAll('-', '');
|
|
const end = $('#conditions').find('[name="end"]').val().replaceAll('-', '');
|
|
const params = window.btoa('begin=' + begin + '&end=' + end);
|
|
const link = $.createLink('pivot', 'preview', 'dimensionID=' + dimensionID + '&groupID=' + groupID + '&method=projectdeviation¶ms=' + params);
|
|
loadPage(link, '#pivotPanel,#pivotChart');
|
|
}
|
|
|
|
/**
|
|
* 查询条件改变时重新加载工作负载表。
|
|
* Reload workload table when query conditions changed.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function loadWorkload()
|
|
{
|
|
const begin = $('#conditions').find('[name="begin"]').val();
|
|
const end = $('#conditions').find('[name="end"]').val();
|
|
const workhour = $('#conditions').find('#workhour').val();
|
|
const dept = $('#conditions').find('[name=dept]').val();
|
|
const assign = $('#conditions').find('[name=assign]').val();
|
|
const days = diffDate(begin, end);
|
|
|
|
$('#days').val(days);
|
|
|
|
const params = window.btoa('begin=' + begin.replaceAll('-', '') + '&end=' + end.replaceAll('-', '') + '&days=' + days + '&workhour=' + +workhour + '&dept=' + dept + '&assign=' + assign);
|
|
const link = $.createLink('pivot', 'preview', 'dimensionID=' + dimensionID + '&groupID=' + groupID + '&method=workload¶ms=' + params);
|
|
loadPage(link, '#pivotPanel');
|
|
}
|
|
|
|
function toggleShowMode(showMode = 'group')
|
|
{
|
|
if(showMode == 'group')
|
|
{
|
|
$('#origin-query').removeClass('hidden');
|
|
$('#pivot-query').addClass('hidden');
|
|
}
|
|
else
|
|
{
|
|
$('#origin-query').addClass('hidden');
|
|
$('#pivot-query').removeClass('hidden');
|
|
}
|
|
|
|
loadCustomPivot(showMode);
|
|
}
|
|
|
|
/**
|
|
* 查询条件改变时重新加载自定义透视表。
|
|
* Reload custom pivot table when query conditions changed.
|
|
*
|
|
* @access public
|
|
* @param showMode group|origin
|
|
* @return void
|
|
*/
|
|
function loadCustomPivot(showMode = 'group')
|
|
{
|
|
const filterValues = getFilterValues();
|
|
const form = zui.createFormData();
|
|
if(showMode == 'origin') form.append('summary', 'notuse');
|
|
filterValues.forEach((val, index) => {
|
|
if (typeof val === 'object') {
|
|
for(var i in val) form.append(`filterValues[${index}][${i}]`, val[i]);
|
|
} else {
|
|
form.append(`filterValues[${index}]`, val)
|
|
}
|
|
});
|
|
|
|
const params = window.btoa('groupID=' + currentGroup + '&pivotID=' + pivotID);
|
|
const link = $.createLink('pivot', 'preview', 'dimensionID=' + dimensionID + '&groupID=' + groupID + '&method=show¶ms=' + params);
|
|
postAndLoadPage(link, form, 'dtable/#table-pivot-preview:component,#conditions,pageJS/.zin-page-js,#exportData');
|
|
}
|
|
|
|
/**
|
|
* 导出透视表数据。
|
|
* Export pivot table data.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function exportData()
|
|
{
|
|
const $domObj = $(".table-condensed")[0];
|
|
exportFile($domObj);
|
|
}
|
|
|
|
/**
|
|
* 把日期字符串转换成日期对象。
|
|
* Convert date string to date object.
|
|
*
|
|
* @param string $dateString
|
|
* @access public
|
|
* @return date
|
|
*/
|
|
function convertStringToDate(dateString)
|
|
{
|
|
dateString = dateString.split('-');
|
|
return new Date(dateString[0], dateString[1] - 1, dateString[2]);
|
|
}
|
|
|
|
/**
|
|
* 计算两个日期之间的天数。
|
|
* Compute the days between two date.
|
|
*
|
|
* @param string $date1
|
|
* @param string $date1
|
|
* @access public
|
|
* @return int
|
|
*/
|
|
function diffDate(date1, date2)
|
|
{
|
|
date1 = convertStringToDate(date1);
|
|
date2 = convertStringToDate(date2);
|
|
delta = (date2 - date1) / (1000 * 60 * 60 * 24) + 1;
|
|
|
|
weekEnds = 0;
|
|
for(i = 0; i < delta; i++)
|
|
{
|
|
if((weekend == 2 && date1.getDay() == 6) || date1.getDay() == 0) weekEnds ++;
|
|
date1 = date1.valueOf();
|
|
date1 += 1000 * 60 * 60 * 24;
|
|
date1 = new Date(date1);
|
|
}
|
|
return delta - weekEnds;
|
|
}
|
|
|
|
/**
|
|
* 合并单元格。
|
|
* Merge cell.
|
|
*
|
|
* @param object cell
|
|
* @access public
|
|
* @return object|void
|
|
*/
|
|
getCellSpan = function(cell)
|
|
{
|
|
const options = this.options.cellSpanOptions[cell.col.name];
|
|
if(options)
|
|
{
|
|
const rowSpan = cell.row.data[options.rowspan ?? 'rowspan'] ?? 1;
|
|
const colSpan = cell.row.data[options.colspan ?? 'colspan'] ?? 1;
|
|
return {rowSpan, colSpan};
|
|
}
|
|
}
|