/**
  * {@inheritdoc}
  */
 public function visitResult(DatagridConfiguration $config, ResultsObject $result)
 {
     $rows = $result->offsetGetByPath('[data]');
     if (!is_array($rows)) {
         throw new UnexpectedTypeException($rows, 'array');
     }
     $mappingConfig = $this->mapper->getMappingConfig();
     $rows = array_map(function (ResultRecordInterface $record) use($mappingConfig) {
         $entityClass = $record->getValue('entityName');
         $entityId = $record->getValue('recordId');
         $entityConfig = array_key_exists($entityClass, $mappingConfig) ? $entityConfig = $this->mapper->getEntityConfig($entityClass) : [];
         return new ResultItem($this->em, $entityClass, $entityId, null, null, $entityConfig);
     }, $rows);
     $entities = $this->resultFormatter->getResultEntities($rows);
     $resultRows = [];
     /** @var ResultItem $item */
     foreach ($rows as $item) {
         $entityClass = $item->getEntityName();
         $entityId = $item->getRecordId();
         $entity = $entities[$entityClass][$entityId];
         $this->dispatcher->dispatch(PrepareResultItemEvent::EVENT_NAME, new PrepareResultItemEvent($item, $entity));
         $resultRows[] = new ResultRecord(['entity' => $entity, 'indexer_item' => $item]);
     }
     $result->offsetSet('data', $resultRows);
 }
Пример #2
0
 /**
  * {@inheritDoc}
  */
 public function visitResult(DatagridConfiguration $config, ResultsObject $result)
 {
     $rows = $result->offsetGetByPath('[data]');
     $rows = is_array($rows) ? $rows : [];
     $rows = array_map(function (ResultRecordInterface $record) {
         if ($rootEntity = $record->getRootEntity()) {
             return $rootEntity;
         }
         $entityName = $record->getValue('entityName');
         $recordId = $record->getValue('recordId');
         if ($entityName && $recordId) {
             return new ResultItem($this->em, $entityName, $recordId, null, null, null, $this->mapper->getEntityConfig($entityName));
         }
         return null;
     }, $rows);
     $entities = $this->resultFormatter->getResultEntities($rows);
     $resultRows = [];
     /** @var ResultItem $item */
     foreach ($rows as $item) {
         $entityName = $item->getEntityName();
         $entityId = $item->getRecordId();
         if (!isset($entities[$entityName][$entityId])) {
             continue;
         }
         $entity = $entities[$entityName][$entityId];
         $this->dispatcher->dispatch(PrepareResultItemEvent::EVENT_NAME, new PrepareResultItemEvent($item, $entity));
         $resultRows[] = new ResultRecord(['entity' => $entity, 'indexer_item' => $item]);
     }
     // set results
     $result->offsetSet('data', $resultRows);
 }
Пример #3
0
 /**
  * {@inheritDoc}
  */
 public function visitResult(DatagridConfiguration $config, ResultsObject $result)
 {
     $result->offsetSetByPath('[options][hideToolbar]', false);
     $minToolbarRecords = (int) $config->offsetGetByPath(self::TURN_OFF_TOOLBAR_RECORDS_NUMBER_PATH);
     if ($minToolbarRecords > 0 && count($result['data']) < $minToolbarRecords) {
         $result->offsetSetByPath('[options][hideToolbar]', true);
     }
 }
Пример #4
0
 /**
  * {@inheritdoc}
  *
  * Gets stored SQL and parameters prepared by
  * Oro\Bundle\DataGridBundle\EventListener\StoreSqlListener
  * and puts them into metadata of ResultsObject
  */
 public function visitResult(DatagridConfiguration $config, ResultsObject $result)
 {
     $value = $config->offsetGetByPath(self::STORED_SQL_PATH);
     if ($value) {
         $result->offsetAddToArray('metadata', [self::DISPLAY_SQL_QUERY => true]);
         $result->offsetAddToArrayByPath(self::STORED_SQL_PATH, $value);
     }
 }
Пример #5
0
 public function testVisitResult()
 {
     $result = ResultsObject::create([]);
     $this->extension->visitResult(DatagridConfiguration::create([]), $result);
     $this->assertArrayHasKey('metadata', $result);
     $this->assertInternalType('array', $result['metadata']);
 }
 /**
  * {@inheritDoc}
  */
 public function visitResult(DatagridConfiguration $config, ResultsObject $result)
 {
     $rows = (array) $result->offsetGetOr('data', []);
     $columns = $config->offsetGetOr(Configuration::COLUMNS_KEY, []);
     $properties = $config->offsetGetOr(Configuration::PROPERTIES_KEY, []);
     $toProcess = array_merge($columns, $properties);
     foreach ($rows as $key => $row) {
         $currentRow = [];
         foreach ($toProcess as $name => $config) {
             $config = PropertyConfiguration::createNamed($name, $config);
             $property = $this->getPropertyObject($config);
             $currentRow[$name] = $property->getValue($row);
         }
         $rows[$key] = $currentRow;
     }
     $result->offsetSet('data', $rows);
 }
Пример #7
0
 /**
  * {@inheritDoc}
  */
 public function getData()
 {
     /** @var array $rows */
     $rows = $this->getAcceptedDatasource()->getResults();
     $result = ResultsObject::create(['data' => $rows]);
     $this->acceptor->acceptResult($result);
     return $result;
 }
Пример #8
0
 /**
  * Test method acceptResult
  */
 public function testAcceptResults()
 {
     $result = ResultsObject::create([]);
     $extMock = $this->getMockForAbstractClass('Oro\\Bundle\\DataGridBundle\\Extension\\ExtensionVisitorInterface');
     $extMock->expects($this->once())->method('visitResult')->with($this->config, $result);
     $this->acceptor->addExtension($extMock);
     $this->acceptor->acceptResult($result);
 }
 /**
  * {@inheritDoc}
  */
 public function visitResult(DatagridConfiguration $config, ResultsObject $result)
 {
     $result->offsetAddToArray('options', [self::TOTAL_PARAM => $this->pager->getNbResults()]);
 }
 /**
  * @param DatagridConfiguration $config
  * @param ResultsObject $result
  * @return mixed|void
  */
 public function visitResult(DatagridConfiguration $config, ResultsObject $result)
 {
     $result->offsetSetByPath(PagerInterface::TOTAL_PATH_PARAM, $config->offsetGetByPath(CombinedAuditDatasource::PATH_PAGER_ORIGINAL_TOTALS . '[0]'));
 }
Пример #11
0
 /**
  * @return ResultsObject
  */
 protected function getTestResult()
 {
     return ResultsObject::create(['data' => [['id' => 1, 'name' => 'test1', 'wonCount' => 10], ['id' => 2, 'name' => 'test2', 'wonCount' => 4], ['id' => 3, 'name' => 'test3', 'wonCount' => 2], ['id' => 4, 'name' => 'test4', 'wonCount' => 6], ['id' => 5, 'name' => 'test5', 'wonCount' => 10], ['id' => 6, 'name' => 'test6', 'wonCount' => 9], ['id' => 7, 'name' => 'test7', 'wonCount' => 5], ['id' => 8, 'name' => 'test8', 'wonCount' => 4], ['id' => 9, 'name' => 'test9', 'wonCount' => 3], ['id' => 10, 'name' => 'test10', 'wonCount' => 2]], 'options' => ['totalRecords' => 14]]);
 }
 /**
  * Empty implementation should be callable
  */
 public function testVisitResult()
 {
     $result = ResultsObject::create([]);
     $config = DatagridConfiguration::create([]);
     $this->extension->visitResult($config, $result);
 }
Пример #13
0
 /**
  * {@inheritDoc}
  */
 public function visitResult(DatagridConfiguration $config, ResultsObject $result)
 {
     $result->offsetSetByPath(PagerInterface::TOTAL_PATH_PARAM, $this->pager->getNbResults());
 }
Пример #14
0
 /**
  * {@inheritdoc}
  */
 public function visitResult(DatagridConfiguration $config, ResultsObject $result)
 {
     $rows = (array) $result->offsetGetOr('data', []);
     $idField = 'id';
     $tags = $this->getTagsForEntityClass($this->getEntityClassName($config), $this->extractEntityIds($rows, $idField));
     $this->addTagsToData($rows, $tags, $idField, self::COLUMN_NAME);
 }
Пример #15
0
 /**
  * {@inheritdoc}
  */
 public function visitResult(DatagridConfiguration $config, ResultsObject $result)
 {
     $identifiers = $this->getTagsColumns($config);
     $rows = (array) $result->offsetGetOr('data', []);
     $entitiesTags = [];
     foreach ($identifiers as $entityClass => $idAlias) {
         $entitiesTags[$entityClass] = $this->getTagsForEntityClass($entityClass, $this->extractEntityIds($rows, $idAlias));
     }
     foreach ($entitiesTags as $entityClass => $entityTags) {
         $idAlias = $identifiers[$entityClass];
         $this->addTagsToData($rows, $entityTags, $idAlias, $this->buildTagColumnId($idAlias, $entityClass));
     }
 }
Пример #16
0
 /**
  * {@inheritDoc}
  */
 public function visitResult(DatagridConfiguration $config, ResultsObject $result)
 {
     $result->offsetAddToArray('metadata', [static::METADATA_ACTION_KEY => $this->getActionsMetadata($config)]);
 }