/**
  * @return string
  * @throws NotSupportedException if the valueElementType is null
  */
 protected function getContentForFilter()
 {
     $params = array('inputPrefix' => $this->inputPrefixData);
     if ($this->model->hasAvailableOperatorsType() && count($this->model->getOperatorValuesAndLabels()) > 1) {
         $operatorElement = new OperatorStaticDropDownElement($this->model, 'operator', $this->form, $params);
         $operatorElement->editableTemplate = '{content}{error}';
         $operatorContent = $operatorElement->render();
     } else {
         $operatorContent = null;
     }
     $valueElementType = $this->model->getValueElementType();
     if ($valueElementType != null) {
         $valueElementClassName = $valueElementType . 'Element';
         $valueElement = new $valueElementClassName($this->model, 'value', $this->form, $params);
         if ($valueElement instanceof NameIdElement) {
             $valueElement->setIdAttributeId('value');
             $valueElement->setNameAttributeName('stringifiedModelForValue');
         }
         if ($valueElement instanceof MixedNumberTypesElement) {
             $valueElement->editableTemplate = '<div class="value-data two-value-areas">{content}{error}</div>';
         } elseif ($valueElement instanceof MixedDateTypesElement) {
             $valueElement->editableTemplate = '<div class="dynamic-row-operator">{valueType}</div>' . '<div class="value-data one-value-area has-date-inputs">' . '<div class="first-value-area one-value-area">{content}{error}</div></div>';
         } elseif ($valueElement instanceof MixedLoggedInUserTypesAndUsersElement) {
             $valueElement->editableTemplate = '<div class="dynamic-row-operator">{valueType}</div>' . '<div class="value-data one-value-area">' . '<div class="first-value-area one-value-area">{content}{error}</div></div>';
         } else {
             $startingDivStyleFirstValue = null;
             if (in_array($this->model->getOperator(), array(OperatorRules::TYPE_IS_NULL, OperatorRules::TYPE_IS_NOT_NULL, OperatorRules::TYPE_IS_EMPTY, OperatorRules::TYPE_IS_NOT_EMPTY))) {
                 $startingDivStyleFirstValue = "display:none;";
                 $valueElement->params['disabled'] = 'disabled';
             }
             $valueElement->editableTemplate = '<div class="value-data one-value-area"><div class="first-value-area" style="' . $startingDivStyleFirstValue . '">{content}{error}</div></div>';
         }
         $valueContent = $valueElement->render();
     } else {
         throw new NotSupportedException();
     }
     $content = $this->renderAttributeIndexOrDerivedType();
     $content .= $this->renderHiddenOperator();
     self::resolveDivWrapperForContent($this->model->getDisplayLabel(), $content, 'dynamic-row-label');
     self::resolveDivWrapperForContent($operatorContent, $content, 'dynamic-row-operator');
     $content .= $valueContent;
     if ($this->showAvailableRuntimeFilter) {
         $runTimeElement = new CheckBoxElement($this->model, 'availableAtRunTime', $this->form, $params);
         $runTimeElement->editableTemplate = '{label}{content}{error}';
         $runTimeContent = $runTimeElement->render();
         self::resolveDivWrapperForContent($runTimeContent, $content, 'report-runtime-availability');
     }
     return $content;
 }
 protected function resolveOperatorRequiresMultiSelect()
 {
     if ($this->model instanceof OperatorInterface && in_array($this->model->operator, OperatorStaticDropDownElement::getValuesRequiringMultiSelect())) {
         return true;
     }
     return false;
 }
 /**
  * @return array
  */
 protected function getEditableHtmlOptions()
 {
     $htmlOptions = parent::getEditableHtmlOptions();
     if (isset($htmlOptions['class'])) {
         $htmlOptions['class'] .= ' alwaysMultiple';
     } else {
         $htmlOptions['class'] = 'alwaysMultiple';
     }
     return $htmlOptions;
 }
 /**
  * @return string
  */
 public function renderContent()
 {
     OperatorStaticDropDownElement::registerOnLoadAndOnChangeScript();
     return $this->renderForm();
 }
Esempio n. 5
0
 protected function registerOperatorOnLoadAndOnChangeScript()
 {
     OperatorStaticDropDownElement::registerOnLoadAndOnChangeScript();
 }
 /**
  * Register filter scripts.
  */
 protected function registerFiltersScripts()
 {
     Yii::app()->getClientScript()->registerCoreScript('treeview');
     Yii::app()->clientScript->registerScriptFile(Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('application.modules.reports.views.assets')) . '/ReportUtils.js');
     Yii::app()->clientScript->registerScript('clickflow', "\n                function loadFiltersTreeView()\n                {\n                    " . RowsAndColumnsReportForSavedCalendarWizardView::renderTreeViewAjaxScriptContent(static::getFormId(), static::getFiltersForReportWizardViewClassName(), Report::TYPE_ROWS_AND_COLUMNS) . "\n                }\n                loadFiltersTreeView();\n            ");
     Yii::app()->getClientScript()->registerCoreScript('bbq');
     OperatorStaticDropDownElement::registerOnLoadAndOnChangeScript();
 }