18 private $reportsInWidgetCount;
38 $view->prepareWidgetFormBeforeRender($this);
54 $saveButtonTitle =
$params[
'saveButtonTitle'];
56 $form =
new static($view, $widget);
57 $form->setId(
'report_widget_configuration_form_' . $widget->getGId());
58 $form->setAction($action);
59 $form->setBoarId($boardId);
60 $form->addDataAttribute(
'widget-id', $widget->getGId());
61 $form->addWidgetConfigurationFormFullContent();
65 $footerContainer->setKey(
'footer_container');
66 $footerContainer->addClass(
'report-widget-configuration-form-footer-container');
67 $footerContainer->addDataAttribute(
'role',
'footer-container');
71 $buttonsContainer->addClass(
'report-widget-configuration-form-action-buttons-container');
75 if (Loader::includeModule(
'ui'))
80 'text' => $saveButtonTitle,
82 'type' =>
'save-button',
86 $saveButton->addAttribute(
'id',
'widgetSaveConfigurations_' . $widget->getGId());
91 'text' => Loc::getMessage(
'SAVE_WIDGET_CONFIG_CANCEL_BUTTON'),
93 'type' =>
'cancel-button',
97 $cancelButton->addAttribute(
'id',
'widgetCancelConfigurations_' . $widget->getGId());
101 $checkBoxContainer->addClass(
'report-configuration-footer-right-container');
104 $isPatternCheckBox->setLabel(Loc::getMessage(
'SAVE_WIDGET_AS_PATTERN'));
106 $form->add($footerContainer->start());
107 $form->add($buttonsContainer->start());
110 $form->add(
new Fields\
Html($saveButton->render(
false)));
114 $form->add(
new Fields\
Html($cancelButton->render(
false)));
116 $form->add($buttonsContainer->end());
117 $form->add($checkBoxContainer->start());
118 $form->add($isPatternCheckBox);
119 $form->add($checkBoxContainer->end());
120 $form->add($footerContainer->end());
128 private function addWidgetConfigurationFormFullContent()
132 $formContentContainer->addClass(
'report-widget-configuration-form-content');
133 $formContentContainer->setKey(
'form_content_container');
134 $this->
add($formContentContainer->start());
135 $this->addWidgetConfigurationsBlock();
137 $reportsConfigurationsContainerWrapper =
new Fields\Div();
138 $reportsConfigurationsContainerWrapper->addClass(
'reports-configurations-container-wrapper');
139 $this->
add($reportsConfigurationsContainerWrapper->start());
140 $this->addReportsConfigurationsBlock();
141 $this->addReportAddButtonBlock();
142 $this->
add($reportsConfigurationsContainerWrapper->end());
145 $maxReportCountField->addDataAttribute(
'hidden-field',
'maxRenderReportCount');
146 $maxReportCountField->setValue($view::MAX_RENDER_REPORT_COUNT);
147 $this->
add($maxReportCountField);
150 $boardIdField->setValue($this->
getBoarId());
151 $this->
add($boardIdField);
154 $widgetIdField->setValue($this->
getWidget()->getGId());
155 $this->
add($widgetIdField);
158 $categoryKeyField->setValue($this->
getWidget()->getCategoryKey());
159 $this->
add($categoryKeyField);
161 $this->
add($formContentContainer->end());
164 private function addWidgetConfigurationsBlock()
166 $widgetConfigurationFields = $this->getWidgetConfigurationFields();
167 $widgetConfigurationsContainer =
new Fields\Div();
168 $widgetConfigurationsContainer->addClass(
'widgets-configurations-container');
170 $this->
add($widgetConfigurationsContainer->start());
171 foreach ($widgetConfigurationFields as $configurationField)
173 $this->
add($configurationField);
175 $this->
add($widgetConfigurationsContainer->end());
178 private function addReportsConfigurationsBlock()
180 $reportsConfigurationFields = $this->getReportConfigurationFields();
181 $reportsConfigurationsContainer =
new Fields\Div();
182 $reportsConfigurationsContainer->addClass(
'reports-configurations-container');
183 $reportsConfigurationsContainer->addDataAttribute(
'role',
'reports-configurations-container');
184 $reportsConfigurationsContainer->addDataAttribute(
'widget-id', $this->
getWidget()->getGId());
185 $this->
add($reportsConfigurationsContainer->start());
186 $this->reportsInWidgetCount =
count($reportsConfigurationFields);
187 if($reportsConfigurationFields)
189 $reportConfigurationsContainer =
new Fields\Div();
190 $reportConfigurationsContainer->addClass(
'report-configuration-container');
191 $reportConfigurationsContainer->addDataAttribute(
'role',
'report-configuration-container');
192 $reportConfigurationsContainer->addDataAttribute(
'is-pseudo',
'0');
193 $reportConfigurationsContainer->addClass(
'report-configuration-container-visible');
196 foreach ($reportsConfigurationFields as $reportGId => $reportConfiguration)
199 $reportConfigurationsContainer->addDataAttribute(
'report-id', $reportGId);
200 $container =
new Fields\Container();
201 $container->setKey(
'report_configurations_container_' . $num);
202 $container->addDataAttribute(
'role',
'report-configuration-container');
206 $container->addElement($reportConfigurationsContainer->start());
208 foreach ($reportConfiguration[
'FIELDS'] as $configurationField)
210 $container->addElement($configurationField);
214 $container->addElement($reportConfigurationsContainer->end());
215 $this->
add($container);
219 $this->
add($reportsConfigurationsContainer->end());
222 private function addReportAddButtonBlock()
224 $addButtonContainer =
new Fields\Div();
225 $addButtonContainer->addClass(
'report-configuration-add-report-button-container');
226 $addButton =
new Fields\Button(
'widgetAddReportButton_' . $this->
getWidget()->getGId());
227 $addButton->addClass(
'add-report-to-widget-button');
229 if ($view::MAX_RENDER_REPORT_COUNT <= $this->reportsInWidgetCount)
231 $addButtonContainer->addClass(
'report-configuration-add-report-button-container-invisible');
233 $addButton->setLabel(Loc::getMessage(
'ADD_REPORT_BUTTON'));
234 $this->
add($addButtonContainer->start());
236 $this->
add($addButton);
237 $this->
add($addButtonContainer->end());
243 private function getWidgetConfigurationFields()
245 return $this->
getWidget()->getWidgetHandler()->getFormElements();
251 private function getReportConfigurationFields()
253 $reports = $this->
getWidget()->getReports();
254 $configurations =
array();
255 foreach ($reports as $report)
257 $reportHandler = $report->getReportHandler();
258 $reportHandler->setView($this->view);
259 $configurations[$report->getGId()][
'FIELDS'] = $reportHandler->getFormElements();
261 return $configurations;
286 return $this->widget;
295 $this->widget = $widget;
303 return $this->boarId;
312 $this->boarId = $boarId;