drill.step.html.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <?php
  2. /**
  3. * The step drill 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. $defaultDrillModalID = 'drillModalDefault';
  12. include_once 'adddrill.html.php';
  13. $fnGenerateDrillingModal = function($pivotState) use ($lang)
  14. {
  15. $drillingModals = array();
  16. foreach($pivotState->pivotCols as $pivotCol)
  17. {
  18. $isDrilling = isset($pivotCol['isDrilling']) ? $pivotCol['isDrilling'] : false;
  19. if(!$isDrilling) continue;
  20. $drillingModals[] = modal
  21. (
  22. setID('drilling-' . $pivotCol['name']),
  23. set::title($lang->pivot->stepDrill->drillView),
  24. set::size('lg'),
  25. dtable
  26. (
  27. set::striped(true),
  28. set::bordered(true),
  29. set::cols($pivotCol['drillingCols']),
  30. set::data($pivotCol['drillingDatas'])
  31. )
  32. );
  33. }
  34. return $drillingModals;
  35. };
  36. $fnGenerateEmptyTip = function() use ($lang, $defaultDrillModalID)
  37. {
  38. return div
  39. (
  40. setClass('drill-empty-tip'),
  41. div
  42. (
  43. setClass('flex items-center'),
  44. div(setClass('text-gray-500'), $lang->pivot->noDrillTip),
  45. div
  46. (
  47. toolbar
  48. (
  49. setClass('pr-1 add-button'),
  50. modalTrigger
  51. (
  52. btn(setClass('ghost squre drill-add'), set::icon('plus'), $lang->pivot->stepDrill->addDrill),
  53. set::target("#$defaultDrillModalID")
  54. )
  55. )
  56. )
  57. )
  58. );
  59. };
  60. $fnGenerateAddDrillButton = function() use ($lang, $defaultDrillModalID)
  61. {
  62. return div
  63. (
  64. setClass('flex'),
  65. toolbar
  66. (
  67. setClass('pr-1 add-button'),
  68. modalTrigger
  69. (
  70. btn(setClass('ghost squre drill-add'), set::icon('plus'), $lang->pivot->stepDrill->addDrill),
  71. set::target("#$defaultDrillModalID")
  72. )
  73. )
  74. );
  75. };
  76. $fnGenerateDrillItem = function($drill, $modalID, $index) use ($lang)
  77. {
  78. return div
  79. (
  80. setClass('flex drill-line items-center'),
  81. set('data-index', $index),
  82. div
  83. (
  84. setClass('flex p-2 drill-container'),
  85. $drill['warning'] ? button
  86. (
  87. setClass('btn capitalize danger-outline size-sm'),
  88. $lang->pivot->drill->designChangedTip
  89. ) : div
  90. (
  91. setClass('text-md pl-2'),
  92. $drill['text'],
  93. label
  94. (
  95. setClass('label size-sm capitalize secondary-outline ml-2', array('hidden' => empty($drill['type']) || $drill['type'] != 'auto')),
  96. $lang->pivot->drill->auto
  97. )
  98. )
  99. ),
  100. toolbar
  101. (
  102. setClass('pl-2 gap-1'),
  103. modalTrigger
  104. (
  105. btn
  106. (
  107. setClass('drill-edit ghost squre'),
  108. set::icon('backend')
  109. ),
  110. set::target("#$modalID")
  111. ),
  112. btn
  113. (
  114. setClass('ghost size-sm squre drill-delete'),
  115. set::icon('close'),
  116. on::click()->do('deleteDrill(event)')
  117. )
  118. )
  119. );
  120. };
  121. $fnGenerateDrills = function($pivotState) use ($fnGenerateDrillItem, $fnGenerateAddDrillModal)
  122. {
  123. $drills = $pivotState->drills;
  124. $drillFields = $this->pivot->getFieldList($pivotState);
  125. $fieldTextPairs = array();
  126. foreach($drillFields as $fieldInfo) $fieldTextPairs[$fieldInfo['value']] = $fieldInfo['text'];
  127. $items = array();
  128. $modals = array();
  129. foreach($drills as $index => $drill)
  130. {
  131. if(empty($drill)) continue;
  132. $modalID = "drillModal$index";
  133. $drill['text'] = isset($fieldTextPairs[$drill['field']]) ? $fieldTextPairs[$drill['field']] : $drill['field'];
  134. if(empty($drill['field'])) $drill['warning'] = true;
  135. $drill['warning'] = isset($drill['warning']) ? $drill['warning'] : false;
  136. $items[] = $fnGenerateDrillItem($drill, $modalID, $index);
  137. $modals[] = $fnGenerateAddDrillModal($pivotState, $modalID);
  138. }
  139. return div
  140. (
  141. setClass('py-3 flex col gap-y-4'),
  142. $items,
  143. $modals
  144. );
  145. };
  146. $fnGenerateStepDrillConfig = function($pivotState) use ($lang, $defaultDrillModalID, $fnGenerateAddDrillModal, $fnGenerateDrillingModal, $fnGenerateEmptyTip, $fnGenerateAddDrillButton, $fnGenerateDrills)
  147. {
  148. return pivotConfig
  149. (
  150. set::title($lang->pivot->stepDrill->drill),
  151. set::titleTip
  152. (
  153. sqlBuilderHelpIcon
  154. (
  155. set::text($lang->pivot->drillingTip),
  156. set::placement('left')
  157. )
  158. ),
  159. set::saveText($lang->pivot->saveSetting),
  160. set::onSave('saveSettings(event)'),
  161. set::onNext('nextStep()'),
  162. to::heading($fnGenerateAddDrillButton()),
  163. div
  164. (
  165. setID('drillForm'),
  166. empty($pivotState->drills) ? $fnGenerateEmptyTip() : $fnGenerateDrills($pivotState)
  167. ),
  168. $fnGenerateAddDrillModal($pivotState, $defaultDrillModalID),
  169. $fnGenerateDrillingModal($pivotState)
  170. );
  171. };