/** * @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(); }
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(); }