design.html.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?php
  2. /**
  3. * The design view file of pivot 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. jsVar('pivotID', $pivot->id);
  12. jsVar('pivot', $pivot);
  13. jsVar('designActions', $config->pivot->designActions);
  14. jsVar('actionLoadTarget', $config->pivot->actionLoadTarget);
  15. jsVar('confirmLeave', $lang->pivot->confirmLeave);
  16. jsVar('prefix', $config->db->prefix);
  17. jsVar('resetSettingsTip', $lang->pivot->resetSettings);
  18. jsVar('draftSave', $lang->pivot->draftSave);
  19. jsVar('confirmDraft', $lang->pivot->confirm->draft);
  20. jsVar('confirmPublish', $lang->pivot->confirm->publish);
  21. jsVar('objectFields', $objectFields);
  22. jsVar('tableOptions', $tableOptions);
  23. jsVar('stepOrder', $this->config->pivot->stepOrder);
  24. jsVar('changeModeTip', $lang->bi->changeModeTip);
  25. jsVar('cannotNextStep', $lang->pivot->cannotNextStep);
  26. jsVar('clearLang', $lang->pivot->clear);
  27. jsVar('keepLang', $lang->pivot->keep);
  28. $step = $pivotState->step;
  29. $this->app->loadLang('dataview');
  30. $this->loadModel('bi');
  31. $fnGenerateNav = function($currStep) use ($lang)
  32. {
  33. $items = array();
  34. $selected = true;
  35. foreach($this->config->pivot->stepOrder as $step)
  36. {
  37. $title = $lang->pivot->designStepNav[$step];
  38. $isCurrStep = $currStep == $step;
  39. if($isCurrStep) $selected = false;
  40. $items[] = array('text' => $title, 'active' => $isCurrStep, 'selected' => $selected, 'step' => $step);
  41. }
  42. return div
  43. (
  44. setID('stepNav'),
  45. setClass('self-center m-auto absolute'),
  46. nav
  47. (
  48. setClass('step-nav'),
  49. set::type('steps'),
  50. set::items($items),
  51. on::click()->do('changeStep(event)')
  52. )
  53. );
  54. };
  55. $fnGenerateCommonFilters = function() use ($pivotState)
  56. {
  57. if(empty($pivotState->pivotFilters)) return null;
  58. list($queryFilters, $resultFilters) = $pivotState->pivotFilters;
  59. $filters = array();
  60. if(!empty($queryFilters)) foreach($queryFilters as $filter) $filters[] = filter(set($filter));
  61. if(!empty($resultFilters) && $pivotState->step !== 'query') foreach($resultFilters as $filter) $filters[] = resultFilter(set($filter));
  62. return $filters;
  63. };
  64. $biPath = $this->app->getModuleExtPath('bi', 'ui');
  65. $pivotPath = $this->app->getModuleExtPath('pivot', 'ui');
  66. include $biPath['common'] . 'query.dictionary.html.php';
  67. include $biPath['common'] . 'aclbox.html.php';
  68. include $pivotPath['common'] . 'exportdata.html.php';
  69. include "./block/query.step.html.php";
  70. include "./block/design.step.html.php";
  71. include "./block/drill.step.html.php";
  72. include "./block/filter.step.html.php";
  73. include "./block/publish.step.html.php";
  74. featurebar
  75. (
  76. setClass('relative'),
  77. div
  78. (
  79. setClass('row gap-2'),
  80. backBtn
  81. (
  82. setClass('px-1'),
  83. set::icon('back'),
  84. set::type('ghost'),
  85. set::back('pivot-browse'),
  86. $lang->pivot->cancelAndBack
  87. ),
  88. div(setClass('divider h-5 mt-1.5')),
  89. div
  90. (
  91. setClass('entity-label flex items-center gap-x-2 text-normal'),
  92. $lang->pivot->design
  93. )
  94. ),
  95. to::trailing
  96. (
  97. $fnGenerateNav($step)
  98. )
  99. );
  100. toolbar
  101. (
  102. setID('saveAsDraft'),
  103. btn
  104. (
  105. set::type('ghost'),
  106. set::icon('save'),
  107. $lang->pivot->draft,
  108. on::click()->do('savePivot("draft")')
  109. )
  110. );
  111. div
  112. (
  113. setID('pivotState'),
  114. setClass('hidden'),
  115. set('data-state', $pivotState),
  116. set('data-changed', array()),
  117. set('data-url', createLink('pivot', 'design', "pivotID={$pivot->id}")),
  118. set('data-actions', $config->pivot->designActions),
  119. h::js(<<<JS
  120. $(function(){
  121. $('html').css('overflow', 'auto');
  122. });
  123. JS
  124. )
  125. );
  126. $fnGenerateDictionary($pivotState->mode == 'text' && $step == 'query');
  127. div(setID('stepContent'), $step == 'query' ? $fnGenerateStepQueryContent() : div(setID("step$step"), setClass('flex gap-4'), pivotTable
  128. (
  129. setClass('h-full overflow-auto', array('hidden' => $step == 'query')),
  130. set::width('calc(100% - 450px)'),
  131. set::title($pivotState->name),
  132. set::cols($pivotState->pivotCols),
  133. set::data($pivotState->pivotData),
  134. set::cellSpan($pivotState->pivotCellSpan),
  135. set::filters($fnGenerateCommonFilters()),
  136. set::onCellClick(jsRaw('clickCell')),
  137. to::heading
  138. (
  139. !empty($pivotState->pivotData) ? array
  140. (
  141. toolbar
  142. (
  143. hasPriv('pivot', 'export') ? item(set(array
  144. (
  145. 'text' => $this->lang->export,
  146. 'icon' => 'export',
  147. 'class' => 'ghost',
  148. 'data-target' => '#export',
  149. 'data-toggle' => 'modal',
  150. 'data-size' => 'sm'
  151. ))) : null
  152. ),
  153. div
  154. (
  155. setClass('hidden'),
  156. rawContent(),
  157. !empty($originData) ? html($this->pivot->buildPivotTable($originData, $originConfigs)) : null
  158. )
  159. ) : null
  160. )
  161. ), $step == 'design' ? $fnGenerateStepDesignConfig($pivotState) : null, $step == 'drill' ? $fnGenerateStepDrillConfig($pivotState) : null, $step == 'filter' ? $fnGenerateStepFilterConfig($pivotState) : null, $step == 'publish' ? $fnGenerateStepPublishConfig($pivotState) : null), on::click('#export-data-button')->do('exportData()'), on::click('.next-step')->do('nextStep()'), on::click('.load-custom-pivot')->do('loadCustomPivot(event)'));