querybase.html.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?php js::set('lang', $lang->dataview);?>
  2. <?php js::set('queryResult', $lang->dataview->queryResult);?>
  3. <?php js::set('clientLang', $this->app->getClientLang());?>
  4. <?php js::set('currentTheme', $this->app->cookie->theme);?>
  5. <?php js::set('recTotalTip', $lang->dataview->recTotalTip);?>
  6. <?php js::set('recPerPageTip', $lang->dataview->recPerPageTip);?>
  7. <div id='dictionary' class='dictionary panel' style="float: left; width: calc(15% - 15px); max-height: 600px; overflow:auto; margin-right: 15px">
  8. <ul id='dictionaryTree' class='tree' data-ride='tree'>
  9. <?php $dictionary = $this->loadModel('bi')->getTableFields();?>
  10. <?php foreach($dictionary as $table => $fields):?>
  11. <li class='table-item' data-dict="<?php echo $table;?>" onclick='handleClickDictTable(event)'><a href='#'><?php echo $table . '(table)';?></a>
  12. <?php foreach($fields as $field => $fieldInfo):?>
  13. <ul><li class='field-item' data-dict="<?php echo $field;?>" onclick='handleClickDictField(event)'><a href='#'><?php echo $field . '(' . $fieldInfo['type'] . ')';?></a></li></ul>
  14. <?php endforeach;?>
  15. </li>
  16. <?php endforeach;?>
  17. </ul>
  18. </div>
  19. <div id='queryPanel' style="float: right; width: 85%;">
  20. <div class='panel'>
  21. <div class='panel-heading'>
  22. <div class='btn-active-text'><span class='text ptitle'><?php echo $lang->dataview->sqlQuery;?></span></div>
  23. </div>
  24. <form method='post' id='dataform' class="form-ajax">
  25. <table class='table table-form'>
  26. <tr>
  27. <th style="width: 0; padding: 0; margin: 0;"></th>
  28. <td>
  29. <?php echo html::textarea('sql', isset($data) ? $data->sql : '', "placeholder='" . $lang->dataview->sqlPlaceholder . "' class='form-control' rows=6");?>
  30. </td>
  31. </tr>
  32. <tr class="error hidden"><th></th><td></td></tr>
  33. <tr>
  34. <td></td>
  35. <td>
  36. <button type="button" class="btn query btn-primary"><?php echo $lang->dataview->query;?></button>
  37. <span id='querying' class='hidden query-padding'><?php echo $lang->dataview->querying;?></span>
  38. </td>
  39. </tr>
  40. </table>
  41. </form>
  42. </div>
  43. <div class="panel table-panel" id='queryTable'>
  44. <div class="panel-heading titleResult">
  45. <div class='btn-active-text'>
  46. <span class='text'><?php echo $lang->dataview->result;?></span>
  47. <button type="button" class="btn btn-link fieldSettings pull-right"><i class='icon icon-cog-outline'></i> <?php echo $lang->dataview->fieldSettings;?></button>
  48. <?php if($this->app->rawModule == 'dataview' and common::hasPriv('dataview', 'export')):?>
  49. <button type="button" id='exportDataview' class="btn btn-link hidden dataview-export pull-right"><i class='icon icon-export'></i> <?php echo $lang->dataview->export;?></button>
  50. <?php endif;?>
  51. </div>
  52. </div>
  53. <div class="table-empty-tip">
  54. <p><span class="text-muted"><?php echo $lang->dataview->noQueryData;?></span></p>
  55. </div>
  56. <div style="overflow-x: auto; padding: 0px 20px;">
  57. <table class="result table table-condensed table-striped table-bordered table-fixed datatable">
  58. </table>
  59. </div>
  60. <div class='table-footer hide'>
  61. <ul class="pager">
  62. <li><div class="pager-label recTotal"></div></li>
  63. <li>
  64. <div class="btn-group pager-size-menu dropup">
  65. <button type="button" class="btn dropdown-toggle recPerPage" data-toggle="dropdown" style="border-radius: 4px;"></button>
  66. <ul class="dropdown-menu">
  67. <li><a href="javascript:;" data-size="5">5</a></li>
  68. <li><a href="javascript:;" data-size="10">10</a></li>
  69. <li><a href="javascript:;" data-size="15">15</a></li>
  70. <li><a href="javascript:;" data-size="20">20</a></li>
  71. <li><a href="javascript:;" data-size="25">25</a></li>
  72. <li><a href="javascript:;" data-size="30">30</a></li>
  73. <li><a href="javascript:;" data-size="35">35</a></li>
  74. <li><a href="javascript:;" data-size="40">40</a></li>
  75. <li><a href="javascript:;" data-size="45">45</a></li>
  76. <li><a href="javascript:;" data-size="50">50</a></li>
  77. <li><a href="javascript:;" data-size="100">100</a></li>
  78. <li><a href="javascript:;" data-size="200">200</a></li>
  79. <li><a href="javascript:;" data-size="500">500</a></li>
  80. <li><a href="javascript:;" data-size="1000">1000</a></li>
  81. <li><a href="javascript:;" data-size="2000">2000</a></li>
  82. </ul>
  83. </div>
  84. </li>
  85. <li class='pager-item-left first-page'>
  86. <a class='pager-item' data-page='1' href='javascript:;'><i class='icon icon-first-page'></i></a>
  87. </li>
  88. <li class='pager-item-left left-page'>
  89. <a class='pager-item' data-page='1' href='javascript:;'><i class='icon icon-angle-left'></i></a>
  90. </li>
  91. <li><div class='pager-label page-number'></div></li>
  92. <li class='pager-item-right right-page'>
  93. <a class='pager-item' data-page='1' href='javascript:;'><i class='icon icon-angle-right'></i></a>
  94. </li>
  95. <li class='pager-item-right last-page'>
  96. <a class='pager-item' data-page='1' href='javascript:;'><i class='icon icon-last-page'></i></a>
  97. </li>
  98. </ul>
  99. </div>
  100. </div>
  101. </div>
  102. <div class="modal fade" id="addModal">
  103. <div class="modal-dialog" style="width: 1200px;">
  104. <div class="modal-content">
  105. <div class="modal-header">
  106. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only"><?php echo $lang->common->close;?></span></button>
  107. <h4 class="modal-title"><?php echo $lang->dataview->fieldSettings;?></h4>
  108. </div>
  109. <div class="modal-body">
  110. </div>
  111. </div>
  112. </div>
  113. </div>
  114. <template id="fieldSettingTpl">
  115. <form id="edit" onsubmit="javascript:saveSettings();return false;">
  116. <table class="table table-form">
  117. <thead>
  118. <tr>
  119. <th class='text-center' style='width: 128px;'><?php echo $lang->dataview->field;?></th>
  120. <?php if($this->app->getModuleName() !== 'dataview'):?>
  121. <th style='width: 128px; padding-right: 0px;'><?php echo $lang->dataview->relatedTable;?></th>
  122. <th style='width: 128px; padding-left: 0px;'><?php echo $lang->dataview->relatedField;?></th>
  123. <?php endif;?>
  124. <th><?php echo $lang->dataview->multilingual;?></th>
  125. </tr>
  126. </thead>
  127. <tbody></tbody>
  128. <tfoot>
  129. <tr>
  130. <td <?php echo $this->app->getModuleName() !== 'dataview' ? "colspan='4'" : "colspan='2'"?> class="text-center">
  131. <button type="submit" id="submit" class="btn btn-wide btn-primary"><?php echo $lang->dataview->save;?></button>
  132. </td>
  133. </tr>
  134. </tfoot>
  135. </table>
  136. </form>
  137. </template>
  138. <template id="tbodyTpl">
  139. <tr>
  140. <td><?php echo html::input("{field}", "{field}", "class='form-control text-center' readonly='readonly'");?></td>
  141. <?php if($this->app->getModuleName() !== 'dataview'):?>
  142. <td style='padding-right: 0px;' data-field='{field}'><?php echo html::select('relatedTable[{field}]', array(), '', "class='form-control chosen' onchange='setRelatedField(this)'")?></td>
  143. <td style='padding-left: 0px;' data-field='{field}'><?php echo html::select('relatedField[{field}]', array(), '', "class='form-control chosen'")?></td>
  144. <?php endif;?>
  145. <td>
  146. <div class='input-group'>
  147. <?php foreach($config->langs as $key => $name):?>
  148. <span class="input-group-addon"><?php echo $name?></span>
  149. <?php echo html::input("langs[{field}][$key]", '', "class='form-control' data-field='{field}' data-lang='$key' onclick='activeField(this)' onblur='removeActive(this)'");?>
  150. <?php endforeach;?>
  151. </div>
  152. </td>
  153. </tr>
  154. <script>
  155. $(document).ready(function()
  156. {
  157. $("select[name^=relatedTable]+div.picker, select[name^=relatedField]+div.picker").on('click', function()
  158. {
  159. var fieldID = $(this).closest('td').data('field');
  160. if(currentTheme == 'default')
  161. {
  162. $(this).closest('tr').find('#' + fieldID).css('color', '#2e7fff');
  163. }
  164. else
  165. {
  166. $(this).closest('tr').find('#' + fieldID).addClass('text-primary');
  167. }
  168. });
  169. $("select[name^=relatedTable]+div.picker input, select[name^=relatedField]+div.picker input").on('blur', function()
  170. {
  171. var fieldID = $(this).closest('td').data('field');
  172. if(currentTheme == 'default')
  173. {
  174. $(this).closest('tr').find('#' + fieldID).css('color', '#0b0f18');
  175. }
  176. else
  177. {
  178. $(this).closest('tr').find('#' + fieldID).removeClass('text-primary');
  179. }
  180. });
  181. })
  182. </script>
  183. </template>