browse.html.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <?php
  2. /**
  3. * The browse view file of company 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 Mengyi Liu <liumengyi@easycorp.ltd>
  7. * @package company
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. $fnGenerateScopeFilter = function() use ($scope, $parentScope, $scopeOptions, $parentOptions, $filters)
  12. {
  13. $parentFilter = helper::hasFeature('program') || $parentScope != 'program' ? formGroup
  14. (
  15. set::id('parentPicker'),
  16. set::width('1/3'),
  17. setClass('query-inline picker-nowrap'),
  18. set::label($this->lang->metriclib->parentLabel[$parentScope]),
  19. set::control(array('type' => 'picker', 'multiple' => true)),
  20. set::name('parent'),
  21. set::items($parentOptions),
  22. set::placeholder($this->lang->metric->placeholder->$parentScope),
  23. on::change("window.loadScopeOptions('$scope')"),
  24. !empty($filters['parent']) ? set::value($filters['parent']) : null
  25. ) : null;
  26. $scopeFilter = formGroup
  27. (
  28. set::id('scopePicker'),
  29. set::width('1/3'),
  30. setClass('query-inline picker-nowrap'),
  31. set::label($this->lang->$scope->common),
  32. set::control(array('type' => 'picker', 'multiple' => true)),
  33. set::name('objectType'),
  34. set::items($scopeOptions),
  35. set::placeholder($this->lang->metric->placeholder->$scope),
  36. !empty($filters['objectType']) ? set::value($filters['objectType']) : null
  37. );
  38. return array($parentFilter, $scopeFilter);
  39. };
  40. $fnGenerateDateFilter = function() use ($scope, $period, $filters)
  41. {
  42. $width = $scope == 'system' ? '1/2' : '1/3';
  43. return formGroup
  44. (
  45. set::label($this->lang->metriclib->dateLabel[$period]),
  46. set::width($width),
  47. inputGroup
  48. (
  49. datePicker
  50. (
  51. setClass('query-date-picker'),
  52. set::name('dateBegin'),
  53. set('id', 'dateBegin'),
  54. set::placeholder($this->lang->metric->placeholder->select),
  55. !empty($filters['dateBegin']) ? set::value($filters['dateBegin']) : null
  56. ),
  57. $this->lang->metric->to,
  58. datePicker
  59. (
  60. setClass('query-date-picker'),
  61. set::name('dateEnd'),
  62. set('id', 'dateEnd'),
  63. set::placeholder($this->lang->metric->placeholder->select),
  64. !empty($filters['dateEnd']) ? set::value($filters['dateEnd']) : null
  65. )
  66. )
  67. );
  68. };
  69. $fnGenerateFilterForm = function() use ($isHistory, $metricOptions, $filters, $fnGenerateScopeFilter, $fnGenerateDateFilter, $scope, $period, $viewType)
  70. {
  71. $formGroups = array();
  72. if($isHistory)
  73. {
  74. if($scope != 'system') $formGroups = $fnGenerateScopeFilter();
  75. $formGroups[] = $fnGenerateDateFilter();
  76. }
  77. $metricFilter = formGroup(set::label($this->lang->metric->common), setClass('query-inline picker-nowrap'), set::name('metric'), set::control(array('type' => 'picker', 'multiple' => true)), set::items($metricOptions), set::value($filters['metric']));
  78. return row
  79. (
  80. set::justify('start'),
  81. set::align('center'),
  82. setClass('px-4'),
  83. cell
  84. (
  85. set::flex('auto'),
  86. form
  87. (
  88. set::id('queryForm'),
  89. !empty($formGroups) ? formRow(set::width('full'), $formGroups) : null,
  90. formRow
  91. (
  92. set::width('full'),
  93. $metricFilter
  94. ),
  95. set::actions(array())
  96. )
  97. ),
  98. cell
  99. (
  100. set::width(100),
  101. setClass('ml-4'),
  102. set::flex('none'),
  103. formGroup
  104. (
  105. setClass('query-btn'),
  106. btn
  107. (
  108. setClass('btn secondary w-full'),
  109. set::text($this->lang->metric->query->action),
  110. set::onclick("window.handleFilter('$scope', '$period', '$viewType')")
  111. )
  112. )
  113. )
  114. );
  115. };
  116. sidebar
  117. (
  118. moduleMenu
  119. (
  120. to::header
  121. (
  122. div
  123. (
  124. setClass('bg-canvas'),
  125. dropmenu
  126. (
  127. set::defaultValue($scope),
  128. set::text($scopeText),
  129. set::caret(false),
  130. set::popWidth(128),
  131. set::popClass('popup text-md'),
  132. set::data(array('search' => false, 'checkIcon' => false, 'data' => $scopeMenu))
  133. )
  134. )
  135. ),
  136. set::titleShow(false),
  137. set::modules($libTree),
  138. set::activeKey("{$scope}_{$period}"),
  139. set::closeLink(''),
  140. set::showDisplay(false)
  141. )
  142. );
  143. div
  144. (
  145. setClass('main'),
  146. div
  147. (
  148. setClass('canvas'),
  149. div
  150. (
  151. setClass('border-b h-12 px-4 flex justify-between items-center'),
  152. div(span(setClass('text-root font-bold'), $libName), (isset($latestDate) and $latestDate) ? label
  153. (
  154. setClass('gray-200-pale pl-4'),
  155. $lang->metriclib->calcDate . ':' . date($lang->metriclib->calcDateFormat, strtotime($latestDate))
  156. ) : null),
  157. div
  158. (
  159. setClass('justify-start'),
  160. toolbar
  161. (
  162. $canChangeView ? btn
  163. (
  164. set::icon('exchange'),
  165. set::iconClass('text-xl'),
  166. setClass('ghost primary hover-primary'),
  167. set::url($this->inlink('browse', "scope=$scope&period=$period&viewType=$viewBtnType&isClearFilter=0")),
  168. $viewBtnText
  169. ) : null
  170. /*
  171. haspriv('metriclib', 'details') ? item(set(array
  172. (
  173. 'text' => $this->lang->metriclib->details,
  174. 'class' => 'ghost primary hover-primary',
  175. 'url' => $this->inlink('details', "scope=$scope&period=$period"),
  176. 'data-toggle' => 'modal'
  177. ))) : null
  178. */
  179. )
  180. )
  181. ),
  182. div(setClass('pt-4'), $fnGenerateFilterForm()),
  183. div
  184. (
  185. setClass('p-4'),
  186. dtable
  187. (
  188. set::id('library'),
  189. set::bordered(true),
  190. setClass('shadow rounded'),
  191. set::height(jsRaw('window.innerHeight - ' . ($isHistory ? '252' : '222'))),
  192. set::rowHeight(32),
  193. set::scrollbarSize(8),
  194. set::header($isHistory),
  195. set::headerHeight($tableHeaderHeight),
  196. set::cols($cols),
  197. set::data($data),
  198. set::nested(true),
  199. set::footPager(usePager('dtablePager', '', array(
  200. 'recPerPage' => $dtablePager->recPerPage,
  201. 'recTotal' => $dtablePager->recTotal,
  202. 'linkCreator' => createLink('metriclib', 'browse', "scope=$scope&period=$period&viewType=$viewType&isClearFilter=0&recTotal={$dtablePager->recTotal}&recPerPage={recPerPage}&page={page}"),
  203. ),
  204. $config->metriclib->pageRangeList)),
  205. set::onRenderCell(jsRaw('window.renderCell')),
  206. set::onRenderHeaderCell(jsRaw('window.renderHeaderCell')),
  207. set::emptyTip($libDTableTip),
  208. set::createTip($lang->metriclib->createMetric),
  209. set::createLink(hasPriv('metric', 'create') ? createLink('metric', 'create', "scope=$scope&period=$period&from=metriclib") : ''),
  210. set::createAttr("data-toggle='modal'")
  211. )
  212. )
  213. )
  214. );
  215. render();