previewsingle.html.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. /**
  3. * The browse view 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. $currentID = $current->id ?? 0;
  15. $fnGenerateSide = function() use($groupMetrics, $current, $viewType, $scope, $lang, $filtersBase64)
  16. {
  17. $metricList = array();
  18. foreach($groupMetrics as $key => $metrics)
  19. {
  20. if(empty($metrics)) continue;
  21. if($scope != 'collect')
  22. {
  23. $metricCount = count($metrics);
  24. $metricList[] = li(set::className('metric-group'), $lang->metric->objectList[$key] . "($metricCount)");
  25. }
  26. foreach($metrics as $metric)
  27. {
  28. $class = $metric->id == $current->id ? 'metric-current' : '';
  29. $params = "scope=$scope&viewType=$viewType&metricID={$metric->id}";
  30. if(!empty($filtersBase64)) $params .= "&filtersBase64={$filtersBase64}";
  31. $metricList[] = li
  32. (
  33. set::className($class . ' metric-item font-medium'),
  34. a
  35. (
  36. $metric->name,
  37. set::href(helper::createLink('metric', 'preview', $params))
  38. )
  39. );
  40. }
  41. }
  42. return ul($metricList);
  43. };
  44. $filterItems = $this->metric->buildFilterCheckList($filters);
  45. featureBar
  46. (
  47. set::load(''),
  48. set::current($scope),
  49. set::linkParams("scope={key}"),
  50. $fnGenerateFilterContent($filterItems)
  51. );
  52. $firstScope = current(array_keys($this->lang->metric->featureBar['preview']));
  53. $exchangeScope = $scope == 'filter' ? $firstScope : $scope;
  54. toolbar
  55. (
  56. set::id('topbar'),
  57. btn(setClass('btn text-black ghost primary-hover-500'), set::icon('exchange'), set::iconClass('icon-18'), set::url(helper::createLink('metric', 'preview', "scope=$exchangeScope&viewType=multiple&metricID={$currentID}")), $lang->metric->viewType->multiple)
  58. );
  59. $sideTitle = $scope == 'filter' ? sprintf($lang->metric->filter->filterTotal, count($metrics)) : $metricList;
  60. $star = (!empty($current->collector) and strpos($current->collector, ',' . $app->user->account . ',') !== false) ? 'star' : 'star-empty';
  61. sidebar
  62. (
  63. set::width('25%'),
  64. set::onToggle(jsRaw("window.handleSidebarToggle")),
  65. div(setClass('side'), div
  66. (
  67. setClass('canvas'),
  68. div
  69. (
  70. setClass('title flex items-center'),
  71. span
  72. (
  73. setClass('name-color'),
  74. $sideTitle
  75. )
  76. ),
  77. div
  78. (
  79. setClass('metric-tree'),
  80. $fnGenerateSide($groupMetrics, $current, $viewType, $scope, $lang)
  81. )
  82. ))
  83. );
  84. div
  85. (
  86. setClass('main'),
  87. empty($current) ? div(setClass('canvas')) :
  88. div
  89. (
  90. setClass('canvas'),
  91. div
  92. (
  93. setClass('metric-name flex flex-between items-center'),
  94. div
  95. (
  96. setClass('name-and-star'),
  97. span
  98. (
  99. setClass('metric-name-weight'),
  100. isset($current) ? $current->name : null
  101. ),
  102. btn
  103. (
  104. setClass('metric-collect metric-collect-' . $current->id),
  105. set::type('link'),
  106. set::icon($star),
  107. set::iconClass($star),
  108. set::square(true),
  109. set::size('sm'),
  110. set::title($lang->metric->collectStar),
  111. on::click('.metric-collect', "window.collectMetric({$current->id})")
  112. )
  113. ),
  114. div
  115. (
  116. setClass('flex-start'),
  117. toolbar
  118. (
  119. haspriv('metric', 'details') ? item(set(array
  120. (
  121. 'text' => $this->lang->metric->details,
  122. 'class' => 'ghost details',
  123. 'url' => helper::createLink('metric', 'details', "metricID=$current->id"),
  124. 'data-toggle' => 'modal'
  125. ))) : null,
  126. haspriv('metric', 'filters') ? item(set(array
  127. (
  128. 'icon' => 'menu-backend',
  129. 'text' => $this->lang->metric->filters,
  130. 'class' => 'ghost hidden',
  131. 'url' => '#'
  132. ))) : null,
  133. haspriv('metric', 'zAnalysis') ? item(set(array
  134. (
  135. 'icon' => 'chart-line',
  136. 'text' => $this->lang->metric->zAnalysis,
  137. 'class' => 'ghost chart-line-margin hidden',
  138. 'url' => '#'
  139. ))) : null
  140. )
  141. )
  142. ),
  143. $fnGenerateQueryForm($viewType),
  144. $fnGenerateTableAndCharts($current)
  145. )
  146. );
  147. render();