예제 #1
0
 /**
  * Handle options
  *
  * @param GridInterface $grid
  * @param Datagrid      $datagrid
  *
  * @return void
  */
 protected function handleOptions(GridInterface $grid, Datagrid $datagrid)
 {
     $resolver = new OptionsResolver();
     $this->setDefaultOptions($resolver);
     $grid->configureOptions($resolver);
     $datagrid->setOptions($resolver->resolve());
 }
예제 #2
0
 public function testCreateExportObject()
 {
     $this->factory->shouldReceive('createPHPExcelObject')->andReturn(new PHPExcel());
     $column = new Column();
     $column->setLabel('Label');
     $datagrid = new Datagrid();
     $datagrid->addColumn($column);
     $export = new ExcelExport($this->factory);
     $exportObject = $export->createExportObject($datagrid);
     $this->assertInstanceOf('PHPExcel', $exportObject);
     $this->assertEquals('Label', $exportObject->getActiveSheet()->getCell('A1')->getValue());
 }
예제 #3
0
 /**
  * @inheritdoc
  */
 public function createExportObject(Datagrid $datagrid)
 {
     $this->phpExcel = $this->factory->createPHPExcelObject();
     $this->phpExcel->setActiveSheetIndex(0);
     $this->phpExcel->getActiveSheet()->setTitle('Datagrid export');
     // Set the column headers
     $c = 'A';
     foreach ($columns = $datagrid->getColumns() as $column) {
         $this->phpExcel->getActiveSheet()->setCellValue($c . '1', $column->getLabel());
         $c++;
     }
     return $this->phpExcel;
 }
예제 #4
0
 /**
  * Handle a ListView form
  *
  * @param  Request  $request
  * @param  Datagrid $datagrid
  *
  * @return \Symfony\Component\Form\FormView
  */
 public function handleForm(Request $request, Datagrid $datagrid)
 {
     // Clone the view, so the current view won't get changed by the empty view form
     $view = clone $datagrid->getView();
     $columns = $this->entityHelper->getAllProperties($view->getEntity());
     $type = new ListViewType($datagrid->getSource(), $columns);
     $viewForm = $this->formFactory->create($type, $view);
     $viewForm->handleRequest($request);
     if ($viewForm->get('save')->isClicked()) {
         if ($viewForm->isValid()) {
             $this->save($view);
             $request->request->set('view', $view->getSlug());
         } else {
             throw new \Exception('The view could not be saved because the form was invalid.');
         }
     }
     return $viewForm->createView();
 }
예제 #5
0
 /**
  * Determine what rows to use, based on the view
  */
 public function getRowQuery()
 {
     $viewBuilder = $this->container->get('opifer.crud.view_builder');
     $source = $this->datagrid->getSource();
     if ($filterfields = $this->getRequest()->get('filterfields')) {
         $qb = $viewBuilder->any($source, $filterfields);
     } elseif ($this->getRequest()->get('view')) {
         $qb = $viewBuilder->getRowQuery($this->datagrid->getView()->getConditions(), $source);
     } elseif (($postVars = $this->getRequest()->request->get('listview')) && $postVars['conditions'] != '') {
         $conditions = $this->container->get('jms_serializer')->deserialize($postVars['conditions'], 'Opifer\\RulesEngine\\Rule\\Rule', 'json');
         $qb = $viewBuilder->getRowQuery($conditions, $source);
     } else {
         $sourceRepository = $this->container->get('doctrine')->getRepository(get_class($source));
         $qb = $sourceRepository->createQueryBuilder('a');
     }
     foreach ($this->mapper->getWheres() as $where) {
         $qb->andWhere($where);
     }
     foreach ($this->mapper->getParameters() as $parameter => $value) {
         $qb->setParameter($parameter, $value);
     }
     return $this->sortRows($qb);
 }