admin.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. $(function()
  2. {
  3. $(document).on('click', '#relationTable .addRelation', function()
  4. {
  5. var $tr = $(this).parents('tr');
  6. $tr.after(window.itemRow.replace(/KEY/g, window.key));
  7. $tr.next().find('select').chosen();
  8. processNext();
  9. window.key++;
  10. });
  11. $(document).on('click', '#relationTable .delRelation', function()
  12. {
  13. var $tr = $(this).parents('tr');
  14. if($('#relationTable .delRelation').length == 1)
  15. {
  16. $tr.find('select').val('').trigger('chosen:updated');
  17. $tr.find('input[type=checkbox]').prop('checked', false);
  18. return false;
  19. }
  20. $tr.remove();
  21. processNext();
  22. });
  23. $(document).on('change', '#relationTable [name^=next]', function()
  24. {
  25. processNext();
  26. var $field = $(this).parents('tr').find('[name^=field]');
  27. var field = $field.val();
  28. var link = createLink('workflowfield', 'ajaxGetField', 'module=' + $(this).val());
  29. $field.load(link, function(response)
  30. {
  31. $field.val(field).trigger('chosen:updated');
  32. });
  33. });
  34. /* Relation */
  35. $(document).on('change', '#relationTable [name^=createField]', function()
  36. {
  37. var $parent = $(this).parents('.input-group');
  38. var checked = $(this).prop('checked');
  39. $parent.find('[name^=field]').val('').trigger('chosen:updated');
  40. $parent.find('[name^=newField]').toggle(checked).val('');
  41. $parent.find('.chosen-container').toggle(!checked);
  42. });
  43. $(document).on('change', '#relationTable [name^=action]', function()
  44. {
  45. var value = $(this).val();
  46. var checked = $(this).prop('checked');
  47. if(checked)
  48. {
  49. if(value == 'one2one') $(this).parents('td').find('[value=one2many]').prop('checked', false);
  50. if(value == 'one2many') $(this).parents('td').find('[value=one2one]').prop('checked', false);
  51. if(value == 'many2one') $(this).parents('td').find('[value=many2many]').prop('checked', false);
  52. if(value == 'many2many') $(this).parents('td').find('[value=many2one]').prop('checked', false);
  53. }
  54. });
  55. $('#relationTable [name^=next]').change();
  56. })
  57. /**
  58. * Make sure each next module and field can be selected only once.
  59. *
  60. * @access public
  61. * @return void
  62. */
  63. function processNext()
  64. {
  65. $('#relationTable [name^=next]').each(function()
  66. {
  67. var $this = $(this);
  68. var selected = $this.val();
  69. $this.empty().append($('#relationTemplateNext').html());
  70. $('#relationTable [name^=next]').not(this).each(function()
  71. {
  72. var next = $(this).val();
  73. if(next != 0) $this.find('option[value=' + next + ']').remove();
  74. });
  75. $this.val(selected).trigger('chosen:updated');
  76. });
  77. }