$(document).ready(function()
{
window.minField.integerDigits = parseInt(window.minField.integerDigits);
window.maxField.integerDigits = parseInt(window.maxField.integerDigits);
window.minField.decimalDigits = parseInt(window.minField.decimalDigits);
window.maxField.decimalDigits = parseInt(window.maxField.decimalDigits);
$('#fieldList').on('sort.sortable', function(e, data)
{
$.post(createLink('workflowfield', 'sort'), data.orders, function(response)
{
if(response.result == 'success')
{
return location.reload();
}
else
{
bootbox.alert(response.message);
}
}, 'json');
});
$(document).on('click', '.deleteField', function()
{
if(confirm(window.lang.confirmDelete))
{
var deleter = $(this);
var text = deleter.text();
deleter.text(window.lang.deleteing);
$.getJSON(deleter.attr('href'), function(response)
{
if(response.result == 'success')
{
return location.reload();
}
else
{
var alertContent = "
" + response.message + "
';
// $.zui.modalTrigger.show({title: window.alertLang.common, custom: alertContent});
deleter.text(text);
}
});
}
return false;
});
/* Toggle options. */
$(document).on('change', '#control', function()
{
var control = $(this).val();
$('#default, #rules, #type, #optionType, #sql, #optionsDIV, .dataTip, .set-expression').parents('tr').toggle(control != 'file');
if(control == 'file') return false;
var type = window.defaultField.type;
var optionClass = window.defaultField.optionClass;
var length = $('#length').val();
var integerDigits = parseInt($('#integerDigits').val());
var decimalDigits = parseInt($('#decimalDigits').val());
var isOptionControl = (control == 'select' || control == 'multi-select' || control == 'radio' || control == 'checkbox');
if(!length) length = window.defaultField.varcharLength;
if(!integerDigits || integerDigits < window.minField.integerDigits || integerDigits > window.maxField.integerDigits) integerDigits = window.defaultField.integerDigits;
if(!decimalDigits || decimalDigits < window.minField.decimalDigits || decimalDigits > window.maxField.decimalDigits) decimalDigits = window.defaultField.decimalDigits;
switch(control)
{
case 'formula' :
case 'decimal' :
type = 'decimal';
optionClass = 'decimal';
length = '';
break;
case 'integer' :
type = 'int';
optionClass = 'integer';
length = '';
break;
case 'multi-select' :
case 'checkbox' :
case 'textarea' :
case 'richtext' :
type = 'text';
optionClass = 'text';
length = '';
break;
case 'date' :
type = 'date';
optionClass = 'date';
length = '';
break;
case 'datetime' :
type = 'datetime';
optionClass = 'time';
length = '';
break;
}
$('#length').val(length);
$('#integerDigits').val(integerDigits);
$('#decimalDigits').val(decimalDigits);
$('#type option').show().not('.' + optionClass).hide();
$('#type').val(type).change();
$('.set-expression').parents('tr').toggle(control == 'formula');
$('#optionType').change().parents('tr').toggle(isOptionControl);
});
$(document).on('change', '#type', function()
{
var type = $(this).val();
if(type == 'char') $('#length').attr({'placeholder' : window.placeholder.charLength, 'title' : window.placeholder.charLength, 'max' : window.maxField.charLength});
if(type == 'varchar') $('#length').attr({'placeholder' : window.placeholder.varcharLength, 'title' : window.placeholder.varcharLength, 'max' : window.maxField.varcharLength});
$('.length').toggle(type == 'char' || type == 'varchar');
$('.digits').toggle(type == 'decimal');
$('#default').parents('tr').toggle(type != 'text');
setDataTip();
setDefaultControl();
});
$(document).on('change', '#length, #integerDigits, #decimalDigits', function()
{
setDataTip();
setDefaultControl();
});
$(document).on('change', '#optionType', function()
{
var control = $('#control').val();
var isOptionControl = (control == 'select' || control == 'multi-select' || control == 'radio' || control == 'checkbox');
$('#optionTR').toggle(isOptionControl && $(this).val() == 'custom');
$('#optionTR .input-group').fixInputGroup();
$('.sqlTR').toggle(isOptionControl && $(this).val() == 'sql');
$('#varsTR').toggle(isOptionControl && $(this).val() == 'sql' && $.trim($('#varsTD').html()) != '');
$('#optionsDIVLabel, #sqlLabel').remove();
$('#sql').css({'border-color' : '', 'margin-bottom' : 0});
setDefaultControl();
});
$(document).on('change', 'input[name^=options], #sql', function()
{
setDefaultControl();
});
/* Add a option. */
$(document).on('click', '.addItem', function()
{
var $parent = $(this).parents('.input-group');
$parent.after($parent.prop('outerHTML').replace('checked="checked"', ''));
$parent.next().find('input[type=text]').val('');
});
/* Delete a option. */
$(document).on('click', '.delItem', function()
{
if($(this).closest('td').find('div.input-group').size() == 1)
{
$(this).parents('.input-group').find('input').val('');
}
else
{
$(this).parents('.input-group').remove();
}
});
$(document).on('change', '[name^=optionCode]', function()
{
$(this).parent('.input-group').find('[name^=optionDefault]').val($(this).val());
});
$(document).on('click', '[name=requestType]', function()
{
$('#selectList').toggle($(this).val() == 'select' || $(this).val() == 'multi-select');
});
$(document).on('click', '.delSqlVar', function()
{
$('#sql').val($('#sql').val().replace("'$" + $(this).parents('.varControl').attr('id') + "'", ''));
$(this).parents('.varControl').remove();
fixVarControls();
});
$(document).on('click', '.btn-expression', function()
{
var text = $(this).html();
var data = $(this).data();
var type = $(this).data('type');
$('#expressionDIV .expression').append("" + text + "");
window.expression.push(data);
removeErrorLabel();
});
$(document).on('click', '.clear-last', function()
{
$('#expressionDIV .expression .item-expression:last').remove();
window.expression.pop();
removeErrorLabel();
});
$(document).on('click', '.clear-all', function()
{
$('#expressionDIV .expression .item-expression').remove();
window.expression.length = 0;
removeErrorLabel();
});
$(document).on('click', '.save-expression', function()
{
var hasError = checkExpression();
if(!hasError)
{
$('#fieldTable .expression').html($('#expressionDIV .expression').html());
$('#fieldTable #expression').val(JSON.stringify(window.expression));
$('#expressionDIV').hide();
$('#fieldTable').show();
}
});
$(document).on('click', '.cancel-expression', function()
{
removeErrorLabel();
$('#expressionDIV').hide();
$('#fieldTable').show();
});
$(document).on('click', '.set-expression', function()
{
initExpression();
$('#expressionLabel').remove();
$('#expressionDIV').show();
$('#fieldTable').hide();
});
$panelHeadingHeight = $('.panel-heading').outerHeight(true);
$panelMarginBottom = $('.panel').css('margin-bottom').replace('px', '');
$editorNavHeight = $('#editorNav').outerHeight(true);
$editorMenuHeight = $('#editorMenu').outerHeight();
$spaceHeight = $('.space.space-sm').outerHeight(true);
$maxHeight = $(window).height() - $panelHeadingHeight - $panelMarginBottom - $editorNavHeight - $editorMenuHeight - $spaceHeight;
$('.panel-body').css('max-height', $maxHeight + 'px');
});
function setDataTip()
{
var type = $('#type').val();
var $dataTip = $('.dataTip');
switch(type)
{
case 'tinyint' :
case 'smallint' :
case 'mediumint' :
case 'int' :
var max = window.maxField[type];
var min = window.minField[type];
$dataTip.html(window.tips.number.replace(/MAX/, max).replace(/MIN/, min)).parents('tr').show();
break;
case 'decimal' :
var integerDigits = $('#integerDigits').val();
integerDigits = integerDigits ? parseInt(integerDigits) : 0;
integerDigits = integerDigits > window.maxField.integerDigits ? window.maxField.integerDigits : integerDigits;
integerDigits = integerDigits < window.minField.integerDigits ? window.defaultField.integerDigits : integerDigits;
integerDigits = parseInt(integerDigits);
var decimalDigits = $('#decimalDigits').val();
decimalDigits = decimalDigits ? parseInt(decimalDigits) : 0;
decimalDigits = decimalDigits > window.maxField.decimalDigits ? window.maxField.decimalDigits : decimalDigits;
decimalDigits = decimalDigits < window.minField.integerDigits ? window.defaultField.decimalDigits : decimalDigits;
decimalDigits = parseInt(decimalDigits);
var max = '.'.padStart(integerDigits + 1, 9).padEnd(integerDigits + decimalDigits + 1, 9);
var min = '-' + max;
$dataTip.html(window.tips.number.replace(/MAX/, max).replace(/MIN/, min)).parents('tr').show();
break;
case 'char' :
var length = $('#length').val();
length = length ? parseInt(length) : 0;
length = length > window.maxField.charLength ? window.maxField.charLength : length;
length = length < window.minField.charLength ? window.defaultField.charLength : length;
$dataTip.html(window.tips.string.replace(/LENGTH/, length)).parents('tr').show();
break;
case 'varchar' :
var length = $('#length').val();
length = length ? parseInt(length) : 0;
length = length > window.maxField.varcharLength ? window.maxField.varcharLength : length;
length = length < window.minField.varcharLength ? window.defaultField.varcharLength : length;
$dataTip.html(window.tips.string.replace(/LENGTH/, length)).parents('tr').show();
break;
default :
$('#length').val('');
$('#integerDigits').val('');
$('#decimalDigits').val('');
$dataTip.html('').parents('tr').hide();
}
}
function setDefaultControl()
{
var control = $('#control').val();
var type = $('#type').val();
var optionType = $('#optionType').val();
var defaultValue = $('#default').val();
if(control == 'input' || control == 'textarea' || control == 'multi-select' || control == 'checkbox' || control == 'richtext' || control == 'file')
{
$('#default').parent().html("");
return false;
}
if(control == 'date')
{
var dateOptions =
{
language: config.clientLang,
weekStart: 1,
todayBtn: 1,
autoclose: 1,
todayHighlight: 1,
startView: 2,
minView: 2,
forceParse: 0,
format: 'yyyy-mm-dd'
};
$('#default').parent().html("");
$('#default').datetimepicker(dateOptions);
return false;
}
if(control == 'datetime')
{
var datetimeOptions =
{
language: config.clientLang,
weekStart: 1,
todayBtn: 1,
autoclose: 1,
todayHighlight: 1,
startView: 2,
forceParse: 0,
showMeridian: 1,
format: 'yyyy-mm-dd hh:ii'
};
$('#default').parent().html("");
$('#default').datetimepicker(datetimeOptions);
return false;
}
if(control == 'integer')
{
var type = $('#type').val();
var max = window.maxField[type];
var min = window.minField[type];
$('#default').parent().html("");
return false;
}
if(control == 'decimal' || control == 'formula')
{
var integerDigits = $('#integerDigits').val();
integerDigits = integerDigits ? parseInt(integerDigits) : 0;
integerDigits = integerDigits > window.maxField.integerDigits ? window.maxField.integerDigits : integerDigits;
integerDigits = integerDigits < window.minField.integerDigits ? window.defaultField.integerDigits : integerDigits;
integerDigits = parseInt(integerDigits);
var decimalDigits = $('#decimalDigits').val();
decimalDigits = decimalDigits ? parseInt(decimalDigits) : 0;
decimalDigits = decimalDigits > window.maxField.decimalDigits ? window.maxField.decimalDigits : decimalDigits;
decimalDigits = decimalDigits < window.minField.integerDigits ? window.defaultField.decimalDigits : decimalDigits;
decimalDigits = parseInt(decimalDigits);
var max = '.'.padStart(integerDigits + 1, 9).padEnd(integerDigits + decimalDigits + 1, 9);
var min = '-' + max;
var step = '0.'.padEnd(decimalDigits + 1, 0) + 1;
$('#default').parent().html("");
return false;
}
if(!optionType || optionType == 'category' || optionType == 'prevModule')
{
$('#default').parent().html("");
return false;
}
if(typeof defaultValue === 'string') defaultValue = defaultValue.split(',');
if(optionType == 'custom')
{
var name = (control == 'multi-select' || control == 'checkbox') ? 'default[]' : 'default';
var multiple = (control == 'multi-select' || control == 'checkbox') ? 'multiple' : '';
$('#default').parent().html("