browse.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. $(function()
  2. {
  3. $('.example-text-holder').each(function()
  4. {
  5. $(this).attr('data-size', Math.floor(Math.random() * 8) + 2);
  6. });
  7. $('#labelList .select-label').click(function()
  8. {
  9. var labelID = $(this).parents('tr').data('id');
  10. selectLabels(labelID);
  11. });
  12. $('#labelList').on('sort.sortable', function(e, data)
  13. {
  14. $.post(createLink('workflowlabel', 'sort'), data.orders, function(response)
  15. {
  16. if(response.result != 'success'){bootbox.alert(response.message);}
  17. var orders = [];
  18. for(var i in data.orders) orders[data.orders[i]] = i;
  19. sortLabels(orders);
  20. var labelID = data.element.data('id');
  21. selectLabels(labelID);
  22. }, 'json');
  23. });
  24. $(document).on('change', '[name^=fields], [name^=operators]', function()
  25. {
  26. var $tr = $(this).parents('tr');
  27. var $td = $tr.find('td.value');
  28. var $value = $tr.find('[name^=values]:first');
  29. var field = $tr.find('[name^=field]').val();
  30. var operator = $tr.find('[name^=operators]').val();
  31. var value2 = $tr.find('[name^=values2]:first').val();
  32. var key = $tr.data('key');
  33. var value = window.btoa(encodeURI($value.val()));
  34. var name = window.btoa(encodeURI('values[' + key + ']'));
  35. $.get(createLink('workflowfield', 'ajaxGetFieldControl', 'module=' + window.moduleName + '&field=' + field + '&value=' + value + '&elementName=' + name), function(response)
  36. {
  37. var values = response;
  38. if(operator == 'between')
  39. {
  40. var values2 = response.replace(/values/g, 'values2');
  41. $td.empty().html("<div class='input-group'>" + values + "<span class='input-group-addon values2'></span>" + values2 + '</div>');
  42. $td.find('[name^=values2]:first').val(value2);
  43. }
  44. else
  45. {
  46. name = $td.find('[name^=values]:first').attr('name').replace(/values/g, 'values2');
  47. $td.empty().html(values + "<input type='hidden' name='" + name + "'>");
  48. }
  49. $td.find('.picker-select').each(function()
  50. {
  51. initSelect($(this));
  52. });
  53. $td.find('select.chosen').chosen();
  54. $td.find('.form-datetime').datetimepicker(
  55. {
  56. language: config.clientLang,
  57. weekStart: 1,
  58. todayBtn: 1,
  59. autoclose: 1,
  60. todayHighlight: 1,
  61. startView: 2,
  62. forceParse: 0,
  63. showMeridian: 1,
  64. format: 'yyyy-mm-dd hh:ii'
  65. });
  66. $td.find('.form-date').datetimepicker(
  67. {
  68. language: config.clientLang,
  69. weekStart: 1,
  70. todayBtn: 1,
  71. autoclose: 1,
  72. todayHighlight: 1,
  73. startView: 2,
  74. minView: 2,
  75. forceParse: 0,
  76. format: 'yyyy-mm-dd'
  77. });
  78. $td.find('.input-group').fixInputGroup();
  79. });
  80. });
  81. $(document).on('change', '[name^=orderFields]', function()
  82. {
  83. processOrderFields();
  84. });
  85. $(document).on('click', '.addItem', function()
  86. {
  87. var $tr = $(this).parents('tr');
  88. var type = $(this).parent().data('type');
  89. $tr.after(window[type + 'Row'].replace(/KEY/g, window.key));
  90. $tr.next().find('.chosen').chosen();
  91. $tr.next().find('.values2').hide();
  92. $tr.next().find('.input-group').fixInputGroup();
  93. processOrderFields();
  94. window.key++;
  95. })
  96. $(document).on('click', '.delItem', function()
  97. {
  98. $(this).parents('tr').remove();
  99. processOrderFields();
  100. })
  101. $panelHeadingHeight = $('.panel-heading').outerHeight(true);
  102. $panelMarginBottom = $('.panel').css('margin-bottom').replace('px', '');
  103. $editorNavHeight = $('#editorNav').outerHeight(true);
  104. $editorMenuHeight = $('#editorMenu').outerHeight();
  105. $spaceHeight = $('.space.space-sm').outerHeight(true);
  106. $maxHeight = $(window).height() - $panelHeadingHeight - $panelMarginBottom - $editorNavHeight - $editorMenuHeight - $spaceHeight;
  107. $('.panel-body').css('max-height', $maxHeight + 'px');
  108. $(document).on('click', '.alert > .remove', function(){$.get(createLink('workflowlabel', 'removeFeatureTips'));});
  109. });
  110. function sortLabels(orders)
  111. {
  112. for(var i in orders)
  113. {
  114. $('.preview-content .menu .nav').append($('li[data-id=' + orders[i] + ']'));
  115. }
  116. }
  117. function selectLabels(labelID)
  118. {
  119. $('#labelList tr.active').removeClass('active');
  120. $('#labelList tr[data-id=' + labelID + ']').addClass('active');
  121. $('.preview-content .menu .nav li').removeClass('active');
  122. $('.preview-content .menu .nav li[data-id=' + labelID + ']').addClass('active');
  123. }
  124. function processOrderFields()
  125. {
  126. $('[name^=orderFields] option').show();
  127. $('[name^=orderFields]').each(function()
  128. {
  129. var field = $(this).val();
  130. if(field)
  131. {
  132. $('[name^=orderFields]').not(this).find('option[value=' + field + ']').hide();
  133. $('[name^=orderFields]').not(this).trigger('chosen:updated');
  134. }
  135. });
  136. }