function addWaterpoloRow(obj)
{
var tpl = $('#conditionTpl').html();
var $parentDiv = $(obj).parents('.condition-div');
$('
' + tpl + '').insertAfter($parentDiv);
var $addDiv = $parentDiv.next();
$addDiv.find('#field').picker();
$addDiv.find('#value').picker();
$addDiv.find('#field').next().addClass('required');
$addDiv.find('#value').next().addClass('required');
var delCount = $('.molecule-div').find('.del-condition').length;
if(delCount >= 2) $('.molecule-div').find('.del-condition').eq(0).removeClass('hidden');
refreshConditionText();
}
function deleteWaterpoloRow(obj)
{
$(obj).parents('.condition-div').remove();
var delCount = $('.molecule-div').find('.del-condition').length;
if(delCount == 1) $('.molecule-div').find('.del-condition').eq(0).addClass('hidden');
refreshConditionText();
refreshConditions();
refreshChart();
}
function refreshConditionText()
{
$('#chartForm .table-form .molecule-div').find('.text-condition').each(function(index)
{
var text = index == 0 ? chartLang.condition : chartLang.and;
$(this).text(text);
});
}
function validateWaterpolo(showError)
{
var chart = DataStorage.chart;
var formSettings = chart.settings[0];
var type = formSettings.type;
var chartSetting = chartSettings[type];
var multiColumn = multiColumns[type];
var isReady = true;
['goal', 'calc'].forEach(function(field)
{
var error = '
' + chartLang.fieldEmpty + '
';
$('#' + field + 'Label').remove();
$('#' + field).removeClass('has-error');
if(!formSettings[field] || formSettings[field] == '')
{
isReady = false;
if(showError)
{
$('#' + field).addClass('has-error');
$('#' + field).next().after(error);
}
}
});
['field', 'value'].forEach(function(field)
{
var error = '
' + chartLang.fieldEmpty + '
';
$('#chartForm .table-form .molecule-div').find('.multi-' + field).each(function()
{
$(this).parent('div').find('#' + field + 'Label').remove();
$(this).parent('div').find('#' + field).removeClass('has-error');
if($(this).val().length == 0)
{
isReady = false;
if(showError)
{
$(this).parent('div').find('#' + field).addClass('has-error');
$(this).parent('div').find('#' + field).next().after(error);
}
}
})
});
return isReady;
}
async function waterpoloChange($obj)
{
$obj = $($obj);
var chart = DataStorage.clone('chart');
var nowField = $obj.attr('id')
var nowValue = $obj.val();
if(nowField == 'goal')
{
chart.settings[0]['calc'] = '';
await updateCalcList(nowValue);
}
if(nowField == 'field') await updatefieldValue($obj, nowValue);
if(['goal', 'calc'].includes(nowField))
{
chart.settings[0][nowField] = $('#chartForm .table-form').find('#' + nowField).val();
DataStorage.chart = chart;
updateDenominatorTip(chart.settings[0]);
}
else
{
refreshConditions();
}
refreshChart();
}
function refreshConditions()
{
var chart = DataStorage.clone('chart');
var settingInfo = {};
['field', 'value'].forEach(function(field)
{
settingInfo[field] = [];
$('#chartForm .table-form .molecule-div').find('.multi-' + field).each(function()
{
settingInfo[field].push($(this).val());
});
});
var conditions = [];
for(var index = 0; index < settingInfo.field.length; index ++)
{
var field = settingInfo.field[index];
if(field.length == 0) continue;
var value = settingInfo.value[index];
conditions.push({field: field, condition: 'eq', value: value});
}
chart.settings[0]['conditions'] = conditions;
DataStorage.chart = chart;
}
async function updateCalcList(fieldValue)
{
var type = fieldValue == '' ? '' : DataStorage.fieldSettings[fieldValue].type;
return new Promise(function(resolve, reject)
{
$.post(createLink('chart', 'ajaxGetWaterpoloCalcOption'),
{
type: type
}, function(data)
{
var $calcParent = $('#chartForm .table-form').find('#calc').parent();
$calcParent.empty();
$calcParent.append(data);
$calcParent.find('#calc').picker();
$calcParent.find('#calc').next().addClass('required');
resolve();
});
});
}
async function updatefieldValue($obj, fieldValue)
{
var chart = DataStorage.clone('chart');
return new Promise(function(resolve, reject)
{
$.post(createLink('chart', 'ajaxGetWaterpoloFieldOption'),
{
sql: chart.sql,
fieldSetting: fieldValue ? DataStorage.fieldSettings[fieldValue] : []
}, function(data)
{
var $valueParent = $obj.parents('.molecule-div').find('#value').parent();
$valueParent.empty();
$valueParent.append(data);
$valueParent.find('#value').picker();
$valueParent.find('#value').next().addClass('required');
resolve();
});
});
}
function updateDenominatorTip(setting)
{
if(setting['goal'] !== undefined && setting['goal'] != '' && setting['calc'] !== undefined && setting['calc'] != '')
{
$.post(createLink('chart', 'ajaxGetDenominatorTip'),
{
setting: setting,
fieldSettings: DataStorage.fieldSettings,
langs: DataStorage.langs
}, function(data)
{
$('.text-denominatorTip').text(data);
});
}
else
{
$('.text-denominatorTip').text(chartLang.denominatorTip.empty);
}
}