* Add date filter to metric in screen designer.

This commit is contained in:
zhouxin
2023-12-15 11:13:53 +08:00
parent 94eadf0d4a
commit 412f0810cf
2 changed files with 45 additions and 10 deletions
+14
View File
@@ -1541,6 +1541,20 @@ class metricModel extends model
return in_array('scope', array_column($header, 'name'));
}
/**
* 通过header来判断一个度量项有没有日期的概念。
* Judge whether a metric has the concept of an date.
*
* header 通过 metric 模块的 getViewTableHeader 方法取得
* @param array $header 表头
* @access public
* @return bool
*/
public function isDateMetric($header)
{
return in_array('date', array_column($header, 'name'));
}
/**
* 获取一个echarts的配置项。
* Get options of echarts by head and data.
+31 -10
View File
@@ -354,21 +354,22 @@ class screenModel extends model
*/
public function buildMetricFilters($metric)
{
$this->loadModel('metric');
$scope = $metric->scope;
$filters = array();
if($scope != 'system')
{
$filter = new stdclass();
$filter->from = 'query';
$filter->field = $scope;
$filter->name = $this->lang->$scope->common;
$filter->type = 'select';
$filter->typeOption = $scope;
$filter->default = null;
$scopeFilter = new stdclass();
$scopeFilter->from = 'query';
$scopeFilter->field = $scope;
$scopeFilter->name = $this->lang->$scope->common;
$scopeFilter->type = 'select';
$scopeFilter->typeOption = $scope;
$scopeFilter->default = null;
$objectPairs = $this->loadModel('metric')->getPairsByScope($scope, true);
$filter->options = array_map(function($objectID, $objectName)
$objectPairs = $this->metric->getPairsByScope($scope, true);
$scopeFilter->options = array_map(function($objectID, $objectName)
{
return array(
'label' => $objectName,
@@ -378,7 +379,27 @@ class screenModel extends model
array_keys($objectPairs),
array_values($objectPairs));
$filters[] = $filter;
$filters[] = $scopeFilter;
}
$resultHeader = $this->metric->getViewTableHeader($metric);
if($this->metric->isDateMetric($resultHeader))
{
$beginFilter = new stdclass();
$beginFilter->from = 'query';
$beginFilter->field = 'begin';
$beginFilter->type = 'date';
$beginFilter->typeOption = null;
$beginFilter->default = null;
$filters[] = $beginFilter;
$endFilter = new stdclass();
$endFilter->from = 'query';
$endFilter->field = 'end';
$endFilter->type = 'date';
$endFilter->typeOption = null;
$endFilter->default = null;
$filters[] = $endFilter;
}
return $filters;