diff --git a/application/displayblock.class.inc.php b/application/displayblock.class.inc.php
index be1fdafa2..b96011f4a 100644
--- a/application/displayblock.class.inc.php
+++ b/application/displayblock.class.inc.php
@@ -772,13 +772,57 @@ EOF
$sHtml .= "
\n";
$oPage->add_script("function ofc_resize(left, width, top, height) { /* do nothing special */ }");
$oPage->add_ready_script("swfobject.embedSWF(\"../images/open-flash-chart.swf\", \"my_chart_{$iChartCounter}\", \"100%\", \"300\",\"9.0.0\", \"expressInstall.swf\",
- {\"data-file\":\"".urlencode("../pages/ajax.render.php?operation=open_flash_chart¶ms[group_by]=$sGroupBy{$sGroupByExpr}¶ms[chart_type]=$sChartType¶ms[chart_title]=$sTitle&filter=".$sFilter)."\"}, {wmode: 'transparent'} );\n");
+ {\"data-file\":\"".urlencode("../pages/ajax.render.php?operation=open_flash_chart¶ms[group_by]=$sGroupBy{$sGroupByExpr}¶ms[chart_type]=$sChartType¶ms[chart_title]=$sTitle&id=$sId&filter=".$sFilter)."\"}, {wmode: 'transparent'} );\n");
$iChartCounter++;
+ if (isset($aExtraParams['group_by']))
+ {
+ $sGroupByField = $aExtraParams['group_by'];
+ $aGroupBy = array();
+ while($oObj = $this->m_oSet->Fetch())
+ {
+ if (isset($aExtraParams['group_by_expr']))
+ {
+ eval("\$sValue = ".sprintf($aExtraParams['group_by_expr'], $oObj->Get($sGroupByField)).';');
+ }
+ else
+ {
+ $sValue = $oObj->Get($sGroupByField);
+ }
+ $aGroupBy[$sValue] = isset($aGroupBy[$sValue]) ? $aGroupBy[$sValue]+1 : 1;
+ }
+ $sFilter = urlencode($this->m_oFilter->serialize());
+ $aData = array();
+ $aLabels = array();
+ $idx = 0;
+ foreach($aGroupBy as $sValue => $iValue)
+ {
+ $oDrillDownFilter = clone $this->m_oFilter;
+ $oDrillDownFilter->AddCondition($sGroupByField, $sValue, '=');
+ $aURLs[$idx] = $oDrillDownFilter->serialize();
+ $idx++;
+ }
+ $sURLList = '';
+ foreach($aURLs as $index => $sURL)
+ {
+ $sURLList .= "\taURLs[$index] = '".utils::GetAbsoluteUrlAppRoot()."pages/UI.php?operation=search&format=html&filter=".addslashes($sURL)."';\n";
+ }
+ $oPage->add_script(
+<<m_oFilter->serialize());
$aData = array();
$aLabels = array();
+ $maxValue = 0;
foreach($aGroupBy as $sValue => $iValue)
{
- $aData[] = $iValue;
+ $oBarValue = new bar_value($iValue);
+ $oBarValue->on_click("ofc_drill_down_$sId");
+ $aData[] = $oBarValue;
+ if ($iValue > $maxValue) $maxValue = $iValue;
$aLabels[] = $sValue;
}
- $maxValue = max($aData);
$oYAxis = new y_axis();
$aMagicValues = array(1,2,5,10);
$iMultiplier = 1;
@@ -869,7 +916,9 @@ EOF
$aData = array();
foreach($aGroupBy as $sValue => $iValue)
{
- $aData[] = new pie_value($iValue, $sValue); //@@ BUG: not passed via ajax !!!
+ $PieValue = new pie_value($iValue, $sValue); //@@ BUG: not passed via ajax !!!
+ $PieValue->on_click("ofc_drill_down_$sId");
+ $aData[] = $PieValue;
}
diff --git a/application/sqlblock.class.inc.php b/application/sqlblock.class.inc.php
index 7696babfb..07f6c3efa 100644
--- a/application/sqlblock.class.inc.php
+++ b/application/sqlblock.class.inc.php
@@ -236,7 +236,7 @@ class SqlBlock
{
$sFilter = str_replace(':'.$sColName, "'".addslashes( $aRow[$sColName] )."'", $sFilter);
}
- $sURL = '../pages/UI.php?operation=search_oql&search_form=0&oql_class='.$sClass.'&oql_clause='.urlencode($sFilter).'&format=html?'.$oAppContext->GetForLink();
+ $sURL = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?operation=search_oql&search_form=0&oql_class='.$sClass.'&oql_clause='.urlencode($sFilter).'&format=html?'.$oAppContext->GetForLink();
$aDisplayRow[$sName] = ''.$aRow[$sName]."";
}
else
@@ -270,7 +270,7 @@ class SqlBlock
$sOQLClause = str_replace('SELECT '.$sClass, '', $sDrillDown);
$aSQLColNames = array_keys(current($aRows)); // Read the list of columns from the current (i.e. first) element of the array
$oAppContext = new ApplicationContext();
- $sURL = '../pages/UI.php?operation=search_oql&search_form=0&oql_class='.$sClass.'&format=html&'.$oAppContext->GetForLink().'&oql_clause=';
+ $sURL = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?operation=search_oql&search_form=0&oql_class='.$sClass.'&format=html&'.$oAppContext->GetForLink().'&oql_clause=';
$aURLs = array();
}
foreach($aValues as $key => $value)