report.html.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. /**
  3. * The report view file of task 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 Yanyi Cao <caoyanyi@easycorp.ltd>
  7. * @package task
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('executionID', $executionID);
  12. jsVar('browseType', $browseType);
  13. detailHeader
  14. (
  15. to::title
  16. (
  17. entityLabel
  18. (
  19. set::level(1),
  20. set::text($lang->task->report->common)
  21. )
  22. ),
  23. menuViewSwitcher()
  24. );
  25. $selectCharts = array();
  26. foreach($lang->task->report->charts as $code => $name)
  27. {
  28. $chart = array();
  29. $chart['text'] = $name;
  30. $chart['value'] = $code;
  31. $selectCharts[] = $chart;
  32. }
  33. function getEcharts($tabCharts, $tabDatas, $chartType)
  34. {
  35. global $lang;
  36. $echarts = array();
  37. foreach($tabCharts as $type => $option)
  38. {
  39. $chartData = $tabDatas[$type];
  40. $echarts[] = tableChart
  41. (
  42. set::item('chart-' . $type),
  43. set::type($chartType === 'default' ? $option->type : $chartType),
  44. set::title($lang->task->report->charts[$type]),
  45. set::datas((array)$chartData),
  46. set::tableWidth('40%'),
  47. set::tableHeaders(array(
  48. 'item' => $lang->task->report->{$type}->item,
  49. 'value' => $lang->task->report->value,
  50. 'percent' => $lang->report->percent
  51. ))
  52. );
  53. }
  54. return $echarts;
  55. }
  56. $chartContents = array();
  57. foreach($lang->report->typeList as $type => $typeName)
  58. {
  59. $link = createLink('task', 'report', "executionID=$executionID&browseType=$browseType&type=%s");
  60. $chartContents[] = tabPane
  61. (
  62. set::key($type),
  63. set::title($typeName),
  64. set::active($type == $chartType),
  65. set::param(sprintf($link, $type)),
  66. to::prefix(icon($type == 'default' ? 'list-alt' : "chart-{$type}")),
  67. div
  68. (
  69. setClass('pb-4'),
  70. span(setClass('text-gray'),
  71. html(str_replace('%tab%', $lang->task->waitTask . $lang->testcase->common, $lang->report->notice->help)))
  72. ),
  73. div(getEcharts($charts, $datas, $type))
  74. );
  75. }
  76. div
  77. (
  78. setClass('flex flex-nowrap'),
  79. cell
  80. (
  81. set::width('240'),
  82. formPanel
  83. (
  84. setClass('chart-form'),
  85. setID('chartForm'),
  86. set::title($lang->task->report->select),
  87. set::actionsClass('justify-start'),
  88. set::actions
  89. (
  90. array
  91. (
  92. array
  93. (
  94. 'text' => $lang->selectAll,
  95. 'class' => 'btn-select-all space',
  96. 'url' => 'javascript:triggerChecked();'
  97. ),
  98. array
  99. (
  100. 'type' => 'primary',
  101. 'text' => $lang->task->report->create,
  102. 'class' => 'btn-select-all space',
  103. 'url' => 'javascript:createChart();'
  104. )
  105. )
  106. ),
  107. checkList
  108. (
  109. set::primary(true),
  110. set::name('charts[]'),
  111. set::value('code'),
  112. set::inline(false),
  113. set::items($selectCharts)
  114. )
  115. )
  116. ),
  117. cell
  118. (
  119. setID('chartContainer'),
  120. set::flex('1'),
  121. setClass('ml-5 bg-white px-4 py-2'),
  122. tabs
  123. (
  124. on::show('.tab-pane')->call('changeTab', jsRaw('event')),
  125. $chartContents
  126. )
  127. )
  128. );