2023-05-16 10:50:42 +08:00

91 lines
2.8 KiB
JavaScript

$(function()
{
$(document).on('click', '#relationTable .addRelation', function()
{
var $tr = $(this).parents('tr');
$tr.after(window.itemRow.replace(/KEY/g, window.key));
$tr.next().find('select').chosen();
processNext();
window.key++;
});
$(document).on('click', '#relationTable .delRelation', function()
{
var $tr = $(this).parents('tr');
if($('#relationTable .delRelation').length == 1)
{
$tr.find('select').val('').trigger('chosen:updated');
$tr.find('input[type=checkbox]').prop('checked', false);
return false;
}
$tr.remove();
processNext();
});
$(document).on('change', '#relationTable [name^=next]', function()
{
processNext();
var $field = $(this).parents('tr').find('[name^=field]');
var field = $field.val();
var link = createLink('workflowfield', 'ajaxGetField', 'module=' + $(this).val());
$field.load(link, function(response)
{
$field.val(field).trigger('chosen:updated');
});
});
/* Relation */
$(document).on('change', '#relationTable [name^=createField]', function()
{
var $parent = $(this).parents('.input-group');
var checked = $(this).prop('checked');
$parent.find('[name^=field]').val('').trigger('chosen:updated');
$parent.find('[name^=newField]').toggle(checked).val('');
$parent.find('.chosen-container').toggle(!checked);
});
$(document).on('change', '#relationTable [name^=action]', function()
{
var value = $(this).val();
var checked = $(this).prop('checked');
if(checked)
{
if(value == 'one2one') $(this).parents('td').find('[value=one2many]').prop('checked', false);
if(value == 'one2many') $(this).parents('td').find('[value=one2one]').prop('checked', false);
if(value == 'many2one') $(this).parents('td').find('[value=many2many]').prop('checked', false);
if(value == 'many2many') $(this).parents('td').find('[value=many2one]').prop('checked', false);
}
});
$('#relationTable [name^=next]').change();
})
/**
* Make sure each next module and field can be selected only once.
*
* @access public
* @return void
*/
function processNext()
{
$('#relationTable [name^=next]').each(function()
{
var $this = $(this);
var selected = $this.val();
$this.empty().append($('#relationTemplateNext').html());
$('#relationTable [name^=next]').not(this).each(function()
{
var next = $(this).val();
if(next != 0) $this.find('option[value=' + next + ']').remove();
});
$this.val(selected).trigger('chosen:updated');
});
}