| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- <?php
- /**
- * The view file of metric module of ZenTaoPMS.
- *
- * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
- * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
- * @author zhouxin<zhouxin@easycorp.ltd>
- * @package metric
- * @link http://www.zentao.net
- */
- namespace zin;
- jsVar('metricID', $metric->id);
- jsVar('params', $params);
- /**
- * Build content of table data.
- *
- * @param array $items
- * @access public
- * @return array
- */
- $buildItems = function($items): array
- {
- $itemList = array();
- foreach($items as $item)
- {
- $itemList[] = item
- (
- set::name($item['name']),
- !empty($item['href']) ? a
- (
- set::href($item['href']),
- !empty($item['attr']) && is_array($item['attr']) ? set($item['attr']) : null,
- $item['text']
- ) : $item['text'],
- set::collapse(!empty($item['text']))
- );
- }
- return $itemList;
- };
- $formAction = array(
- array(
- 'text' => $lang->metric->testMetric,
- 'class' => 'secondary',
- 'type' => 'submit',
- 'onclick' => 'window.testMetric()'
- )
- );
- /**
- * Build default value and query value control.
- *
- * @param string $name
- * @param string $controlType
- * @param string $value
- * @param string $optionType
- * @access public
- * @return array
- */
- $buildValueControl = function($paramName, $controlType, $value, $optionType, $varID)
- {
- $name = $paramName . '[]';
- $options = $this->metric->getControlOptions($optionType);
- $dateControl = formGroup
- (
- set::width('150px'),
- set::label(''),
- datePicker
- (
- set::name($name),
- set::value($value)
- ),
- setClass("form-body-item {$paramName}-{$varID}-date"),
- setClass($controlType !== 'date' ? 'hidden' : '')
- );
- $selectControl = formGroup
- (
- set::width('150px'),
- set::label(''),
- picker
- (
- set::name($name),
- set::items($options),
- set::disabled($controlType !== 'select' ? true : false)
- ),
- setClass("form-body-item {$paramName}-{$varID}-select"),
- setClass($controlType !== 'select' ? 'hidden' : '')
- );
- $inputControl = formGroup
- (
- set::width('150px'),
- set::label(''),
- input
- (
- set::name($name),
- set::value($value),
- set::disabled($controlType !== 'input' ? true : false)
- ),
- setClass("form-body-item {$paramName}-{$varID}-input"),
- setClass($controlType !== 'input' ? 'hidden' : '')
- );
- return div
- (
- $dateControl,
- $selectControl,
- $inputControl,
- setClass("{$paramName}-{$varID}-group")
- );
- return $control;
- };
- $formHeader = div
- (
- div
- (
- setClass('form-header-item'),
- setStyle('width', '50px'),
- setStyle('text-align', 'center'),
- $lang->metric->param->varName
- ),
- div
- (
- setClass('form-header-item'),
- setStyle('width', '150px'),
- setStyle('text-align', 'center'),
- $lang->metric->param->showName
- ),
- div
- (
- setClass('form-header-item'),
- setStyle('width', '300px'),
- setStyle('text-align', 'center'),
- $lang->metric->param->varType
- ),
- div
- (
- setClass('form-header-item'),
- setStyle('width', '150px'),
- $lang->metric->param->defaultValue,
- setStyle('text-align', 'center')
- ),
- div
- (
- setClass('form-header-item'),
- setStyle('width', '150px'),
- setStyle('text-align', 'center'),
- $lang->metric->param->queryValue
- ),
- setClass('flex form-header'),
- setStyle('justify-content', 'space-between'),
- setStyle('flex', '1')
- );
- /**
- * Build a param control group.
- *
- * @param object $param
- * @param callable $buildValueControl
- * @access public
- * @return array
- */
- $buildParamControlGroup = function($param, $buildValueControl, $typeList, $optionList)
- {
- $varID = ltrim($param['varName'], '$');
- $varType = zget($param, 'varType', '');
- $varNameLabel = div
- (
- $param['varName'],
- setStyle('width', '50px'),
- setClass("form-body-item varName-{$varID}")
- );
- $showNameControl = formGroup
- (
- set::width('150px'),
- set::control('input'),
- set::name('showName[]'),
- set::value($param['showName']),
- setClass("form-body-item showName-{$varID}")
- );
- $varTypeControl = formGroup
- (
- set::width('150px'),
- set::name('varType[]'),
- set::control('select'),
- set::items($typeList),
- set::value(zget($param, 'varType')),
- set::label(''),
- setClass("form-body-item varType-{$varID}")
- );
- $optionsControl = formGroup
- (
- set::width('150px'),
- set::name('options[]'),
- set::control('select'),
- set::items($optionList),
- set::value($param['options']),
- setClass("form-body-item options-{$varID}"),
- set::label('')
- );
- $defaultValueControl = $buildValueControl('defaultValue', $varType, zget($param, 'defaultValue', ''), $param['options'], $varID);
- $queryValueControl = $buildValueControl('queryValue', $varType, zget($param, 'queryValue', ''), $param['options'], $varID);
- $varNameControl = formGroup
- (
- set::className('hidden'),
- set::control('hidden'),
- set::name('varName[]'),
- set::value($param['varName']),
- setClass("form-body-item varNameLabel-{$varID}")
- );
- $paramControlGroup = formRow
- (
- $varNameLabel,
- $showNameControl,
- div
- (
- $varTypeControl,
- $optionsControl,
- setClass('flex form-body-group'),
- setStyle('justify-content', 'flex-start')
- ),
- $defaultValueControl,
- $queryValueControl,
- $varNameControl,
- setClass('flex form-body'),
- setStyle('justify-content', 'space-between'),
- setStyle('align-items', 'center'),
- setStyle('flex', '1'),
- setStyle('width', '100%')
- );
- return $paramControlGroup;
- };
- $paramControlGroups = array();
- foreach($params as $param) $paramControlGroups[] = $buildParamControlGroup($param, $buildValueControl, $lang->metric->param->typeList, $lang->metric->param->options);
- $formAction = array(
- array(
- 'text' => $lang->metric->testMetric,
- 'class' => 'secondary',
- 'type' => 'submit',
- 'onclick' => 'testMetric({id})'
- )
- );
- detailHeader
- (
- to::title
- (
- entityLabel
- (
- set::entityID($metric->id),
- set::level(1),
- set::text($metric->name)
- ),
- $metric->deleted == '1' ? label
- (
- set::text($lang->deleted),
- setClass('danger')
- ) : null
- ),
- to::prefix
- (
- backBtn
- (
- set::icon('back'),
- set::type('secondary'),
- $lang->goback
- )
- )
- );
- $actionMenuList = !$metric->deleted ? $this->metric->buildOperateMenu($metric) : array();
- detailBody
- (
- on::change('#varType', 'toggleVarType'),
- on::change('#options', 'toggleOptionsList'),
- sectionList
- (
- section
- (
- set::title($lang->metric->declaration),
- set::content(empty(trim($metric->definition)) ? $lang->metric->noFormula : $metric->definition),
- set::useHtml(true)
- ),
- section
- (
- set::title($lang->metric->sqlStatement),
- set::content(empty(trim($metric->sql)) ? $lang->metric->noSQL : $metric->sql),
- set::useHtml(true)
- ),
- section
- (
- set::title($lang->metric->metricData),
- formBase
- (
- $formHeader,
- $paramControlGroups,
- setClass('flex params-form'),
- setStyle('flex-direction', 'column'),
- setStyle('justify-content', 'space-between'),
- set::actions($formAction),
- div
- (
- setClass('response-box')
- )
- )
- )
- ),
- history
- (
- set::commentUrl(createLink('action', 'comment', array('objectType' => 'metric', 'objectID' => $metric->id)))
- ),
- floatToolbar
- (
- isAjaxRequest('modal') ? null : to::prefix(backBtn(set::icon('back'), $lang->goback)),
- !empty($actionMenuList['main']) ? set::main($actionMenuList['main']) : null,
- !empty($actionMenuList['suffix']) ? set::suffix($actionMenuList['suffix']) : null,
- set::object($metric)
- ),
- detailSide
- (
- tabs
- (
- set::collapse(true),
- tabPane
- (
- set::key('legendBasicInfo'),
- set::className('overflow-hidden'),
- set::title($lang->metric->legendBasicInfo),
- set::active(true),
- tableData
- (
- $buildItems($legendBasic)
- )
- )
- )
- )
- );
- if(!isInModal())
- {
- floatPreNextBtn
- (
- !empty($preAndNext->pre) ? set::preLink(createLink('metric', 'view', "id={$preAndNext->pre->id}")) : null,
- !empty($preAndNext->next) ? set::nextLink(createLink('metric', 'view', "id={$preAndNext->next->id}")) : null
- );
- }
- render();
|