示例#1
0
 /**
  * {@inheritdoc}
  */
 public function sort(DataSourceInterface $dataSource, Grid $grid, Parameters $parameters)
 {
     $expressionBuilder = $dataSource->getExpressionBuilder();
     $sorting = $parameters->has('sorting') ? $parameters->get('sorting') : $grid->getSorting();
     foreach ($sorting as $field => $options) {
         if (!isset($options['direction'])) {
             $options['direction'] = 'desc';
         }
         $property = $grid->getSorting()[$field]['path'];
         $expressionBuilder->addOrderBy($property, $options['direction']);
     }
 }
示例#2
0
 function it_sorts_the_data_source_via_expression_builder_based_on_sorting_parameter(Grid $grid, DataSourceInterface $dataSource, ExpressionBuilderInterface $expressionBuilder)
 {
     $parameters = new Parameters(['sorting' => ['name' => ['direction' => 'asc']]]);
     $dataSource->getExpressionBuilder()->willReturn($expressionBuilder);
     $grid->getSorting()->willReturn(['name' => ['path' => 'translation.name', 'direction' => 'desc']]);
     $expressionBuilder->addOrderBy('translation.name', 'asc')->shouldBeCalled();
     $this->sort($dataSource, $grid, $parameters);
 }
示例#3
0
 /**
  * {@inheritdoc}
  */
 public function sort(DataSourceInterface $dataSource, Grid $grid, Parameters $parameters)
 {
     $expressionBuilder = $dataSource->getExpressionBuilder();
     $sorting = $parameters->has('sorting') ? $parameters->get('sorting') : $grid->getSorting();
     foreach ($sorting as $field => $direction) {
         $expressionBuilder->addOrderBy($field, $direction);
     }
 }
示例#4
0
 function it_sorts_the_data_source_via_expression_builder_based_on_sorting_parameter(Grid $grid, Parameters $parameters, DataSourceInterface $dataSource, ExpressionBuilderInterface $expressionBuilder)
 {
     $parameters->has('sorting')->willReturn(true);
     $parameters->get('sorting')->willReturn(['name' => 'asc']);
     $dataSource->getExpressionBuilder()->willReturn($expressionBuilder);
     $grid->getSorting()->willReturn(['name' => 'desc']);
     $expressionBuilder->addOrderBy('name', 'asc')->shouldBeCalled();
     $this->sort($dataSource, $grid, $parameters);
 }
示例#5
0
 function it_throws_exception_when_trying_to_sort_by_a_non_sortable_field(Grid $gridDefinition)
 {
     $gridDefinition->hasField('code')->willReturn(true);
     $gridDefinition->hasField('name')->willReturn(true);
     $gridDefinition->getSorting()->willReturn(['code' => ['path' => 'code', 'direction' => 'asc']]);
     $gridDefinition->isSortableBy('name')->willThrow(\InvalidArgumentException::class);
     $this->shouldThrow(\InvalidArgumentException::class)->during('isSortedBy', ['name']);
     $this->shouldThrow(\InvalidArgumentException::class)->during('getSortingOrder', ['name']);
 }
示例#6
0
文件: Sorter.php 项目: loic425/Sylius
 /**
  * {@inheritdoc}
  */
 public function sort(DataSourceInterface $dataSource, Grid $grid, Parameters $parameters)
 {
     $expressionBuilder = $dataSource->getExpressionBuilder();
     $sorting = $parameters->get('sorting', $grid->getSorting());
     foreach ($sorting as $field => $order) {
         $gridField = $grid->getField($field);
         $property = $gridField->getSortable();
         $expressionBuilder->addOrderBy($property, $order);
     }
 }
示例#7
0
 function it_sorts_the_data_source_via_expression_builder_based_on_sorting_parameter(Grid $grid, Field $nameField, DataSourceInterface $dataSource, ExpressionBuilderInterface $expressionBuilder)
 {
     $parameters = new Parameters(['sorting' => ['name' => 'asc']]);
     $dataSource->getExpressionBuilder()->willReturn($expressionBuilder);
     $grid->getSorting()->willReturn(['code' => 'desc']);
     $grid->hasField('name')->willReturn(true);
     $grid->getField('name')->willReturn($nameField);
     $nameField->isSortable()->willReturn(true);
     $nameField->getSortable()->willReturn('translation.name');
     $expressionBuilder->addOrderBy('translation.name', 'asc')->shouldBeCalled();
     $this->sort($dataSource, $grid, $parameters);
 }
示例#8
0
 function it_uses_default_sorting_if_not_provided_in_parameters(Grid $gridDefinition, Parameters $parameters)
 {
     $gridDefinition->hasField('foo')->willReturn(true);
     $gridDefinition->hasField('name')->willReturn(true);
     $gridDefinition->hasField('code')->willReturn(true);
     $gridDefinition->getSorting()->willReturn(['name' => 'desc']);
     $parameters->has('sorting')->willReturn(false);
     $this->isSortedBy('foo')->shouldReturn(false);
     $this->isSortedBy('name')->shouldReturn(true);
     $this->isSortedBy('code')->shouldReturn(false);
     $this->getSortingOrder('name')->shouldReturn('desc');
 }
示例#9
0
 /**
  * @return array|mixed
  */
 private function getCurrentlySortedBy()
 {
     return $this->parameters->has('sorting') ? array_merge($this->definition->getSorting(), $this->parameters->get('sorting')) : $this->definition->getSorting();
 }
示例#10
0
 /**
  * @return array|mixed
  */
 private function getCurrentSorting()
 {
     return $this->parameters->has('sorting') ? $this->parameters->get('sorting') : $this->definition->getSorting();
 }