query.step.html.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?php
  2. /**
  3. * The step query view file of pivot design module of ZenTaoPMS.
  4. * @copyright Copyright 2009-2024 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  5. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  6. * @author Chenxuan Song <songchenxuan@easycorp.ltd>
  7. * @package pivot
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. $fnGenerateStepQueryContent = function() use ($pivotState, $lang, $tableList, $tableOptions, $fnGenerateCommonFilters, $fnGenerateDictionary)
  12. {
  13. $step = $pivotState->step;
  14. $filters = $fnGenerateCommonFilters();
  15. $mode = $pivotState->mode;
  16. $canChangeMode = $pivotState->canChangeMode;
  17. $isTextMode = $mode == 'text';
  18. $canUseQuery = $pivotState->isQueryFilter() || empty($pivotState->filters);
  19. $isQueryStep = $pivotState->step == 'query';
  20. if($canUseQuery)
  21. {
  22. $modalFilters = $pivotState->filters;
  23. foreach($modalFilters as $index => $filter)
  24. {
  25. $optionUrl = $this->getFilterOptionUrl($filter, $pivotState->sql, $pivotState->fieldSettings);
  26. $modalFilters[$index]['items'] = $optionUrl;
  27. }
  28. $addQueryFilter = $pivotState->addQueryFilter;
  29. if(!empty($addQueryFilter) && strpos($addQueryFilter['type'], 'select') !== false) $addQueryFilter['items'] = $this->getFilterOptionUrl($addQueryFilter, $pivotState->sql, $pivotState->fieldSettings);
  30. }
  31. return div
  32. (
  33. setID("step$step"),
  34. div
  35. (
  36. queryBase
  37. (
  38. set::title($lang->bi->sqlQuery),
  39. set::titleTip($lang->pivot->step1QueryTip),
  40. set::mode($mode),
  41. set::sql($pivotState->sql),
  42. set::cols($pivotState->queryCols),
  43. set::data($pivotState->queryData),
  44. set::settings($pivotState->fieldSettings),
  45. set::tableOptions($tableOptions),
  46. set::error($pivotState->errorMsg),
  47. set::pager(usePager('pager', 'customLink', null, null, 'window.postQueryResult')),
  48. set::onQuery('ajaxQuery()'),
  49. set::onSqlChange('handleSqlChange()'),
  50. set::onSaveFields('saveFields()'),
  51. to::heading
  52. (
  53. div
  54. (
  55. setClass('absolute right-4 top-2'),
  56. modalTrigger
  57. (
  58. btn
  59. (
  60. setClass('ghost', array('hidden' => $isTextMode)),
  61. $lang->bi->previewSql
  62. ),
  63. set::target('#sqlModal')
  64. ),
  65. modal
  66. (
  67. setID('sqlModal'),
  68. set::title($lang->bi->previewSql),
  69. div
  70. (
  71. html(str_replace(PHP_EOL, '<br/ >', empty($pivotState->sql) ? $lang->bi->noSql : $pivotState->sql))
  72. )
  73. ),
  74. span(setClass('divider', array('hidden' => $isTextMode))),
  75. btn
  76. (
  77. setID('changeMode'),
  78. setClass('ghost', array('hidden' => !$canChangeMode)),
  79. set('data-mode', $mode),
  80. set::icon('exchange'),
  81. $isTextMode ? $lang->bi->toggleSqlBuilder : $lang->bi->toggleSqlText,
  82. on::click()->do('changeMode(event)')
  83. ),
  84. btn
  85. (
  86. setID('changeModeDisabled'),
  87. setClass('ghost', array('hidden' => $canChangeMode)),
  88. set('data-mode', $mode),
  89. set::hint($lang->bi->modeDisableTip),
  90. set::icon('exchange'),
  91. set::disabled(),
  92. $isTextMode ? $lang->bi->toggleSqlBuilder : $lang->bi->toggleSqlText
  93. )
  94. )
  95. ),
  96. to::formActions
  97. (
  98. modalTrigger
  99. (
  100. setClass(array('hidden' => !$isQueryStep)),
  101. btn
  102. (
  103. setClass(array('hidden' => !$isTextMode)),
  104. set::type('ghost'),
  105. set::icon('cog-outline'),
  106. set::disabled(!$canUseQuery),
  107. $lang->dataview->add . $lang->dataview->queryFilters,
  108. !$canUseQuery ? set::hint($this->lang->pivot->cannotAddQuery) : null
  109. ),
  110. $canUseQuery ? set::target('#queryFilterModal') : null
  111. ),
  112. btn
  113. (
  114. setClass('ml-auto next-step query-next'),
  115. $lang->pivot->nextStep
  116. ),
  117. btn
  118. (
  119. setClass('ml-auto query-next-disabled hidden'),
  120. set::disabled(),
  121. set::hint($lang->pivot->cannotNextStep),
  122. $lang->pivot->nextStep
  123. )
  124. ),
  125. to::builder
  126. (
  127. !$isTextMode ? sqlBuilder
  128. (
  129. set::data($pivotState->sqlbuilder),
  130. set::onUpdate('updateDesignPage'),
  131. set::tableList($tableList)
  132. ) : null
  133. ),
  134. to::formFooter
  135. (
  136. div
  137. (
  138. setID('queryFilterContent'),
  139. setClass('flex justify-start bg-canvas stepquery-query-filters', array('hidden' => empty($filters))),
  140. $filters
  141. )
  142. )
  143. ),
  144. $canUseQuery ? queryFilterModal
  145. (
  146. set::data($modalFilters),
  147. set::addData($addQueryFilter),
  148. set::onAdd('addQueryFilter()'),
  149. set::onRemove('deleteQueryFilter(event)'),
  150. set::onChange('handleQueryFilterChange(event)'),
  151. set::onSave('saveQueryFilter()')
  152. ) : null
  153. )
  154. );
  155. };