/** * @param ReportWizardForm $formModel */ protected function setCommonAttributes(ReportWizardForm $formModel) { $formModel->id = $this->report->getId(); $formModel->description = $this->report->getDescription(); $formModel->moduleClassName = $this->report->getModuleClassName(); if ($this->report->getOwner()->id > 0) { $formModel->ownerId = (int) $this->report->getOwner()->id; $formModel->ownerName = strval($this->report->getOwner()); } $formModel->name = $this->report->getName(); $formModel->type = $this->report->getType(); $formModel->filtersStructure = $this->report->getFiltersStructure(); $formModel->currencyConversionType = $this->report->getCurrencyConversionType(); $formModel->spotConversionCurrencyCode = $this->report->getSpotConversionCurrencyCode(); if ($this->report->isNew()) { $formModel->setIsNew(); } $formModel->setExplicitReadWriteModelPermissions($this->report->getExplicitReadWriteModelPermissions()); $formModel->filters = $this->report->getFilters(); $formModel->orderBys = $this->report->getOrderBys(); $formModel->groupBys = $this->report->getGroupBys(); $formModel->displayAttributes = $this->report->getDisplayAttributes(); $formModel->drillDownDisplayAttributes = $this->report->getDrillDownDisplayAttributes(); $formModel->chart = $this->report->getChart(); }
/** * @param ModelRelationsAndAttributesToReportAdapter $modelToReportAdapter * @param RedBeanModel $precedingModel * @param null|string $precedingRelation * @throws NotSupportedException if the treeType is invalid or null */ protected function getAttributesData(ModelRelationsAndAttributesToReportAdapter $modelToReportAdapter, RedBeanModel $precedingModel = null, $precedingRelation = null) { if ($this->treeType == ComponentForReportForm::TYPE_FILTERS) { return $modelToReportAdapter->getAttributesForFilters(); } elseif ($this->treeType == ComponentForReportForm::TYPE_DISPLAY_ATTRIBUTES) { return $modelToReportAdapter->getAttributesForDisplayAttributes($this->report->getGroupBys(), $precedingModel, $precedingRelation); } elseif ($this->treeType == ComponentForReportForm::TYPE_ORDER_BYS) { return $modelToReportAdapter->getAttributesForOrderBys($this->report->getGroupBys(), $this->report->getDisplayAttributes(), $precedingModel, $precedingRelation); } elseif ($this->treeType == ComponentForReportForm::TYPE_GROUP_BYS) { return $modelToReportAdapter->getAttributesForGroupBys($precedingModel, $precedingRelation); } elseif ($this->treeType == ComponentForReportForm::TYPE_DRILL_DOWN_DISPLAY_ATTRIBUTES) { return $modelToReportAdapter->getForDrillDownAttributes($precedingModel, $precedingRelation); } else { throw new NotSupportedException(); } }
/** * @return array */ public function resolveGroupBys() { return $this->report->getGroupBys(); }
/** * @param array $data * @param Report $report */ protected static function resolveChart($data, Report $report) { if ($report->getType() != Report::TYPE_SUMMATION) { return; } $moduleClassName = $report->getModuleClassName(); if ($moduleClassName != null) { $modelClassName = $moduleClassName::getPrimaryModelName(); $adapter = ModelRelationsAndAttributesToSummationReportAdapter::make($moduleClassName, $modelClassName, $report->getType()); $seriesDataAndLabels = ReportUtil::makeDataAndLabelsForSeriesOrRange($adapter->getAttributesForChartSeries($report->getGroupBys(), $report->getDisplayAttributes())); $rangeDataAndLabels = ReportUtil::makeDataAndLabelsForSeriesOrRange($adapter->getAttributesForChartRange($report->getDisplayAttributes())); } else { $seriesDataAndLabels = array(); $rangeDataAndLabels = array(); } $chart = new ChartForReportForm($seriesDataAndLabels, $rangeDataAndLabels); if (null != ($chartData = ArrayUtil::getArrayValue($data, 'ChartForReportForm'))) { $chart->setAttributes($chartData); } $report->setChart($chart); }
/** * @depends testGetAvailableAttributesForMatrixGroupBys */ public function testGetAvailableAttributesForMatrixDisplayAttributes() { //Without any group by displayed, nothing is available $model = new ReportModelTestItem(); $rules = new ReportsTestReportRules(); $report = new Report(); $report->setType(Report::TYPE_MATRIX); $report->setModuleClassName('ReportsTestModule'); $adapter = new ModelRelationsAndAttributesToMatrixReportAdapter($model, $rules, $report->getType()); $attributes = $adapter->getAttributesForDisplayAttributes($report->getGroupBys()); $this->assertEquals(0, count($attributes)); //Select dropDown as the groupBy attribute $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType()); $groupBy->attributeIndexOrDerivedType = 'dropDown'; $report = new Report(); $report->setType(Report::TYPE_MATRIX); $report->setModuleClassName('ReportsTestModule'); $report->addGroupBy($groupBy); $adapter = new ModelRelationsAndAttributesToMatrixReportAdapter($model, $rules, $report->getType()); $attributes = $adapter->getAttributesForDisplayAttributes($report->getGroupBys()); $this->assertEquals(21, count($attributes)); $compareData = array('label' => 'Count'); $this->assertEquals($compareData, $attributes['Count']); $compareData = array('label' => 'Created Date Time -(Min)'); $this->assertEquals($compareData, $attributes['createdDateTime__Minimum']); $compareData = array('label' => 'Created Date Time -(Max)'); $this->assertEquals($compareData, $attributes['createdDateTime__Maximum']); $compareData = array('label' => 'Modified Date Time -(Min)'); $this->assertEquals($compareData, $attributes['modifiedDateTime__Minimum']); $compareData = array('label' => 'Modified Date Time -(Max)'); $this->assertEquals($compareData, $attributes['modifiedDateTime__Maximum']); $compareData = array('label' => 'Date -(Min)'); $this->assertEquals($compareData, $attributes['date__Minimum']); $compareData = array('label' => 'Date -(Max)'); $this->assertEquals($compareData, $attributes['date__Maximum']); $compareData = array('label' => 'Date Time -(Min)'); $this->assertEquals($compareData, $attributes['dateTime__Minimum']); $compareData = array('label' => 'Date Time -(Max)'); $this->assertEquals($compareData, $attributes['dateTime__Maximum']); $compareData = array('label' => 'Float -(Min)'); $this->assertEquals($compareData, $attributes['float__Minimum']); $compareData = array('label' => 'Float -(Max)'); $this->assertEquals($compareData, $attributes['float__Maximum']); $compareData = array('label' => 'Float -(Sum)'); $this->assertEquals($compareData, $attributes['float__Summation']); $compareData = array('label' => 'Float -(Avg)'); $this->assertEquals($compareData, $attributes['float__Average']); $compareData = array('label' => 'Integer -(Min)'); $this->assertEquals($compareData, $attributes['integer__Minimum']); $compareData = array('label' => 'Integer -(Max)'); $this->assertEquals($compareData, $attributes['integer__Maximum']); $compareData = array('label' => 'Integer -(Sum)'); $this->assertEquals($compareData, $attributes['integer__Summation']); $compareData = array('label' => 'Integer -(Avg)'); $this->assertEquals($compareData, $attributes['integer__Average']); $compareData = array('label' => 'Currency Value -(Min)'); $this->assertEquals($compareData, $attributes['currencyValue__Minimum']); $compareData = array('label' => 'Currency Value -(Max)'); $this->assertEquals($compareData, $attributes['currencyValue__Maximum']); $compareData = array('label' => 'Currency Value -(Sum)'); $this->assertEquals($compareData, $attributes['currencyValue__Summation']); $compareData = array('label' => 'Currency Value -(Avg)'); $this->assertEquals($compareData, $attributes['currencyValue__Average']); }
/** * @param Report $report * @param SavedReport$savedReport */ public static function resolveReportToSavedReport(Report $report, SavedReport $savedReport) { $savedReport->description = $report->getDescription(); $savedReport->moduleClassName = $report->getModuleClassName(); $savedReport->name = $report->getName(); $savedReport->owner = $report->getOwner(); $savedReport->type = $report->getType(); $data = array(); $data['filtersStructure'] = $report->getFiltersStructure(); $data['currencyConversionType'] = $report->getCurrencyConversionType(); $data['spotConversionCurrencyCode'] = $report->getSpotConversionCurrencyCode(); $data[ComponentForReportForm::TYPE_FILTERS] = self::makeArrayFromComponentFormsAttributesData($report->getFilters()); $data[ComponentForReportForm::TYPE_ORDER_BYS] = self::makeArrayFromComponentFormsAttributesData($report->getOrderBys()); $data[ComponentForReportForm::TYPE_GROUP_BYS] = self::makeArrayFromComponentFormsAttributesData($report->getGroupBys()); $data[ComponentForReportForm::TYPE_DISPLAY_ATTRIBUTES] = self::makeArrayFromComponentFormsAttributesData($report->getDisplayAttributes()); $data[ComponentForReportForm::TYPE_DRILL_DOWN_DISPLAY_ATTRIBUTES] = self::makeArrayFromComponentFormsAttributesData($report->getDrillDownDisplayAttributes()); if ($report->getChart()->type != null) { $data['chart'] = self::makeArrayFromChartForReportFormAttributesData($report->getChart()); } $savedReport->serializedData = serialize($data); }
/** * @depends testGetAttributesForOrderBysOnUser */ public function testGetAttributesForChartSeries() { $model = new ReportModelTestItem(); $rules = new ReportsTestReportRules(); $report = new Report(); $report->setType(Report::TYPE_SUMMATION); $report->setModuleClassName('ReportsTestModule'); $adapter = new ModelRelationsAndAttributesToSummationReportAdapter($model, $rules, $report->getType()); $attributes = $adapter->getAttributesForChartSeries($report->getGroupBys()); $this->assertEquals(0, count($attributes)); //Add a group by, but not as a display attribute $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType()); $groupBy->attributeIndexOrDerivedType = 'dropDown'; $report->setModuleClassName('ReportsTestModule'); $report->addGroupBy($groupBy); $attributes = $adapter->getAttributesForChartSeries($report->getGroupBys()); $this->assertEquals(0, count($attributes)); //Add a group by as a display attribute $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType()); $groupBy->attributeIndexOrDerivedType = 'dropDown'; $report->setModuleClassName('ReportsTestModule'); $report->addGroupBy($groupBy); $displayAttribute = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType()); $displayAttribute->attributeIndexOrDerivedType = 'dropDown'; $report->addDisplayAttribute($displayAttribute); $attributes = $adapter->getAttributesForChartSeries($report->getGroupBys(), $report->getDisplayAttributes()); $this->assertEquals(1, count($attributes)); $compareData = array('label' => 'Drop Down'); $this->assertEquals($compareData, $attributes['dropDown']); //Add a second group by as a display attribute $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType()); $groupBy->attributeIndexOrDerivedType = 'radioDropDown'; $report->setModuleClassName('ReportsTestModule'); $report->addGroupBy($groupBy); $displayAttribute = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType()); $displayAttribute->attributeIndexOrDerivedType = 'radioDropDown'; $report->addDisplayAttribute($displayAttribute); $attributes = $adapter->getAttributesForChartSeries($report->getGroupBys(), $report->getDisplayAttributes()); $this->assertEquals(2, count($attributes)); $compareData = array('label' => 'Drop Down'); $this->assertEquals($compareData, $attributes['dropDown']); $compareData = array('label' => 'Radio Drop Down'); $this->assertEquals($compareData, $attributes['radioDropDown']); //Add a third group by that is likeContactState as a display attribute $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType()); $groupBy->attributeIndexOrDerivedType = 'likeContactState'; $report->setModuleClassName('ReportsTestModule'); $report->addGroupBy($groupBy); $displayAttribute = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType()); $displayAttribute->attributeIndexOrDerivedType = 'likeContactState'; $report->addDisplayAttribute($displayAttribute); $attributes = $adapter->getAttributesForChartSeries($report->getGroupBys(), $report->getDisplayAttributes()); $this->assertEquals(3, count($attributes)); $compareData = array('label' => 'Drop Down'); $this->assertEquals($compareData, $attributes['dropDown']); $compareData = array('label' => 'Radio Drop Down'); $this->assertEquals($compareData, $attributes['radioDropDown']); $compareData = array('label' => 'A name for a state'); $this->assertEquals($compareData, $attributes['likeContactState']); }