design.step.html.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <?php
  2. /**
  3. * The step design view file of pivot design module of ZenTaoPMS.
  4. * @copyright Copyright 2009-2024 禅道软件(青岛)有限公司(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 Chenxuan Song <songchenxuan@easycorp.ltd>
  7. * @package pivot
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. include_once 'groupitem.html.php';
  12. include_once 'columnitem.html.php';
  13. $fnGenerateGroups = function() use ($lang, $pivotState, $settingErrors, $fnGenerateGroupItem)
  14. {
  15. $options = array();
  16. $options['fields'] = $pivotState->getFieldOptions();
  17. $items = array();
  18. $groups = $pivotState->getSettingGroups();
  19. foreach($groups as $key => $value) $items[] = $fnGenerateGroupItem($key, $value, count($groups), $options, $settingErrors);
  20. return div
  21. (
  22. setID('groupSetting'),
  23. setClass('pb-3 border-b'),
  24. div
  25. (
  26. setClass('flex text-base font-bold pl-1 py-3 leading-4 items-center'),
  27. $lang->pivot->stepDesign->group,
  28. div
  29. (
  30. setClass('flex items-center pl-1'),
  31. sqlBuilderHelpIcon(set::text($lang->pivot->stepDesign->groupsTip))
  32. )
  33. ),
  34. div
  35. (
  36. setClass('flex col gap-4'),
  37. $items
  38. )
  39. );
  40. };
  41. $fnGenerateColumns = function() use ($lang, $pivotState, $settingErrors, $fnGenerateColumnItem)
  42. {
  43. $options = array();
  44. $fields = $pivotState->getFieldOptions();
  45. $options['fields'] = $fields;
  46. $options['slice'] = $lang->pivot->stepDesign->sliceFieldList + $fields;
  47. $options['stat'] = $lang->pivot->stepDesign->statList;
  48. $options['showMode'] = $lang->pivot->stepDesign->showModeList;
  49. $options['monopolize'] = array('1' => $lang->pivot->monopolize);
  50. $options['showTotal'] = $lang->pivot->stepDesign->showTotalList;
  51. $items = array();
  52. $columns = $pivotState->getSettingColumns();
  53. $index = 1;
  54. foreach($columns as $column)
  55. {
  56. $errors = isset($settingErrors['columns'][$index - 1]) ? $settingErrors['columns'][$index - 1] : array();
  57. $items[] = $fnGenerateColumnItem($index, $column, count($columns), $options, $errors);
  58. $index ++;
  59. }
  60. return div
  61. (
  62. setID('columnSetting'),
  63. setClass('pb-3 border-b'),
  64. div
  65. (
  66. setClass('flex justify-between text-base font-bold pl-1 py-3'),
  67. div
  68. (
  69. setClass('flex items-center'),
  70. $lang->pivot->stepDesign->column,
  71. div
  72. (
  73. setClass('flex pl-1'),
  74. sqlBuilderHelpIcon(set::text($lang->pivot->stepDesign->columnsTip))
  75. )
  76. ),
  77. div
  78. (
  79. setClass('flex'),
  80. toolbar
  81. (
  82. setClass('pr-1 add-button'),
  83. btn
  84. (
  85. setClass('ghost size-sm squre column-add'),
  86. set::icon('plus'),
  87. $lang->pivot->addColumn,
  88. on::click()->do('addSettingColumn(event)')
  89. )
  90. )
  91. )
  92. ),
  93. div
  94. (
  95. setID('columnContainer'),
  96. setClass('flex col gap-4'),
  97. $items
  98. )
  99. );
  100. };
  101. $fnGenerateSummary = function() use ($lang, $pivotState)
  102. {
  103. $summary = $pivotState->settings['summary'];
  104. return div
  105. (
  106. setClass('flex text-base font-bold pl-1 py-3 border-b leading-4 items-center'),
  107. checkbox
  108. (
  109. setClass('pt-0.5'),
  110. set::id('summary'),
  111. set::name('summary[]'),
  112. set::checked($summary === 'use'),
  113. set::text($lang->pivot->stepDesign->summary),
  114. on::change()->do('handleSummaryChange(event)')
  115. ),
  116. div
  117. (
  118. setClass('flex items-center pl-1'),
  119. sqlBuilderHelpIcon(set::text($lang->pivot->stepDesign->summaryTip))
  120. )
  121. );
  122. };
  123. $fnGenerateColumnSummary = function() use ($lang, $pivotState)
  124. {
  125. $columnTotal = $pivotState->settings['columnTotal'];
  126. $columnPosition = $pivotState->settings['columnPosition'];
  127. $showPosition = $columnTotal == 'sum';
  128. return div
  129. (
  130. setID('summary-column'),
  131. div(setClass('flex text-base font-bold pl-1 py-3'), div
  132. (
  133. setClass('flex items-center leading-4'),
  134. $lang->pivot->stepDesign->columnTotal,
  135. div
  136. (
  137. setClass('flex pl-1'),
  138. sqlBuilderHelpIcon(set::text($lang->pivot->stepDesign->columnTotalTip))
  139. )
  140. )),
  141. div
  142. (
  143. setClass('pl-1 py-2 picker-columnTotal'),
  144. div
  145. (
  146. setClass('flex items-center'),
  147. div
  148. (
  149. setClass('whitespace-nowrap pr-2'),
  150. $lang->pivot->stepDesign->columnCalc
  151. ),
  152. div
  153. (
  154. setClass('w-full'),
  155. picker
  156. (
  157. setID('picker_columnTotal'),
  158. set::name('columnTotal'),
  159. set::value($columnTotal),
  160. set::required(true),
  161. set::items($lang->pivot->stepDesign->columnTotalList),
  162. on::change()->do('handleColumnTotalChange(event)')
  163. )
  164. )
  165. )
  166. ),
  167. $showPosition ? div
  168. (
  169. setClass('pl-1 py-2 picker-columnTotal'),
  170. div
  171. (
  172. setClass('flex items-center'),
  173. div
  174. (
  175. setClass('whitespace-nowrap pr-2'),
  176. $lang->pivot->stepDesign->columnPosition
  177. ),
  178. div
  179. (
  180. setClass('w-full'),
  181. picker
  182. (
  183. setID('picker_columnPosition'),
  184. set::name('columnPosition'),
  185. set::value($columnPosition),
  186. set::required(true),
  187. set::items($lang->pivot->stepDesign->columnPositionList),
  188. on::change()->do('handleColumnPositionChange(event)')
  189. )
  190. )
  191. )
  192. ) : null
  193. );
  194. };
  195. $fnGenerateStepDesignConfig = function($pivotState) use($lang, $fnGenerateGroups, $fnGenerateColumns, $fnGenerateSummary, $fnGenerateColumnSummary)
  196. {
  197. $summary = $pivotState->settings['summary'];
  198. return pivotConfig
  199. (
  200. set::title($lang->pivot->baseSetting),
  201. set::saveText($lang->pivot->saveSetting),
  202. set::onSave('saveSettings()'),
  203. set::onNext('nextStep()'),
  204. $fnGenerateSummary(),
  205. $summary === 'use' ? div
  206. (
  207. setID('summaryForm'),
  208. $fnGenerateGroups(),
  209. $fnGenerateColumns(),
  210. $fnGenerateColumnSummary()
  211. ) : null
  212. );
  213. };