%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/report/lib/visualconstructor/controller/ |
| Current File : /home/bitrix/www/bitrix/modules/report/lib/visualconstructor/controller/configuration.php |
<?php
namespace Bitrix\Report\VisualConstructor\Controller;
use Bitrix\Report\VisualConstructor\Internal\Engine\Response\Component;
use Bitrix\Report\VisualConstructor\BaseReportHandler;
use Bitrix\Report\VisualConstructor\Handler\EmptyReport;
use Bitrix\Report\VisualConstructor\Helper\Report;
use Bitrix\Report\VisualConstructor\Internal\Error\Error;
use Bitrix\Report\VisualConstructor\RuntimeProvider\ReportProvider;
use Bitrix\Report\VisualConstructor\RuntimeProvider\ViewProvider;
/**
* Class Configuration
* @package Bitrix\Report\VisualConstructor\Controller
*/
class Configuration extends Base
{
/**
* Build pseudo report configuration block, and render it in component.
*
* @see report/install/components/bitrix/report.visualconstructor.widget.pseudoconfig/templates/.default/template.php.
* @param array $params Parameters from form.
* @return Component|bool
*/
public function buildPseudoReportConfigurationAction($params)
{
if (!isset($params['widgetId']))
{
$this->addError(new Error('widgetId not exist'));
return false;
}
if (!isset($params['viewKey']))
{
$this->addError(new Error('view key not exist'));
return false;
}
$existReportCount = !empty($params['existReportCount']) ? $params['existReportCount'] : 0;
$componentName = 'bitrix:report.visualconstructor.widget.pseudoconfig';
$templateName = '';
$widgetParams = array(
'widgetGId' => $params['widgetId'],
'viewKey' => $params['viewKey'],
);
$reportHandlerClassName = !empty($params['reportHandlerClassName']) ? $params['reportHandlerClassName'] : '__';
$widget = \Bitrix\Report\VisualConstructor\Entity\Widget::buildPseudoWidget($widgetParams);
if ($widget)
{
$componentParams = array(
'WIDGET_ID' => $widget->getGId()
);
if ($reportHandlerClassName == '__')
{
$reportHandlerClassName = EmptyReport::getClassName();
}
$reportHandler = Report::buildReportHandlerForWidget($reportHandlerClassName, $widget, true);
$colorFieldValue = !empty($params['colorFieldValue']) ? $params['colorFieldValue'] : $reportHandler->getView()->getReportDefaultColor($existReportCount + 1);
$reportHandler->getFormElement('color')->setValue($colorFieldValue);
$reportHandler->getFormElement('head_container_start')->addInlineStyle('background-color', $colorFieldValue);
$reportHandler->getFormElement('main_container_start')->addInlineStyle('background-color', $colorFieldValue . '5f');
$componentParams['REPORT_HANDLER'] = $reportHandler;
return new Component($componentName, $templateName, $componentParams);
}
$this->addError(new Error('No widget with this id'));
return false;
}
/**
* Return array of available what will calculate options.
*
* @param array $params Parameters from form.
* @return array|bool
*/
public function loadWhatWillCalculateByGroupAction($params)
{
if (!isset($params['widgetId']))
{
$this->addError(new Error('widgetId not exist'));
return false;
}
if (!isset($params['viewKey']))
{
$this->addError(new Error('view key not exist'));
return false;
}
if (!isset($params['reportHandlerClassName']))
{
$this->addError(new Error('report handler class name not exist'));
return false;
}
if (!isset($params['groupBy']))
{
$this->addError(new Error('groupBy field not exist'));
return false;
}
$widgetParams = array(
'widgetGId' => $params['widgetId'],
'viewKey' => $params['viewKey'],
);
$groupBy = $params['groupBy'];
$reportHandlerClassName = $params['reportHandlerClassName'];
$widget = \Bitrix\Report\VisualConstructor\Entity\Widget::buildPseudoWidget($widgetParams);
if ($widget)
{
$reportHandler = ReportProvider::getReportHandlerByClassName($reportHandlerClassName);
$viewHandler = ViewProvider::getViewByViewKey($widget->getViewKey());
$result = array();
if ($reportHandler && $viewHandler)
{
$reportHandler->setView($viewHandler);
$whatWillCalculate = $reportHandler->getWhatWillCalculateOptions($groupBy);
foreach ($whatWillCalculate as $value => $text)
{
$result[$value] = $text;
}
}
return $result;
}
$this->addError(new Error('No widget with this id'));
return false;
}
}