%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/report/lib/visualconstructor/fields/valuable/ |
Current File : //home/bitrix/www/bitrix/modules/report/lib/visualconstructor/fields/valuable/previewblock.php |
<?php namespace Bitrix\Report\VisualConstructor\Fields\Valuable; use Bitrix\Report\VisualConstructor\Helper\Widget; use Bitrix\Report\VisualConstructor\RuntimeProvider\ViewProvider; /** * Preview block field, contains all exist miniature and functionality to see preview, can toggle to other view type * @package Bitrix\Report\VisualConstructor\Fields\Valuable */ class PreviewBlock extends BaseValuable { const JS_EVENT_ON_VIEW_SELECT = 'onSelect'; protected $widget; /** * Preview block field constructor. * Defaul view type is linear graph. * * @param $key */ public function __construct($key) { parent::__construct($key); $this->setLabel(''); $this->setDefaultValue('linearGraph'); } /** * Load field component with label or previewblock template. * Pass available view types list. * And prepared widget params to render in preview block. * * @return void */ public function printContent() { $params = array( 'AVAILABLE_VIEWS' => $this->getAvailableViewList(), 'PREPARED_WIDGET' => Widget::prepareWidgetContent($this->getWidget(), true), ); $this->includeFieldComponent('previewblock', $params); } /** * @return \Bitrix\Report\VisualConstructor\Entity\Widget */ public function getWidget() { return $this->widget; } /** * Preview widget setter. * * @param \Bitrix\Report\VisualConstructor\Entity\Widget $widget Widget will render in preview block. * @return void */ public function setWidget(\Bitrix\Report\VisualConstructor\Entity\Widget $widget) { $this->widget = $widget; $this->setDefaultValue($widget->getViewKey()); } /** * @return \Bitrix\Report\VisualConstructor\View[] */ private function getAvailableViews() { static $views; if (!$views) { $viewProvider = new ViewProvider(); $results = $viewProvider->execute()->getResults(); foreach ($results as $result) { $views[$result->getKey()] = $result; } } return $views; } /** * @return array */ private function getAvailableViewList() { $result = array(); $views = $this->getAvailableViews(); foreach ($views as $view) { $result[] = array( 'key' => $view->getKey(), 'label' => $view->getLabel(), 'logoUrl' => $view->getLogoUri(), ); } return $result; } }