%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/report/lib/visualconstructor/views/jscomponent/amchart/ |
| Current File : /home/bitrix/www/bitrix/modules/report/lib/visualconstructor/views/jscomponent/amchart/serial.php |
<?php
namespace Bitrix\Report\VisualConstructor\Views\JsComponent\AmChart;
use Bitrix\Report\VisualConstructor\Config\Common;
use Bitrix\Report\VisualConstructor\Fields\Valuable\DropDown;
use Bitrix\Report\VisualConstructor\Handler\BaseReport;
/**
* Class Serial
* @package Bitrix\Report\VisualConstructor\Views\AmChart
*/
abstract class Serial extends Base
{
const MAX_RENDER_REPORT_COUNT = 15;
/**
* Serial widget base constructor.
*/
public function __construct()
{
parent::__construct();
$this->setCompatibleDataType(Common::MULTIPLE_GROUPED_REPORT_TYPE);
}
/**
* Handle all data prepared for this view.
* Collect paremeters for pass serial amchart.
* @see Amchart documantation.
*
* @param array $dataFromReport Parameters prepared in report handlers.
* @return array
*/
public function handlerFinallyBeforePassToView($dataFromReport)
{
$result = parent::handlerFinallyBeforePassToView($dataFromReport);
$result += array(
'dataProvider' => array(),
'dataDateFormat' => 'YYYY-MM-DD',
'valueAxes' => array(
array(
'integersOnly' => true,
'maximum' => 0,
'minimum' => 0,
'reversed' => false,
'axisAlpha' => 0,
'position' => 'left'
)
),
'startDuration' => 0.5,
'graphs' => array(),
'categoryField' => 'groupingField',
'categoryAxis' => array(
'axisAlpha' => 0,
'fillAlpha' => 0.05,
'gridAlpha' => 0,
'position' => 'bottom',
),
'export' => array(
'enabled' => true,
'position' => 'bottom-right'
),
'legend' => array(
'useGraphSettings' => true,
'equalWidths' => false,
'position' => "bottom"
),
'chartCursor' => array(
'enabled' => true,
'oneBalloonOnly' => true,
'categoryBalloonEnabled' => true,
'categoryBalloonColor' => "#000000",
'cursorAlpha' => 1,
'zoomable' => true,
),
);
$reportCount = 0;
foreach ($dataFromReport as $data)
{
$reportCount++;
if (isset($data['items']))
{
foreach ($data['items'] as $key => $res)
{
if (!isset($result['dataProvider'][$res['groupBy']]))
{
$result['dataProvider'][$res['groupBy']] = array(
'groupingField' => !empty($data['config']['groupsLabelMap'][$res['groupBy']]) ? $data['config']['groupsLabelMap'][$res['groupBy']] : '-',
);
}
//$result['dataProvider'][$res['groupBy']]['bullet'] = "https://www.amcharts.com/lib/images/faces/A04.png";
$result['dataProvider'][$res['groupBy']]['value_' . $reportCount] = $res['value'];
if ($result['valueAxes'][0]['maximum'] < $res['value'])
{
$result['valueAxes'][0]['maximum'] = $res['value'];
}
}
$result['graphs'][] = array(
"balloonText" => $data['config']['reportTitle'] . " [[value]]",
"bullet" => "round",
//"labelText" => "[[value]]",
"title" => $data['config']['reportTitle'],
"fillColors" => $data['config']['reportColor'],
"lineColor" => $data['config']['reportColor'],
"valueField" => 'value_' . $reportCount,
"fillAlphas" => 0,
);
}
}
ksort($result['dataProvider']);
$result['dataProvider'] = array_values($result['dataProvider']);
return $result;
}
/**
* Method to modify widget form elements.
*
* @param BaseReport $reportHandler Widget handler.
* @return void
*/
public function collectReportHandlerFormElements($reportHandler)
{
parent::collectReportHandlerFormElements($reportHandler);
/** @var DropDown $whatWillCalculateField */
$whatWillCalculateField = $reportHandler->getFormElement('calculate');
$labelField = $reportHandler->getFormElement('label');
if ($whatWillCalculateField)
{
$labelField->addJsEventListener($whatWillCalculateField, $whatWillCalculateField::JS_EVENT_ON_CHANGE, array(
'class' => 'BX.Report.VisualConstructor.FieldEventHandlers.Title',
'action' => 'whatWillCalculateChange',
));
$whatWillCalculateField->addAssets(array(
'js' => array('/bitrix/js/report/js/visualconstructor/fields/reporttitle.js')
));
}
}
/**
* Return amchar classification type.
*
* @return string
*/
protected function getAmChartType()
{
return 'serial';
}
}