query.step.ui.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. window.handleQueryFilterChange = function(event)
  2. {
  3. const {index, mode, name, value} = getQueryFilter(event);
  4. let {filters, addQueryFilter} = pivotState();
  5. if(mode == 'edit')
  6. {
  7. filters[index][name] = value;
  8. pivotState('filters', filters);
  9. }
  10. else
  11. {
  12. addQueryFilter[name] = value;
  13. pivotState('addQueryFilter', addQueryFilter);
  14. }
  15. if(['type', 'typeOption'].includes(name)) updateDesignPage('queryFilter');
  16. }
  17. window.changeMode = function(event)
  18. {
  19. const mode = $(event.currentTarget).data('mode');
  20. if(mode == 'builder')
  21. {
  22. zui.Modal.confirm({message: changeModeTip}).then((res) =>
  23. {
  24. if(res) doChangeMode(mode);
  25. });
  26. return;
  27. }
  28. doChangeMode(mode);
  29. }
  30. window.doChangeMode = function(mode)
  31. {
  32. const changeMode = mode == 'text' ? 'builder' : 'text';
  33. pivotState('mode', changeMode);
  34. pivotState('errorMsg', '');
  35. updateDesignPage('changeMode');
  36. }
  37. window.addQueryFilter = function()
  38. {
  39. updateDesignPage('addQueryFilter');
  40. }
  41. window.deleteQueryFilter = function(event)
  42. {
  43. const {index, mode} = getQueryFilter(event);
  44. let {filters, addQueryFilter} = pivotState();
  45. if(mode == 'edit')
  46. {
  47. filters.splice(index, 1);
  48. pivotState('filters', filters);
  49. }
  50. else
  51. {
  52. addQueryFilter = {};
  53. pivotState('addQueryFilter', addQueryFilter);
  54. }
  55. updateDesignPage('queryFilter');
  56. }
  57. window.saveQueryFilter = function()
  58. {
  59. if(checkQueryFilter()) return;
  60. updateDesignPage('saveQueryFilter');
  61. }
  62. window.checkQueryFilter = function()
  63. {
  64. $('#queryFilterPanel .form-tip').addClass('hidden');
  65. let hasError = false;
  66. const {filters, addQueryFilter} = pivotState();
  67. filters.push(addQueryFilter);
  68. filters.forEach((filter, index) =>
  69. {
  70. Object.keys(filter).forEach(name =>
  71. {
  72. if(!['field', 'name'].includes(name)) return;
  73. if(!filter[name]?.length)
  74. {
  75. hasError = true;
  76. showErrorTip(index, name);
  77. }
  78. });
  79. });
  80. return hasError;
  81. }
  82. window.showErrorTip = function(index, name)
  83. {
  84. const formRow = $('#queryFilterPanel .query-filter-row')[index];
  85. const $control = $(formRow).find('#' + name + 'Box').find('#' + name);
  86. const $formTip = $control.siblings('.form-tip');
  87. $formTip.removeClass('hidden');
  88. }
  89. window.getQueryFilter = function(event)
  90. {
  91. const $target = $(event.target);
  92. const $row = $target.closest('.query-filter-row');
  93. const index = $row.data('index');
  94. const mode = $row.data('mode');
  95. let name = $target?.attr?.('name')?.split?.('_')?.[0];
  96. if(name && name.indexOf("[") !== -1) name = name.substring(0, name.indexOf("["));
  97. return {
  98. index,
  99. mode,
  100. name,
  101. value: $target?.val?.()
  102. }
  103. }