/** * @param MarketingListGrowthChartDataProvider $chartDataProvider * @param string $uniqueId * @return string */ public static function renderListGrowthChartContent(MarketingListGrowthChartDataProvider $chartDataProvider, $uniqueId) { assert('is_string($uniqueId)'); $chartData = $chartDataProvider->getChartData(); Yii::import('ext.amcharts.AmChartMaker'); $amChart = new AmChartMaker(); $amChart->data = $chartData; $amChart->id = $uniqueId; $amChart->type = ChartRules::TYPE_STACKED_COLUMN_2D; $amChart->addSerialGraph(MarketingChartDataProvider::EXISTING_SUBSCRIBERS_COUNT, 'column', array('title' => "'" . Zurmo::t('MarketingModule', 'Existing Subscribers') . "'", 'balloonText' => "'[[dateBalloonLabel]]<br>" . Zurmo::t('MarketingModule', 'Existing Subscribers') . ": [[value]]'")); $amChart->addSerialGraph(MarketingChartDataProvider::NEW_SUBSCRIBERS_COUNT, 'column', array('title' => "'" . Zurmo::t('MarketingModule', 'New Subscribers') . "'", 'balloonText' => "'[[dateBalloonLabel]]<br>" . Zurmo::t('MarketingModule', 'New Subscribers') . ": [[value]]'")); $amChart->xAxisName = $chartDataProvider->getXAxisName(); $amChart->yAxisName = $chartDataProvider->getYAxisName(); $javascript = $amChart->javascriptChart(); Yii::app()->getClientScript()->registerScript(__CLASS__ . $uniqueId, $javascript); $cClipWidget = new CClipWidget(); $cClipWidget->beginClip("Chart"); $cClipWidget->widget('application.core.widgets.AmChart', array('id' => $uniqueId)); $cClipWidget->endClip(); return $cClipWidget->getController()->clips['Chart']; }
public function testGetChartData() { $contact = ContactTestHelper::createContactByNameForOwner('contact01', Yii::app()->user->userModel); $marketingListMember = $this->createMarketingListMember($contact, '2013-04-01'); $chartDataProvider = new MarketingListGrowthChartDataProvider(); $chartDataProvider->setBeginDate('2013-04-01'); $chartDataProvider->setEndDate('2013-04-02'); $chartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY); $chartDataProvider->setMarketingList($this->marketingList); $combinedDataProvider = new MarketingListGrowthChartDataProvider(); $combinedDataProvider->setBeginDate('2013-04-01'); $combinedDataProvider->setEndDate('2013-04-02'); $combinedDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY); $chartData = $chartDataProvider->getChartData(); $combinedChartData = $combinedDataProvider->getChartData(); $this->assertEquals(1, $chartData[0]['newSubscribersCount']); $this->assertEquals(0, $chartData[0]['existingSubscribersCount']); $this->assertEquals(0, $chartData[1]['newSubscribersCount']); $this->assertEquals(1, $chartData[1]['existingSubscribersCount']); $this->assertEquals($chartData, $combinedChartData); $marketingListMember->unsubscribed = true; $this->assertTrue($marketingListMember->unrestrictedSave()); $chartData = $chartDataProvider->getChartData(); $combinedChartData = $combinedDataProvider->getChartData(); $this->assertEquals(1, $chartData[0]['newSubscribersCount']); $this->assertEquals(0, $chartData[0]['existingSubscribersCount']); $this->assertEquals(0, $chartData[1]['newSubscribersCount']); $this->assertEquals(0, $chartData[1]['existingSubscribersCount']); $this->assertEquals($chartData, $combinedChartData); $contact = ContactTestHelper::createContactByNameForOwner('contact02', Yii::app()->user->userModel); $this->createMarketingListMember($contact, '2013-04-02'); $chartData = $chartDataProvider->getChartData(); $combinedChartData = $combinedDataProvider->getChartData(); $this->assertEquals(1, $chartData[0]['newSubscribersCount']); $this->assertEquals(0, $chartData[0]['existingSubscribersCount']); $this->assertEquals(1, $chartData[1]['newSubscribersCount']); $this->assertEquals(0, $chartData[1]['existingSubscribersCount']); $this->assertEquals($chartData, $combinedChartData); $chartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK); $combinedDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK); $chartData = $chartDataProvider->getChartData(); $combinedChartData = $combinedDataProvider->getChartData(); $this->assertEquals(2, $chartData[0]['newSubscribersCount']); $this->assertEquals(0, $chartData[0]['existingSubscribersCount']); $this->assertEquals($chartData, $combinedChartData); $contact = ContactTestHelper::createContactByNameForOwner('contact03', Yii::app()->user->userModel); $this->createMarketingListMember($contact, '2013-05-15'); $chartDataProvider->setEndDate('2013-05-17'); $combinedDataProvider->setEndDate('2013-05-17'); $chartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH); $combinedDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH); $chartData = $chartDataProvider->getChartData(); $combinedChartData = $combinedDataProvider->getChartData(); $this->assertEquals(2, $chartData[0]['newSubscribersCount']); $this->assertEquals(0, $chartData[0]['existingSubscribersCount']); $this->assertEquals(1, $chartData[1]['newSubscribersCount']); $this->assertEquals(1, $chartData[1]['existingSubscribersCount']); $this->assertEquals($chartData, $combinedChartData); $chartDataProvider->setEndDate('2013-05-01'); $combinedDataProvider->setEndDate('2013-05-01'); $chartData = $chartDataProvider->getChartData(); $combinedChartData = $combinedDataProvider->getChartData(); $this->assertEquals(2, $chartData[0]['newSubscribersCount']); $this->assertEquals(0, $chartData[0]['existingSubscribersCount']); $this->assertEquals(1, $chartData[1]['newSubscribersCount']); $this->assertEquals(1, $chartData[1]['existingSubscribersCount']); $this->assertEquals($chartData, $combinedChartData); }