workload.html.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. /**
  3. * The workload view file of pivot 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 Gang Liu <liugang@easycorp.ltd>
  7. * @package pivot
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('weekend', $config->execution->weekend);
  12. $cols = $config->pivot->dtable->workload->fieldList;
  13. $cols['user']['map'] = $users;
  14. $data = new stdclass();
  15. $data->cols = $this->pivot->processDTableCols($cols);
  16. $data->array = $this->pivot->processDTableData(array_keys($cols), $workload);
  17. $generateData = function() use ($lang, $title, $cols, $data, $workload, $depts, $dept, $begin, $end, $days, $workhour, $assign)
  18. {
  19. return array
  20. (
  21. div
  22. (
  23. setID('conditions'),
  24. setClass('flex gap-2 bg-canvas p-2'),
  25. inputGroup
  26. (
  27. setClass('w-1/6'),
  28. $lang->pivot->dept,
  29. picker
  30. (
  31. setClass('w-full'),
  32. set(array('name' => 'dept', 'items' => $depts, 'value' => $dept, 'required' => true))
  33. )
  34. ),
  35. inputGroup
  36. (
  37. setClass('w-1/2'),
  38. $lang->pivot->beginAndEnd,
  39. datePicker(set(array('name' => 'begin', 'value' => $begin))),
  40. $lang->pivot->to,
  41. datePicker(set(array('name' => 'end', 'value' => $end))),
  42. $lang->pivot->diffDays,
  43. input(set(array('name' => 'days', 'value' => $days, 'class' => 'text-left w-1/6')))
  44. ),
  45. div
  46. (
  47. setClass('flex gap-2 w-1/3'),
  48. inputGroup
  49. (
  50. setClass('w-5/12'),
  51. $lang->pivot->workday,
  52. input(set(array('name' => 'workhour', 'value' => $workhour, 'class' => 'text-left')))
  53. ),
  54. picker
  55. (
  56. setClass('w-1/3'),
  57. set(array('name' => 'assign', 'items' => $lang->pivot->assign, 'value' => $assign, 'required' => true))
  58. ),
  59. button(setClass('btn primary w-1/4'), on::click('loadWorkload'), $lang->pivot->query)
  60. )
  61. ),
  62. panel
  63. (
  64. setID('pivotPanel'),
  65. set::title($title),
  66. set::shadow(false),
  67. set::headingClass('h-14'),
  68. set::bodyClass('pt-0'),
  69. to::titleSuffix
  70. (
  71. icon
  72. (
  73. setClass('cursor-pointer'),
  74. setData(array('toggle' => 'tooltip', 'title' => $lang->pivot->workloadDesc, 'placement' => 'right', 'className' => 'text-gray border border-light', 'type' => 'white')),
  75. 'help'
  76. )
  77. ),
  78. dtable
  79. (
  80. set::striped(true),
  81. set::bordered(true),
  82. set::cols($cols),
  83. set::data($workload),
  84. set::emptyTip($lang->error->noData),
  85. set::plugins(array('cellspan')),
  86. set::getCellSpan(jsRaw('getCellSpan')),
  87. set::cellSpanOptions(array(
  88. 'user' => array('rowspan' => 'userRowspan'),
  89. 'totalTasks' => array('rowspan' => 'userRowspan'),
  90. 'totalHours' => array('rowspan' => 'userRowspan'),
  91. 'workload' => array('rowspan' => 'userRowspan'),
  92. 'projectName' => array('rowspan' => 'projectRowspan')
  93. ))
  94. ),
  95. div
  96. (
  97. setID('exportData'),
  98. setClass('hidden'),
  99. rawContent(),
  100. html($this->pivot->buildPivotTable($data, array()))
  101. )
  102. )
  103. );
  104. };