affected.html.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. namespace zin;
  3. jsVar('gradeGroup', $gradeGroup);
  4. if($story->type == 'story' && $story->isParent == '0')
  5. {
  6. $getAffectedTabs = function($story, $users)
  7. {
  8. global $lang, $config;
  9. $affectedProjects = array();
  10. $affectedTaskCount = 0;
  11. foreach($story->executions as $executionID => $execution)
  12. {
  13. $teams = '';
  14. if(isset($story->teams[$executionID]))
  15. {
  16. foreach($story->teams[$executionID] as $member)
  17. {
  18. if(isset($users[$member->account]))
  19. {
  20. $teams .= $users[$member->account] . ' ';
  21. }
  22. }
  23. }
  24. $executionTasks = array_values(zget($story->tasks, $executionID, array()));
  25. $affectedTaskCount += count($executionTasks);
  26. $affectedProjects[] = h6
  27. (
  28. $execution->name,
  29. $teams ? h::small(icon('group'), $teams) : null
  30. );
  31. $affectedProjects[] = empty($executionTasks) ? div(setClass('dtable-empty-tip'), div(setClass('text-gray'), $lang->noData)) : dtable
  32. (
  33. set::cols($config->story->affect->projects->fields),
  34. set::data($executionTasks)
  35. );
  36. }
  37. return formGroup
  38. (
  39. setClass('w-full'),
  40. set::label($lang->story->checkAffection),
  41. set::required(false),
  42. tabs
  43. (
  44. setClass('w-full'),
  45. tabPane
  46. (
  47. to::suffix(label($affectedTaskCount)),
  48. set::key('affectedProjects'),
  49. set::title($lang->story->affectedProjects),
  50. set::active(true),
  51. empty($affectedProjects) ? div(setClass('dtable-empty-tip'), div(setClass('text-gray'), $lang->noData)) : $affectedProjects
  52. ),
  53. tabPane
  54. (
  55. to::suffix(label(count($story->bugs))),
  56. set::key('affectedBugs'),
  57. set::title($lang->story->affectedBugs),
  58. empty($story->bugs) ? div(setClass('dtable-empty-tip'), div(setClass('text-gray'), $lang->noData)) : dtable
  59. (
  60. set::cols($config->story->affect->bugs->fields),
  61. set::data(array_values($story->bugs)),
  62. set::style(array('min-width' => '100%'))
  63. )
  64. ),
  65. tabPane
  66. (
  67. to::suffix(label(count($story->cases))),
  68. set::key('affectedCases'),
  69. set::title($lang->story->affectedCases),
  70. empty($story->cases) ? div(setClass('dtable-empty-tip'), div(setClass('text-gray'), $lang->noData)) : dtable
  71. (
  72. set::cols($config->story->affect->cases->fields),
  73. set::data(array_values($story->cases)),
  74. set::style(array('min-width' => '100%'))
  75. )
  76. ),
  77. empty($story->twins) ? null : tabPane
  78. (
  79. to::suffix(label(count($story->twins))),
  80. set::key('affectedTwins'),
  81. set::title($lang->story->affectedTwins),
  82. empty($story->twins) ? div(setClass('dtable-empty-tip'), div(setClass('text-gray'), $lang->noData)) : dtable
  83. (
  84. set::cols($config->story->affect->twins->fields),
  85. set::data(array_values($story->twins)),
  86. set::style(array('min-width' => '100%'))
  87. )
  88. )
  89. )
  90. );
  91. };
  92. }
  93. else
  94. {
  95. $getAffectedTabs = function($story)
  96. {
  97. global $lang, $config;
  98. return formGroup
  99. (
  100. setClass('w-full'),
  101. set::label($lang->story->checkAffection),
  102. set::required(false),
  103. tabs
  104. (
  105. setClass('w-full'),
  106. tabPane
  107. (
  108. set::active(true),
  109. to::suffix(label(count($story->children))),
  110. set::key('affectedChildren'),
  111. set::title($lang->story->children),
  112. $story->children ? dtable
  113. (
  114. set::cols($config->story->affect->children->fields),
  115. set::onRenderCell(jsRaw('renderChildCell')),
  116. set::data(array_values($story->children))
  117. ): null
  118. )
  119. )
  120. );
  121. };
  122. }