browse.html.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. <?php
  2. /**
  3. * The browse 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 Tingting Dai <daitingting@easycorp.ltd>
  7. * @package dataview
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('type', $type);
  12. jsVar('groupTree', json_encode($groupTree));
  13. jsVar('originTable', json_encode($originTable));
  14. featureBar();
  15. toolbar
  16. (
  17. hasPriv('dataview', 'export') && $table ? item
  18. (
  19. set
  20. (
  21. array
  22. (
  23. 'icon' => 'export',
  24. 'text' => $lang->dataview->export,
  25. 'class' => 'ghost pull-right',
  26. 'url' => createLink('dataview', 'export', "type=$type&tale=$table"),
  27. 'data-toggle' => 'modal'
  28. )
  29. )
  30. ) : null,
  31. hasPriv('dataview', 'create') ? item
  32. (
  33. set
  34. (
  35. array
  36. (
  37. 'icon' => 'plus',
  38. 'text' => $lang->dataview->create,
  39. 'class' => 'primary pull-right',
  40. 'url' => createLink('dataview', 'create'),
  41. 'data-toggle' => 'modal'
  42. )
  43. )
  44. ) : null
  45. );
  46. $settingLink = hasPriv('tree', 'browsegroup') ? createLink('tree', 'browsegroup', "dimensionID=0&groupID=0&type=dataview") . '#app=bi' : '';
  47. sidebar
  48. (
  49. tabs
  50. (
  51. on::show('renderTabpane'),
  52. tabpane
  53. (
  54. set::key('view'),
  55. set::title($lang->dataview->typeList['view']),
  56. set::active($type == 'view' ? true : false),
  57. moduleMenu(set(array
  58. (
  59. 'titleShow' => false,
  60. 'showDisplay' => false,
  61. 'modules' => array(),
  62. 'activeKey' => $table,
  63. 'settingLink' => $settingLink
  64. )))
  65. ),
  66. tabpane
  67. (
  68. set::key('table'),
  69. set::title($lang->dataview->typeList['table']),
  70. set::active($type == 'table' ? true : false),
  71. moduleMenu(set(array
  72. (
  73. 'titleShow' => false,
  74. 'showDisplay' => false,
  75. 'modules' => array(),
  76. 'activeKey' => $table
  77. )))
  78. )
  79. )
  80. );
  81. $headingActions = array();
  82. if($table && isset($dataview))
  83. {
  84. $headingActions[] = hasPriv('dataview', 'query') && $type == 'view' ? array('icon' => 'design', 'text' => $lang->dataview->design, 'class' => 'ghost', 'url' => createLink('dataview', 'query', "id=$table")) : null;
  85. $headingActions[] = hasPriv('dataview', 'edit') && $type == 'view' ? array('icon' => 'edit', 'text' => $lang->dataview->edit, 'class' => 'ghost', 'url' => createLink('dataview', 'edit', "id=$table"), 'data-toggle' => 'modal') : null;
  86. $headingActions[] = hasPriv('dataview', 'delete') && $type == 'view' ? array('icon' => 'trash', 'text' => $lang->dataview->delete, 'data-confirm' => $lang->dataview->confirmDelete, 'class' => 'ajax-submit query-delete ghost', 'url' => createLink('dataview', 'delete', "id=$table")) : null;
  87. }
  88. $viewCols = array();
  89. foreach($fields as $key => $field)
  90. {
  91. if(!helper::hasFeature('program') && strpos($key, 'program') !== false) continue;
  92. $fieldName = isset($dataview->fieldSettings->$key->name) ? $dataview->fieldSettings->$key->name : $key;
  93. if(!empty($dataview->langs))
  94. {
  95. $langs = json_decode($dataview->langs, true);
  96. if(!empty($langs)) $fieldName = $langs[$key][$clientLang] ? $langs[$key][$clientLang] : $fieldName;
  97. }
  98. if(strpos($field['type'], 'int') !== false) $field['type'] = 'int';
  99. $fieldType = \zget($config->dataview->fieldTypes, $field['type'], 'text');
  100. $viewCols[$key]['name'] = $key;
  101. $viewCols[$key]['title'] = $fieldName;
  102. $viewCols[$key]['type'] = $fieldType;
  103. }
  104. $viewDatas = array();
  105. foreach($data as $value)
  106. {
  107. $dataRow = new stdclass();
  108. foreach($fields as $key => $field) $dataRow->$key = zget($value, $key, '');
  109. $viewDatas[] = $dataRow;
  110. }
  111. if(strpos($table, $this->config->db->prefix) === false) unset($config->dataview->schema->dtable->fieldList['desc']);
  112. $i = 1;
  113. $schemaDatas = array();
  114. foreach($fields as $key => $field)
  115. {
  116. if(!helper::hasFeature('program') && strpos($key, 'program') !== false) continue;
  117. $schemaData = new stdclass();
  118. $schemaData->id = $i;
  119. $schemaData->name = $key;
  120. $schemaData->type = $field['type'];
  121. $schemaData->length = isset($field['options']['max']) ? $field['options']['max'] : '';
  122. $schemaData->null = $field['null'];
  123. if(strpos($table, $this->config->db->prefix) !== false) $schemaData->desc = $field['name'];
  124. $schemaDatas[] = $schemaData;
  125. $i++;
  126. }
  127. if(!$table)
  128. {
  129. panel
  130. (
  131. setClass('dtable-empty-tip text-gray'),
  132. $lang->dataview->notSelect
  133. );
  134. }
  135. else
  136. {
  137. panel
  138. (
  139. set::title($dataTitle . ($type == 'table' ? " {$table}" : '')),
  140. set::headingActions($headingActions),
  141. tabs
  142. (
  143. tabPane
  144. (
  145. set::key('data'),
  146. set::title($lang->dataview->data),
  147. dtable
  148. (
  149. set::cols($viewCols),
  150. set::data($viewDatas),
  151. set::footPager(usePager())
  152. )
  153. ),
  154. tabPane
  155. (
  156. set::key('schema'),
  157. set::title($lang->dataview->schema),
  158. dtable
  159. (
  160. set::cols($config->dataview->schema->dtable->fieldList),
  161. set::data($schemaDatas)
  162. )
  163. ),
  164. !empty($dataview) ? tabPane
  165. (
  166. set::key('details'),
  167. set::title($lang->dataview->details),
  168. tableData
  169. (
  170. item
  171. (
  172. set::name($lang->dataview->name),
  173. $dataview->name
  174. ),
  175. item
  176. (
  177. set::name($lang->dataview->code),
  178. $dataview->code
  179. ),
  180. item
  181. (
  182. set::name($lang->dataview->view),
  183. empty($dataview->sql) ? '' :$dataview->view
  184. ),
  185. item
  186. (
  187. set::name($lang->dataview->group),
  188. zget($groups, $dataview->group)
  189. ),
  190. item
  191. (
  192. set::name($lang->dataview->sql),
  193. $dataview->sql
  194. )
  195. )
  196. ) : null
  197. )
  198. );
  199. }
  200. render();