executionreport.html.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. /**
  3. * The execution report view file of project 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 Zemei Wang <wangzemei@easycorp.ltd>
  7. * @package project
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. $listName = in_array($project->model, array('waterfall', 'waterfallplus', 'ipd')) ? $this->lang->stage->common : $this->lang->project->reportSettings->execution;
  12. $moduleList = array();
  13. foreach($lang->project->reportSettings->typeList['execution'] as $code => $module)
  14. {
  15. $moduleList[$code] = (object)array(
  16. 'key' => $code,
  17. 'id' => $code,
  18. 'name' => $module,
  19. 'parent' => 0,
  20. 'url' => createLink('project', 'executionreport', "projectID=$projectID&type=$code")
  21. );
  22. }
  23. detailHeader(to::prefix
  24. (
  25. btn
  26. (
  27. set::icon('back'),
  28. set::type('primary-outline'),
  29. set::url(createLink('project', 'execution', "status=undone&projectID=$projectID") . "#app=project"),
  30. $lang->goback
  31. )
  32. ), to::title
  33. (
  34. div
  35. (
  36. setClass('clip'),
  37. span(setClass('text-base'), sprintf($lang->project->reportSettings->subtitle, $listName))
  38. )
  39. ), hasPriv('report', 'export') ? to::suffix
  40. (
  41. btn
  42. (
  43. set::type('primary'),
  44. set::text($lang->export),
  45. set::url(createLink('project', 'exportchart', array('projectID' => $projectID, 'type' => $type))),
  46. setData('toggle', 'modal'),
  47. setData('size', 'sm')
  48. )
  49. ) : null);
  50. $staticData->editCanvasConfig->theme = 'light';
  51. $staticData->editCanvasConfig->previewScaleType = 'top';
  52. $staticDataJson = str_replace(array('&quot;', '&#039;'), array("\\\&quot;", "\&#039;"), json_encode($staticData));
  53. div
  54. (
  55. setClass('flex flex-nowrap report-view'),
  56. setStyle(array('height' => 'calc(100vh - 8rem)')),
  57. cell
  58. (
  59. set::width('200'),
  60. moduleMenu
  61. (
  62. set::moduleName('execution'),
  63. set::title($lang->project->reportSettings->notice),
  64. set::modules($moduleList),
  65. set::showDisplay(false),
  66. set::toggleSidebar(false),
  67. set::activeKey($type),
  68. set::closeLink('')
  69. )
  70. ),
  71. cell
  72. (
  73. setID('chartContainer'),
  74. set::flex('1'),
  75. setClass('ml-4 bg-white px-2 py-2'),
  76. h4(setClass('mt-2 ml-1'), zget($lang->project->reportSettings->typeList['execution'], $type)),
  77. h::iframe
  78. (
  79. setID('staticScreen'),
  80. set('width', '100%'),
  81. set('height', '95%'),
  82. set('scrolling', 'no'),
  83. set('frameborder', '0'),
  84. set('marginheight', '0'),
  85. set('src', createLink('screen', 'staticDataOld')),
  86. on::init()->do(<<<JS
  87. const iframe = document.getElementById('staticScreen');
  88. iframe.onload = function()
  89. {
  90. const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
  91. iframe.contentWindow.setStaticData('{$staticDataJson}', {width: iframe.offsetWidth});
  92. const style = document.createElement('style');
  93. style.textContent = 'body {background-color: #fff !important;}';
  94. iframeDoc.head.appendChild(style);
  95. };
  96. JS
  97. )
  98. )
  99. )
  100. );