Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class GraficosController extends Controller
- {
- /**
- * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
- * using two-column layout. See 'protected/views/layouts/column2.php'.
- */
- public $layout='//layouts/column1';
- /**
- * @return array action filters
- */
- public function filters()
- {
- return array(
- 'accessControl', // perform access control for CRUD operations
- );
- }
- /**
- * Specifies the access control rules.
- * This method is used by the 'accessControl' filter.
- * @return array access control rules
- */
- public function accessRules()
- {
- $expressaoAdmin = " isset(Yii::app()->user->role) && (Yii::app()->user->role==='admin') ";
- $expressaoGestorOuAdmin = " isset(Yii::app()->user->role) && (Yii::app()->user->role==='gestor') ||
- isset(Yii::app()->user->role) && (Yii::app()->user->role==='admin') ";
- return array(
- array('allow',
- 'actions'=>array('view','index','grafico'),
- 'users'=>array('@'),
- 'expression'=>$expressaoGestorOuAdmin,
- ),
- array('allow',
- 'actions'=>array('delete'), // Somente o administrador pode excluir usuarios
- 'users'=>array('@'),
- 'expression'=>$expressaoAdmin,
- ),
- array('deny', // deny all users
- 'users'=>array('*'),
- ),
- );
- }
- /**
- * Displays a particular model.
- * @param integer $id the ID of the model to be displayed
- */
- public function actionView($id)
- {
- $model = $this->buscaRespostasUsuarios($id);
- if ($model!==null):
- $this->render('view',array(
- 'model'=>$model,
- //'dataProvider'=>$dataProvider,
- ));
- else:
- throw new CHttpException(404,'Erro na requisição das respostas.');
- endif;
- }
- /**
- * This is the default 'index' action that is invoked
- * when an action is not explicitly requested by users.
- */
- public function actionIndex()
- {
- if ( isset($_POST['painel_id']) ):
- $this->redirect(array('view','id'=>$_POST['painel_id']));
- else:
- $paineis_usuarios = $this->buscaPaineisUsuarios();
- $this->render('index', array('paineis_usuarios'=>$paineis_usuarios) );
- endif;
- }
- /**
- * Busca os paineis do usuario
- * Seleciona todos os paineis que o usuário possui (abertos ou já respondidos)
- */
- public function buscaPaineisUsuarios()
- {
- $criteria = new CDbCriteria();
- $criteria->with = 'paineis';
- $criteria->condition = " rpu_usuario_fk = :id ";
- $criteria->params = array(':id' => Yii::app()->user->id);
- $paineis_usuarios = RelPaineisUsuarios::model()->findAll( $criteria );
- return $paineis_usuarios;
- }
- /**
- * Busca os paineis do usuario
- * Seleciona todos os paineis que o usuário possui (abertos ou já respondidos)
- */
- public function buscaRespostasUsuarios($id)
- {
- $criteria = new CDbCriteria();
- $criteria->with = 'paineis';
- $criteria->condition = " res_painel_fk = :id_painel ";
- $criteria->params = array(':id_painel' => $id );
- $respostas_usuarios = Respostas::model()->find( $criteria );
- if ($respostas_usuarios!==null)
- //$grafico = $this->geraGraficoRespostas($id);
- return $respostas_usuarios;
- }
- /**
- * Gera os graficos do painel selecionado
- */
- public function actionGrafico()
- {
- //error_reporting(E_ALL);
- // Importa classes geradoras do gráfico
- require_once('pChart/class/pData.class.php');
- require_once('pChart/class/pDraw.class.php');
- require_once('pChart/class/pImage.class.php');
- require_once('pChart/class/pScatter.class.php');
- /* Create and populate the pData object */
- $MyData = new pData();
- for($i=0;$i<=20;$i++) {
- $MyData->addPoints(rand(10,30)+$i,"Probe 1");
- }
- $MyData->setAxisName(0,"Temperatures");
- $MyData->setAbscissaName("Samples");
- /* Create the pChart object */
- $myPicture = new pImage(700,230,$MyData);
- /* Turn of Antialiasing */
- $myPicture->Antialias = FALSE;
- /* Add a border to the picture */
- $myPicture->drawRectangle(0,0,699,229,array("R"=>0,"G"=>0,"B"=>0));
- /* Write the chart title */
- $myPicture->setFontProperties(array("FontName"=>dirname(__FILE__)."/../vendors/pChart/fonts/verdana.ttf","FontSize"=>11));
- $myPicture->drawText(150,35,"Average temperature",array("FontSize"=>20,"Align"=>TEXT_ALIGN_BOTTOMMIDDLE));
- /* Set the default font */
- $myPicture->setFontProperties(array("FontName"=>dirname(__FILE__)."/../vendors/pChart/fonts/verdana.ttf","FontSize"=>6));
- /* Define the chart area */
- $myPicture->setGraphArea(60,40,680,200);
- /* Draw the scale */
- $scaleSettings = array("XMargin"=>10,"YMargin"=>10,"Floating"=>TRUE,"GridR"=>200,"GridG"=>200,"GridB"=>200,"DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE);
- $myPicture->drawScale($scaleSettings);
- /* Turn on Antialiasing */
- $myPicture->Antialias = TRUE;
- /* Turn on shadows */
- $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10));
- /* Draw the line chart */
- $myPicture->drawPlotChart();
- /* Draw the standard mean and the harmonic one */
- $Mean = $MyData->getSerieAverage("Probe 1");
- $HarmonicMean = $MyData->getHarmonicMean("Probe 1");
- $myPicture->drawThreshold($HarmonicMean,array("WriteCaption"=>TRUE,"Caption"=>"Harmonic mean"));
- $myPicture->drawThreshold($Mean,array("WriteCaption"=>TRUE,"Caption"=>"Mean","CaptionAlign"=>CAPTION_RIGHT_BOTTOM));
- /* Write the computed values */
- $myPicture->drawText(550,20,"Arithmetic average : ".round($Mean,2));
- $myPicture->drawText(550,30,"Harmonic Mean : ".round($HarmonicMean,2));
- /* Render the picture (choose the best way) */
- $diretorioGraficos = dirname(__FILE__)."/../../images/graficos/";
- $myPicture->render($diretorioGraficos.'grafico_painel_'.$id.'.png');
- //$myPicture->autoOutput($diretorioGraficos.'grafico_painel_'.$id.'.png');
- //$myPicture->Stroke();
- //$myPicture->ReportWarnings();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment