/** * @param MarketingListPerformanceChartDataProvider $chartDataProvider * @param string $uniqueId * @return string */ public static function renderOverallListPerformanceChartContent(MarketingListPerformanceChartDataProvider $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_LINE; $amChart->addSerialGraph(MarketingChartDataProvider::UNIQUE_CLICK_THROUGH_RATE, 'column', array('title' => "'" . Zurmo::t('MarketingModule', 'Unique CTR') . "'", 'balloonText' => "'" . Zurmo::t('MarketingModule', 'CTR') . ": [[value]]%'")); $amChart->addSerialGraph(MarketingChartDataProvider::UNIQUE_OPEN_RATE, 'column', array('title' => "'" . Zurmo::t('MarketingModule', 'Unique Open Rate') . "'", 'balloonText' => "'" . Zurmo::t('MarketingModule', 'Open Rate') . ": [[value]]%'")); $amChart->xAxisName = $chartDataProvider->getXAxisName(); $amChart->yAxisName = $chartDataProvider->getYAxisName(); $amChart->addValueAxisProperties('maximum', 100); $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); $this->addCampaignItem($contact, '2013-04-01', array(CampaignItemActivity::TYPE_CLICK => 1, CampaignItemActivity::TYPE_BOUNCE => 0, CampaignItemActivity::TYPE_OPEN => 1, CampaignItemActivity::TYPE_SKIP => 0, CampaignItemActivity::TYPE_UNSUBSCRIBE => 0)); $campaignChartDataProvider = new MarketingListPerformanceChartDataProvider(); $campaignChartDataProvider->setBeginDate('2013-04-01'); $campaignChartDataProvider->setEndDate('2013-04-25'); $campaignChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY); $campaignChartDataProvider->setCampaign($this->campaign); $marketingListChartDataProvider = new MarketingListPerformanceChartDataProvider(); $marketingListChartDataProvider->setBeginDate('2013-04-01'); $marketingListChartDataProvider->setEndDate('2013-04-25'); $marketingListChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY); $marketingListChartDataProvider->setMarketingList($this->marketingList); $combinedChartDataProvider = new MarketingListPerformanceChartDataProvider(); $combinedChartDataProvider->setBeginDate('2013-04-01'); $combinedChartDataProvider->setEndDate('2013-04-25'); $combinedChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY); $campaignChartData = $campaignChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 100; $expectedArray['uniqueOpenRate'] = 100; $expectedArray['displayLabel'] = 'Apr 1'; $expectedArray['dateBalloonLabel'] = 'Apr 1'; $this->assertEquals($expectedArray, $campaignChartData[0]); $this->assertChartDataForNormalUser($campaignChartDataProvider); $marketingListChartData = $marketingListChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 0; $expectedArray['uniqueOpenRate'] = 0; $expectedArray['displayLabel'] = 'Apr 1'; $expectedArray['dateBalloonLabel'] = 'Apr 1'; $this->assertEquals($expectedArray, $marketingListChartData[0]); $this->assertChartDataForNormalUser($campaignChartDataProvider); $combinedChartData = $combinedChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 100; $expectedArray['uniqueOpenRate'] = 100; $expectedArray['displayLabel'] = 'Apr 1'; $expectedArray['dateBalloonLabel'] = 'Apr 1'; $this->assertEquals($expectedArray, $combinedChartData[0]); $this->assertChartDataForNormalUser($campaignChartDataProvider); $this->addAutoresponderItem($contact, '2013-04-01', array(CampaignItemActivity::TYPE_CLICK => 1, CampaignItemActivity::TYPE_BOUNCE => 0, CampaignItemActivity::TYPE_OPEN => 0, CampaignItemActivity::TYPE_SKIP => 0, CampaignItemActivity::TYPE_UNSUBSCRIBE => 0)); $campaignChartData = $campaignChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 100; $expectedArray['uniqueOpenRate'] = 100; $expectedArray['displayLabel'] = 'Apr 1'; $expectedArray['dateBalloonLabel'] = 'Apr 1'; $this->assertEquals($expectedArray, $campaignChartData[0]); $this->assertChartDataForNormalUser($marketingListChartDataProvider); $marketingListChartData = $marketingListChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 100.0; $expectedArray['uniqueOpenRate'] = 0.0; $expectedArray['displayLabel'] = 'Apr 1'; $expectedArray['dateBalloonLabel'] = 'Apr 1'; $this->assertEquals($expectedArray, $marketingListChartData[0]); $this->assertChartDataForNormalUser($marketingListChartDataProvider); $combinedChartData = $combinedChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 100.0; $expectedArray['uniqueOpenRate'] = 50.0; $expectedArray['displayLabel'] = 'Apr 1'; $expectedArray['dateBalloonLabel'] = 'Apr 1'; $this->assertEquals($expectedArray, $combinedChartData[0]); $this->assertChartDataForNormalUser($marketingListChartDataProvider); $contact = ContactTestHelper::createContactByNameForOwner('contact02', Yii::app()->user->userModel); $this->addCampaignItem($contact, '2013-04-25', array(CampaignItemActivity::TYPE_CLICK => 0, CampaignItemActivity::TYPE_BOUNCE => 0, CampaignItemActivity::TYPE_OPEN => 0, CampaignItemActivity::TYPE_SKIP => 0, CampaignItemActivity::TYPE_UNSUBSCRIBE => 0)); $campaignChartData = $campaignChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 0; $expectedArray['uniqueOpenRate'] = 0; $expectedArray['displayLabel'] = 'Apr 25'; $expectedArray['dateBalloonLabel'] = 'Apr 25'; $this->assertEquals($expectedArray, $campaignChartData[24]); $this->assertChartDataForNormalUser($campaignChartDataProvider, 24); $marketingListChartData = $marketingListChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 0; $expectedArray['uniqueOpenRate'] = 0; $expectedArray['displayLabel'] = 'Apr 25'; $expectedArray['dateBalloonLabel'] = 'Apr 25'; $this->assertEquals($expectedArray, $marketingListChartData[24]); $this->assertChartDataForNormalUser($campaignChartDataProvider, 24); $combinedChartData = $combinedChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 0; $expectedArray['uniqueOpenRate'] = 0; $expectedArray['displayLabel'] = 'Apr 25'; $expectedArray['dateBalloonLabel'] = 'Apr 25'; $this->assertEquals($expectedArray, $combinedChartData[24]); $this->assertChartDataForNormalUser($campaignChartDataProvider, 24); $campaignChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK); $marketingListChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK); $combinedChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK); $campaignChartData = $campaignChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 100; $expectedArray['uniqueOpenRate'] = 100; $expectedArray['displayLabel'] = 'Apr 1'; $expectedArray['dateBalloonLabel'] = 'Week of Apr 1'; $this->assertEquals($expectedArray, $campaignChartData[0]); $this->assertChartDataForNormalUser($campaignChartDataProvider); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 0; $expectedArray['uniqueOpenRate'] = 0; $expectedArray['displayLabel'] = 'Apr 22'; $expectedArray['dateBalloonLabel'] = 'Week of Apr 22'; $this->assertEquals($expectedArray, $campaignChartData[3]); $this->assertChartDataForNormalUser($campaignChartDataProvider, 3); $marketingListChartData = $marketingListChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 100; $expectedArray['uniqueOpenRate'] = 0; $expectedArray['displayLabel'] = 'Apr 1'; $expectedArray['dateBalloonLabel'] = 'Week of Apr 1'; $this->assertEquals($expectedArray, $marketingListChartData[0]); $this->assertChartDataForNormalUser($marketingListChartDataProvider); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 0; $expectedArray['uniqueOpenRate'] = 0; $expectedArray['displayLabel'] = 'Apr 22'; $expectedArray['dateBalloonLabel'] = 'Week of Apr 22'; $this->assertEquals($expectedArray, $marketingListChartData[3]); $this->assertChartDataForNormalUser($marketingListChartDataProvider, 3); $combinedChartData = $combinedChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 100; $expectedArray['uniqueOpenRate'] = 50; $expectedArray['displayLabel'] = 'Apr 1'; $expectedArray['dateBalloonLabel'] = 'Week of Apr 1'; $this->assertEquals($expectedArray, $combinedChartData[0]); $this->assertChartDataForNormalUser($combinedChartDataProvider); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 0; $expectedArray['uniqueOpenRate'] = 0; $expectedArray['displayLabel'] = 'Apr 22'; $expectedArray['dateBalloonLabel'] = 'Week of Apr 22'; $this->assertEquals($expectedArray, $combinedChartData[3]); $this->assertChartDataForNormalUser($combinedChartDataProvider, 3); $campaignChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH); $marketingListChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH); $combinedChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH); $campaignChartData = $campaignChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 50; $expectedArray['uniqueOpenRate'] = 50; $expectedArray['displayLabel'] = 'Apr'; $expectedArray['dateBalloonLabel'] = 'Apr'; $this->assertEquals($expectedArray, $campaignChartData[0]); $this->assertChartDataForNormalUser($campaignChartDataProvider); $marketingListChartData = $marketingListChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 100; $expectedArray['uniqueOpenRate'] = 0; $expectedArray['displayLabel'] = 'Apr'; $expectedArray['dateBalloonLabel'] = 'Apr'; $this->assertEquals($expectedArray, $marketingListChartData[0]); $this->assertChartDataForNormalUser($marketingListChartDataProvider); $combinedChartData = $combinedChartDataProvider->getChartData(); $expectedArray = array(); $expectedArray['uniqueClickThroughRate'] = 66.67; $expectedArray['uniqueOpenRate'] = 33.33; $expectedArray['displayLabel'] = 'Apr'; $expectedArray['dateBalloonLabel'] = 'Apr'; $this->assertEquals($expectedArray, $combinedChartData[0]); $this->assertChartDataForNormalUser($combinedChartDataProvider); }