浏览代码

Dashboard: invoke directly the display blocks (fixes bugs with titles)

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@2044 a333f486-631f-4898-b8df-5754b55c2be0
romainq 13 年之前
父节点
当前提交
d8a30ca333
共有 1 个文件被更改,包括 54 次插入27 次删除
  1. 54 27
      application/dashlet.class.inc.php

+ 54 - 27
application/dashlet.class.inc.php

@@ -294,15 +294,14 @@ class DashletObjectList extends Dashlet
 		$sQuery = $this->aProperties['query'];
 		$sShowMenu = $this->aProperties['menu'] ? '1' : '0';
 
-
 		$oPage->add('<div style="text-align:center" class="dashlet-content">');
-		// C'est quoi ce paramètre "menu" ?
-		$sXML = '<itopblock BlockClass="DisplayBlock" type="list" asynchronous="false" encoding="text/oql" parameters="menu:'.$sShowMenu.'">'.$sQuery.'</itopblock>';
-		$aParams = array();
+		$oFilter = DBObjectSearch::FromOQL($sQuery);
+		$oBlock = new DisplayBlock($oFilter, 'list');
+		$aExtraParams = array(
+			'menu' => $sShowMenu,
+		);
 		$sBlockId = 'block_'.$this->sId.($bEditMode ? '_edit' : ''); // make a unique id (edition occuring in the same DOM)
-		$oBlock = DisplayBlock::FromTemplate($sXML);
-		$oBlock->Display($oPage, $sBlockId, $aParams);
-
+		$oBlock->Display($oPage, $sBlockId, $aExtraParams);
 		$oPage->add('</div>');
 	}
 
@@ -419,17 +418,35 @@ abstract class DashletGroupBy extends Dashlet
 			switch($sStyle)
 			{
 			case 'bars':
-				$sXML = '<itopblock BlockClass="DisplayBlock" type="open_flash_chart" parameters="chart_type:bars;chart_title:'.$sGroupByLabel.';group_by:'.$sGroupByExpr.';group_by_label:'.$sGroupByLabel.'" asynchronous="false" encoding="text/oql">'.$sQuery.'</itopblock>';
+				$sType = 'open_flash_chart';
+				$aExtraParams = array(
+					'chart_type' => 'bars',
+					'chart_title' => $sTitle,
+					'group_by' => $sGroupByExpr,
+					'group_by_label' => $sGroupByLabel,
+				);
 				$sHtmlTitle = ''; // done in the itop block
 				break;
+
 			case 'pie':
-				$sXML = '<itopblock BlockClass="DisplayBlock" type="open_flash_chart" parameters="chart_type:pie;chart_title:'.$sGroupByLabel.';group_by:'.$sGroupByExpr.';group_by_label:'.$sGroupByLabel.'" asynchronous="false" encoding="text/oql">'.$sQuery.'</itopblock>';
+				$sType = 'open_flash_chart';
+				$aExtraParams = array(
+					'chart_type' => 'pie',
+					'chart_title' => $sTitle,
+					'group_by' => $sGroupByExpr,
+					'group_by_label' => $sGroupByLabel,
+				);
 				$sHtmlTitle = ''; // done in the itop block
 				break;
+
 			case 'table':
 			default:
 				$sHtmlTitle = htmlentities(Dict::S($sTitle), ENT_QUOTES, 'UTF-8'); // done in the itop block
-				$sXML = '<itopblock BlockClass="DisplayBlock" type="count" parameters="group_by:'.$sGroupByExpr.';group_by_label:'.$sGroupByLabel.'" asynchronous="false" encoding="text/oql">'.$sQuery.'</itopblock>';
+				$sType = 'count';
+				$aExtraParams = array(
+					'group_by' => $sGroupByExpr,
+					'group_by_label' => $sGroupByLabel,
+				);
 				break;
 			}
 	
@@ -438,17 +455,10 @@ abstract class DashletGroupBy extends Dashlet
 			{
 				$oPage->add('<h1>'.$sHtmlTitle.'</h1>');
 			}
-			$aParams = array();
 			$sBlockId = 'block_'.$this->sId.($bEditMode ? '_edit' : ''); // make a unique id (edition occuring in the same DOM)
-			$oBlock = DisplayBlock::FromTemplate($sXML);
-			$oBlock->Display($oPage, $sBlockId, $aParams);
+			$oBlock = new DisplayBlock($oFilter, $sType);
+			$oBlock->Display($oPage, $sBlockId, $aExtraParams);
 			$oPage->add('</div>');
-
-			// TEST Group By as SQL!
-			//$oSearch = DBObjectSearch::FromOQL($this->aProperties['query']);
-			//$sSql = MetaModel::MakeSelectQuery($oSearch);
-			//$sHtmlSql = htmlentities($sSql, ENT_QUOTES, 'UTF-8');
-			//$oPage->p($sHtmlSql);
 		}
 	}
 
@@ -684,23 +694,35 @@ class DashletHeader extends Dashlet
 		if ($sStatusAttCode == '')
 		{
 			// Simple stats
-			$sXML = '<itopblock BlockClass="DisplayBlock" type="summary" asynchronous="false" encoding="text/oql" parameters="title[block]:'.$sTitleReady.';context_filter:1;label[block]:'.$sSubtitleReady.'">SELECT '.$sClass.'</itopblock>';
+			$aExtraParams = array(
+				'title[block]' => $sTitleReady,
+				'label[block]' => $sSubtitleReady,
+				'context_filter' => 1,
+			);
 		}
 		else
 		{
 			// Stats grouped by "status"
 
 			$sStatusList = implode(',', $aStates);
-			//$oPage->p('State: '.$sStatusAttCode.' states='.$sStatusList);
-			$sXML = '<itopblock BlockClass="DisplayBlock" type="summary" asynchronous="false" encoding="text/oql" parameters="title[block]:'.$sTitleReady.';context_filter:1;label[block]:'.$sSubtitleReady.';status[block]:status;status_codes[block]:'.$sStatusList.'">SELECT '.$sClass.'</itopblock>';
+
+			$aExtraParams = array(
+				'title[block]' => $sTitleReady,
+				'label[block]' => $sSubtitleReady,
+				'status[block]' => 'status',
+				'status_codes[block]' => $sStatusList,
+				'context_filter' => 1,
+			);
 		}
 
 		$oPage->add('<div style="text-align:center" class="dashlet-content">');
 		$oPage->add('<div class="main_header">');
-		$aParams = array();
+
+		$oFilter = new DBObjectSearch($sClass);
+		$oBlock = new DisplayBlock($oFilter, 'summary');
 		$sBlockId = 'block_'.$this->sId.($bEditMode ? '_edit' : ''); // make a unique id (edition occuring in the same DOM)
-		$oBlock = DisplayBlock::FromTemplate($sXML);
-		$oBlock->Display($oPage, $sBlockId, $aParams);
+		$oBlock->Display($oPage, $sBlockId, $aExtraParams);
+
 		$oPage->add('</div>');
 		$oPage->add('</div>');
 	}
@@ -743,10 +765,15 @@ class DashletBadge extends Dashlet
 		$sClass = $this->aProperties['class'];
 
 		$oPage->add('<div style="text-align:center" class="dashlet-content">');
-		$sXml = "<itopblock BlockClass=\"DisplayBlock\" type=\"actions\" asynchronous=\"false\" encoding=\"text/oql\" parameters=\"context_filter:1\">SELECT $sClass</itopblock>";
-		$oBlock = DisplayBlock::FromTemplate($sXml);
+
+		$oFilter = new DBObjectSearch($sClass);
+		$oBlock = new DisplayBlock($oFilter, 'actions');
+		$aExtraParams = array(
+			'context_filter' => 1,
+		);
 		$sBlockId = 'block_'.$this->sId.($bEditMode ? '_edit' : ''); // make a unique id (edition occuring in the same DOM)
 		$oBlock->Display($oPage, $sBlockId, $aExtraParams);
+
 		$oPage->add('</div>');
 	}