var filterValues = {};
window.latin1ToBase64 = function(str)
{
const encoder = new TextEncoder();
const latin1Array = encoder.encode(str);
const latin1String = String.fromCharCode.apply(null, latin1Array);
return btoa(latin1String);
}
/**
* Listen filter change.
*
* @param string field
* @param string dateSelect
* @param string $filterValue
* @access public
* @return void
*/
function filterChange(field, dateSelect, $filterValue)
{
var parse = field.split('.');
field = parse[0];
var type = '';
if(parse.length == 2) type = parse[1];
var id = type.length == 0 ? field : field + '\\[' + type + '\\]';
var value = $('#' + id).val();
if(type.length == 0)
{
filterValues[field] = value;
ajaxGetChart();
}
else
{
var check = checkDate(dateSelect, $filterValue);
if(!check) return;
if(!filterValues[field]) filterValues[field] = {begin: '', end: ''};
filterValues[field][type] = value;
var begin = filterValues[field].begin;
var end = filterValues[field].end;
if((begin.length > 0 && end.length > 0) || (begin.length == 0 && end.length == 0)) ajaxGetChart();
}
}
/**
* Validate form required.
*
* @access public
* @return void
*/
function validate(showError = false)
{
var chart = DataStorage.chart;
var step = DataStorage.step;
var type = chart.settings[0].type;
var isReady = true;
if(type == 'waterpolo')
{
isReady = validateWaterpolo(showError);
}
else
{
isReady = validateOther(showError);
}
if(!isReady)
{
$('#draw-tip').removeClass('hidden');
$('#step' + step + 'Content').find('#draw-no-data').addClass('hidden');
$('.btn-export').addClass('hidden');
}
if(isReady)
{
$('#draw-tip').addClass('hidden');
$('.btn-export').removeClass('hidden');
}
return isReady;
}
function validateOther(showError)
{
var chart = DataStorage.chart;
var formSettings = chart.settings[0];
var type = formSettings.type;
var chartSetting = chartSettings[type];
var multiColumn = multiColumns[type];
/* Code for temporary */
var isReady = true;
Object.keys(chartSetting).forEach(function(key)
{
chartSetting[key].forEach(function(setting)
{
var isMulti = multiColumn == setting.field;
var title = (type == 'pie' && setting.field == 'metric') ? chartLang.columnField : chartLang[type][setting.field];
var error = '
' + notemptyLang.replace('%s', title) + '
';
/* If this option is required and the option is multi-selected, call the multiValidate function. */
/* 如果这个选项必填,并且这个选项是多选的, 调用multiValidate方法。*/
if(setting.required && isMulti)
{
result = multiValidate(setting, showError);
if(result == false) isReady = false;
}
else
{
$('#' + setting.field + 'Label').remove();
$('#' + setting.field).removeClass('has-error');
if(setting.required &&(!formSettings[setting.field] || formSettings[setting.field][0].field == ''))
{
isReady = false;
if(showError)
{
$('#' + setting.field).addClass('has-error');
$('#' + setting.field).next().after(error);
}
}
}
});
});
return isReady;
}
/**
* Multi Validate.
*
* @param setting $setting
* @param showError $showError
* @access public
* @return void
*/
function multiValidate(setting, showError)
{
var chart = DataStorage.chart;
var type = chart.settings[0].type;
var isReady = true;
var field = setting.field;
var error = '' + notemptyLang.replace('%s', chartLang.columnField) + '
';
$('#chartForm .table-form').find('.multi-' + field).each(function()
{
$(this).parent('td').find('#' + field + 'Label').remove();
$(this).parent('td').find('#' + field).removeClass('has-error');
if(setting.required && $(this).val().length == 0)
{
isReady = false;
if(showError)
{
$(this).parent('td').find('#' + field).addClass('has-error');
$(this).parent('td').find('#' + field).next().after(error);
}
}
});
return isReady;
}
/**
* Check date.
*
* @param string dateSelect
* @param object $filterValue
* @access public
* @return void
*/
function checkDate(dateSelect, $filterValue)
{
var begin = new Date($(dateSelect).parent().find('.default-begin').val().replace(/-/g, "\/")).getTime();
var end = new Date($(dateSelect).parent().find('.default-end').val().replace(/-/g, "\/")).getTime();
if(begin > end)
{
$(dateSelect).val('');
if(typeof $filterValue == 'object') $filterValue.val('');
bootbox.alert(chartLang.beginGtEnd);
return false;
}
return true;
}
function success(mes)
{
var message = new $.zui.Messager(mes,
{
html: true,
icon: 'check-circle',
type: 'success',
close: true,
});
message.show();
}
function resizeChart(step)
{
var filterHeight = $('#step' + step + 'Content .display-content .cell #filterContent').height();
$('#step' + step + 'Content .display-content .cell #draw').css('height', 'calc(100% - ' + (filterHeight + 16) + 'px)')
if(echart) echart.resize();
}