browse.ui.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. changeType = function()
  2. {
  3. const type = event.target.value;
  4. const $form = $(event.target).closest('form');
  5. $form.find('[name^=options]').closest('.form-group').toggleClass('hidden', type != 'option');
  6. $form.find('#sql').closest('.form-group').toggleClass('hidden', type != 'sql');
  7. $form.find('[name=keyField]').closest('.form-group').toggleClass('hidden', type != 'sql');
  8. $form.find('[name=module]').closest('.form-group').toggleClass('hidden', type != 'system');
  9. $form.find('[name=lang]').closest('.form-group').toggleClass('hidden', type != 'lang');
  10. };
  11. changeSql = function()
  12. {
  13. const $sql = $(event.target);
  14. if($sql.val() == '') return false;
  15. $.post($.createLink('workflowdatasource', 'ajaxCheckSql'), {sql: $sql.val()}, function(response)
  16. {
  17. const $keyPicker = $('[name=keyField]').zui('picker');
  18. const $valuePicker = $('[name=valueField]').zui('picker');
  19. $keyPicker.$.setValue('');
  20. $valuePicker.$.setValue('');
  21. response = JSON.parse(response);
  22. if(response.result == 'success') {
  23. $keyPicker.render({items: response.options});
  24. $valuePicker.render({items: response.options});
  25. }
  26. if(response.result == 'fail') {
  27. $keyPicker.render({items: []});
  28. $valuePicker.render({items: []});
  29. const $tip = $('<div class="form-tip ajax-form-tip text-danger pre-line" id="sqlTip"><div>').text(response.message);
  30. $sql.addClass('has-error').after($tip);
  31. }
  32. });
  33. };
  34. changeModule = function()
  35. {
  36. const module = event.target.value;
  37. if(module == '') return false;
  38. const $form = $(event.target).closest('form');
  39. const $methodPicker = $form.find('[name=method]').zui('picker');
  40. const $methodDesc = $form.find('#methodDesc');
  41. $methodPicker.$.setValue('');
  42. $methodPicker.render({items: []});
  43. $methodDesc.val('');
  44. $form.find('#paramsDIV').empty();
  45. $.getJSON($.createLink('workflowdatasource', 'ajaxGetModuleMethods', 'module=' + module), function(methods)
  46. {
  47. $methodPicker.render({items: methods});
  48. });
  49. };
  50. changeMethod = function()
  51. {
  52. const $form = $(event.target).closest('form');
  53. const module = $form.find('[name=module]').val();
  54. const method = event.target.value;
  55. if(module == '' || method == '') return false;
  56. $.get($.createLink('workflowdatasource', 'ajaxGetMethodComment', 'module=' + module + '&method=' + method), function(methodDesc)
  57. {
  58. $form.find('#methodDesc').val(methodDesc).attr('title', methodDesc);
  59. });
  60. var link = $.createLink('workflowdatasource', 'ajaxGetMethodParams', 'module=' + module + '&method=' + method);
  61. $('#paramsDIV').load(link);
  62. };
  63. addOption = function(target)
  64. {
  65. const $inputGroup = $(event.target).closest('.input-group');
  66. $inputGroup.after($inputGroup.clone());
  67. $inputGroup.next().find('input').val('');
  68. };
  69. delOption = function(target)
  70. {
  71. const $inputGroup = $(event.target).closest('.input-group');
  72. if($inputGroup.siblings('.input-group').length > 0) {
  73. $inputGroup.remove();
  74. } else {
  75. $inputGroup.find('input').val('');
  76. }
  77. };
  78. onRenderCell = function(result, {row, col})
  79. {
  80. if(result) {
  81. if(col.name == 'datasource') {
  82. if(row.data.type == 'option' && result[0]) return [Object.values(JSON.parse(result[0])).join()];
  83. if(row.data.type == 'category') return ['treeModel->getOptionMenu(0, "datasource_' + row.data.id + '")'];
  84. if(row.data.type == 'system' && result[0]) {
  85. const datasource = JSON.parse(result[0]);
  86. const params = datasource.params.map(function(param) {return param.name + ' = "' + param.value + '"'});
  87. return [datasource.module + 'Model->' + datasource.method + '(' + params.join(', ') + ')'];
  88. }
  89. }
  90. if(col.name == 'buildin') return [{html: row.data.buildin == 1 ? '<i class=\"icon icon-check text-success\"></i>' : '<i class=\"icon icon-close text-danger\"></i>'}];
  91. }
  92. return result;
  93. }