Dashboard: display the most relevant label in the group by dashlets (eg: hyperlink to an ext key)

SVN:trunk[2043]
This commit is contained in:
Romain Quetiez
2012-05-27 15:33:54 +00:00
parent 479bef14e6
commit 4115ddbe13
3 changed files with 96 additions and 39 deletions

View File

@@ -91,6 +91,19 @@ abstract class Expression
}
abstract public function RenameParam($sOldName, $sNewName);
/**
* Make the most relevant label, given the value of the expression
*
* @param DBObjectSearch oFilter The context in which this expression has been used
* @param string sValue The value returned by the query, for this expression
* @param string sDefault The default value if no relevant label could be computed
* @return The label
*/
public function MakeValueLabel($oFilter, $sValue, $sDefault)
{
return $sDefault;
}
}
class SQLExpression extends Expression
@@ -465,6 +478,36 @@ class FieldExpression extends UnaryExpression
}
return $oRet;
}
/**
* Make the most relevant label, given the value of the expression
*
* @param DBObjectSearch oFilter The context in which this expression has been used
* @param string sValue The value returned by the query, for this expression
* @param string sDefault The default value if no relevant label could be computed
* @return The label
*/
public function MakeValueLabel($oFilter, $sValue, $sDefault)
{
$sAttCode = $this->GetName();
$sParentAlias = $this->GetParent();
$aSelectedClasses = $oFilter->GetSelectedClasses();
$sClass = $aSelectedClasses[$sParentAlias];
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
if ($oAttDef->IsExternalKey())
{
$sTargetClass = $oAttDef->GetTargetClass();
$oObject = MetaModel::GetObject($sTargetClass, (int)$sValue);
$sRes = $oObject->GetHyperlink();
}
else
{
$sRes = $oAttDef->GetAsHtml($sValue);
}
return $sRes;
}
}
// Has been resolved into an SQL expression