previewmultiple.html.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <?php
  2. /**
  3. * The preview multiple file of company 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 Mengyi Liu <liumengyi@easycorp.ltd>
  7. * @package company
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. include 'component/tableandcharts.html.php';
  12. include 'component/queryform.html.php';
  13. include 'component/filterpanel.html.php';
  14. $items = array();
  15. foreach($lang->metric->featureBar['preview'] as $value => $text)
  16. {
  17. $isActive = $value == $scope;
  18. $badge = $isActive && $recTotal != '' ? array('text' => $recTotal, 'class' => 'size-sm rounded-full white') : null;
  19. $items[] = item
  20. (
  21. set::id($value),
  22. set::text($text),
  23. set::active($isActive),
  24. set::badge($badge),
  25. bind::click('window.handleNavMenuClick($element)')
  26. );
  27. }
  28. div
  29. (
  30. set::id('item-tpl'),
  31. setClass('hidden'),
  32. span
  33. (
  34. setClass('{spanClass}'),
  35. set('metric-id', '{id}'),
  36. span
  37. (
  38. setClass('text'),
  39. set('title', '{name}'),
  40. '{name}'
  41. ),
  42. button
  43. (
  44. setClass('picker-deselect-btn btn size-xs ghost {multiple}'),
  45. set('onclick', 'window.handleRemoveLabel({id})'),
  46. span
  47. (
  48. setClass('close')
  49. )
  50. )
  51. )
  52. );
  53. $filterItems = $this->metric->buildFilterCheckList($filters);
  54. nav
  55. (
  56. set::className('nav-feature nav-ajax'),
  57. $items,
  58. $fnGenerateFilterContent($filterItems)
  59. );
  60. $firstScope = current(array_keys($this->lang->metric->featureBar['preview']));
  61. $exchangeScope = $scope == 'filter' ? $firstScope : $scope;
  62. toolbar
  63. (
  64. set::id('topbar'),
  65. btn
  66. (
  67. setClass('btn text-black ghost primary-hover-500'),
  68. set::icon('exchange'),
  69. set::iconClass('icon-18'),
  70. set::url(helper::createLink('metric', 'preview', "scope=$exchangeScope&viewType=single&metricID={$current->id}")),
  71. $lang->metric->viewType->single
  72. )
  73. );
  74. $metricTrees = array();
  75. foreach($groupMetrics as $key => $metrics)
  76. {
  77. if(empty($metrics)) continue;
  78. $metricCheckItems = array();
  79. foreach($metrics as $metric)
  80. {
  81. $class = $metric->id == $current->id ? 'metric-current' : '';
  82. $class .= ' check-metric font-medium checkbox';
  83. $metricCheckItems[] = item
  84. (
  85. set::text($metric->name),
  86. set::value($metric->id),
  87. set::scope($metric->scope),
  88. set::typeClass($class),
  89. set::checked($metric->id == $current->id),
  90. bind::change('window.handleCheckboxChange($element)')
  91. );
  92. }
  93. if($scope != 'collect')
  94. {
  95. $metricCount = count($metrics);
  96. $metricTrees[] = div(setClass('check-list-title') ,$this->lang->metric->objectList[$key] . "($metricCount)");
  97. }
  98. $metricTrees[] = checkList
  99. (
  100. set::className('check-list-metric'),
  101. set::primary(true),
  102. set::name('metric'),
  103. set::inline(false),
  104. $metricCheckItems
  105. );
  106. }
  107. sidebar
  108. (
  109. set::width('25%'),
  110. set::onToggle(jsRaw("window.handleSidebarToggle")),
  111. div(setClass('side'), div
  112. (
  113. setClass('canvas'),
  114. div
  115. (
  116. setClass('title flex items-center'),
  117. span
  118. (
  119. setClass('name-color side-title'),
  120. $metricList
  121. )
  122. ),
  123. div
  124. (
  125. setClass('metric-tree'),
  126. $metricTrees
  127. )
  128. ))
  129. );
  130. $star = (!empty($current->collector) and strpos($current->collector, ',' . $app->user->account . ',') !== false) ? 'star' : 'star-empty';
  131. $metricBoxs = div
  132. (
  133. set::id('metricBox' . $current->id),
  134. set('metric-id', $current->id),
  135. setClass('metricBox'),
  136. div
  137. (
  138. setClass('metric-name flex flex-between items-center'),
  139. div
  140. (
  141. span
  142. (
  143. setClass('metric-name-weight'),
  144. isset($current) ? $current->name : null
  145. ),
  146. btn
  147. (
  148. setClass('metric-collect metric-collect-' . $current->id),
  149. set::type('link'),
  150. set::icon($star),
  151. set::iconClass($star),
  152. set::square(true),
  153. set::size('sm'),
  154. set::title($lang->metric->collectStar),
  155. on::click('.metric-collect', "window.collectMetric({$current->id})")
  156. )
  157. ),
  158. div
  159. (
  160. setClass('flex-start'),
  161. toolbar
  162. (
  163. haspriv('metric', 'details') ? item(set(array
  164. (
  165. 'text' => $this->lang->metric->details,
  166. 'class' => 'ghost details',
  167. 'url' => helper::createLink('metric', 'details', "metricID=$current->id"),
  168. 'data-toggle' => 'modal'
  169. ))) : null,
  170. item(set(array
  171. (
  172. 'text' => $this->lang->metric->remove,
  173. 'class' => 'ghost metric-remove hidden',
  174. 'onclick' => "window.handleRemoveLabel($current->id)"
  175. ))),
  176. haspriv('metric', 'filters') ? item(set(array
  177. (
  178. 'icon' => 'menu-backend',
  179. 'text' => $this->lang->metric->filters,
  180. 'class' => 'ghost hidden',
  181. 'url' => '#'
  182. ))) : null,
  183. haspriv('metric', 'zAnalysis') ? item(set(array
  184. (
  185. 'icon' => 'chart-line',
  186. 'text' => $this->lang->metric->zAnalysis,
  187. 'class' => 'ghost chart-line-margin hidden',
  188. 'url' => '#'
  189. ))) : null
  190. )
  191. )
  192. ),
  193. $fnGenerateQueryForm($viewType),
  194. $fnGenerateTableAndCharts($current)
  195. );
  196. div
  197. (
  198. setClass('main'),
  199. div
  200. (
  201. setClass('canvas'),
  202. div
  203. (
  204. setClass('checked-content'),
  205. row
  206. (
  207. set::align('center'),
  208. cell
  209. (
  210. setClass('picker-multi-selections checked-label-content gap-0'),
  211. set::flex('auto')
  212. ),
  213. cell
  214. (
  215. set::width(130),
  216. set::flex('none'),
  217. div
  218. (
  219. setClass('checked-label-right'),
  220. span
  221. (
  222. setClass('checked-tip'),
  223. html(sprintf($lang->metric->selectCount, 1))
  224. ),
  225. btn
  226. (
  227. setClass('btn ghost square size-sm rounded primary-hover-500 dropdown-icon visibility-hidden'),
  228. set::icon('angle-double-right'),
  229. set::iconClass('icon-18')
  230. ),
  231. on::click('.dropdown-icon', 'setDropDown()')
  232. )
  233. )
  234. )
  235. ),
  236. div
  237. (
  238. setClass('table-and-charts'),
  239. $metricBoxs
  240. )
  241. )
  242. );
  243. render();