query.html.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. /**
  3. * The query view file of dataview module of ZenTaoPMS.
  4. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(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 Xin Zhou <zhouxin@easycorp.ltd>
  7. * @package dataview
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('rawMethod', $app->rawMethod);
  12. jsVar('warningDesign', $lang->dataview->error->warningDesign);
  13. jsVar('langSettings', isset($data->langs) ? $data->langs : '');
  14. jsVar('objectFields', isset($objectFields) ? $objectFields : array());
  15. if($app->rawMethod == 'query' && isset($viewID)) jsVar('viewID', $viewID);
  16. $biPath = $this->app->getModuleExtPath('bi', 'ui');
  17. include $biPath['common'] . 'query.dictionary.html.php';
  18. featureBar
  19. (
  20. backBtn
  21. (
  22. set::icon('back'),
  23. set::type('ghost'),
  24. set::url($backLink),
  25. $lang->goback
  26. )
  27. );
  28. toolbar
  29. (
  30. modalTrigger
  31. (
  32. setClass(array('hidden' => $app->rawMethod != 'create')),
  33. btn
  34. (
  35. setClass('primary pull-right'),
  36. set::icon('save'),
  37. $lang->save
  38. ),
  39. set::target('#createModal')
  40. ),
  41. btn
  42. (
  43. setClass('primary pull-right', array('hidden' => $app->rawMethod != 'query')),
  44. set::icon('save'),
  45. $lang->save,
  46. on::click()->do('saveQuery()')
  47. )
  48. );
  49. $tableOptions = $this->loadModel('bi')->prepareFieldObjects();
  50. div
  51. (
  52. setID('state'),
  53. set('data-state', $state),
  54. set('data-changed', array()),
  55. set('data-url', createLink('dataview', $app->rawMethod, $app->rawMethod == 'query' ? "viewID=$viewID" : ''))
  56. );
  57. $mode = $state->mode;
  58. $isTextMode = $mode == 'text';
  59. $canChangeMode = $state->canChangeMode;
  60. $fnGenerateDictionary($isTextMode);
  61. div
  62. (
  63. setID('queryBase'),
  64. queryBase
  65. (
  66. set::title($lang->dataview->sqlQuery),
  67. set::mode($state->mode),
  68. set::sql($state->sql),
  69. set::cols($state->queryCols),
  70. set::data($state->queryData),
  71. set::settings($state->fieldSettings),
  72. set::tableOptions($tableOptions),
  73. set::error($state->errorMsg),
  74. set::pager(usePager('pager', 'customLink', null, null, 'window.postQueryResult')),
  75. set::onQuery('ajaxQuery()'),
  76. set::onSqlChange('handleSqlChange()'),
  77. set::onSaveFields('saveFields()'),
  78. to::heading
  79. (
  80. div
  81. (
  82. setClass('absolute right-4 top-2'),
  83. modalTrigger
  84. (
  85. btn
  86. (
  87. setClass('ghost', array('hidden' => $isTextMode)),
  88. $lang->bi->previewSql
  89. ),
  90. set::target('#sqlModal')
  91. ),
  92. span(setClass('divider', array('hidden' => $isTextMode))),
  93. btn
  94. (
  95. setID('changeMode'),
  96. setClass('ghost', array('hidden' => !$canChangeMode)),
  97. set('data-mode', $mode),
  98. set('data-tip', $lang->bi->changeModeTip),
  99. set::icon('exchange'),
  100. $isTextMode ? $lang->bi->toggleSqlBuilder : $lang->bi->toggleSqlText,
  101. on::click()->do('changeMode(event)')
  102. ),
  103. btn
  104. (
  105. setID('changeModeDisabled'),
  106. setClass('ghost', array('hidden' => $canChangeMode)),
  107. set('data-mode', $mode),
  108. set::hint($lang->bi->modeDisableTip),
  109. set::icon('exchange'),
  110. set::disabled(),
  111. $isTextMode ? $lang->bi->toggleSqlBuilder : $lang->bi->toggleSqlText
  112. )
  113. )
  114. ),
  115. to::builder
  116. (
  117. !$isTextMode ? sqlBuilder
  118. (
  119. set::data($state->sqlbuilder),
  120. set::onUpdate('updatePage'),
  121. set::tableList($tableList),
  122. set::steps(array('table', 'field', 'func', 'where', 'group'))
  123. ) : null
  124. )
  125. ),
  126. modal
  127. (
  128. setID('sqlModal'),
  129. set::title($lang->bi->previewSql),
  130. div
  131. (
  132. html(str_replace(PHP_EOL, '<br/ >', $state->sql))
  133. )
  134. )
  135. );