|
3 | 3 | namespace Yajra\DataTables\Services; |
4 | 4 |
|
5 | 5 | use Illuminate\Http\JsonResponse; |
| 6 | +use Yajra\DataTables\Html\Column; |
6 | 7 | use Illuminate\Support\Collection; |
7 | 8 | use Yajra\DataTables\Contracts\DataTableScope; |
8 | 9 | use Yajra\DataTables\Contracts\DataTableButtons; |
@@ -238,7 +239,7 @@ protected function getDataForPrint() |
238 | 239 | */ |
239 | 240 | protected function printColumns() |
240 | 241 | { |
241 | | - return is_array($this->printColumns) ? $this->printColumns : $this->getPrintColumnsFromBuilder(); |
| 242 | + return is_array($this->printColumns) ? $this->toColumnsCollection($this->printColumns) : $this->getPrintColumnsFromBuilder(); |
242 | 243 | } |
243 | 244 |
|
244 | 245 | /** |
@@ -300,12 +301,10 @@ public function builder() |
300 | 301 | */ |
301 | 302 | protected function mapResponseToColumns($columns, $type) |
302 | 303 | { |
303 | | - return array_map(function ($row) use ($columns, $type) { |
304 | | - if ($columns) { |
305 | | - return (new DataArrayTransformer())->transform($row, $columns, $type); |
306 | | - } |
| 304 | + $transformer = new DataArrayTransformer; |
307 | 305 |
|
308 | | - return $row; |
| 306 | + return array_map(function ($row) use ($columns, $type, $transformer) { |
| 307 | + return $transformer->transform($row, $columns, $type); |
309 | 308 | }, $this->getAjaxResponseData()); |
310 | 309 | } |
311 | 310 |
|
@@ -452,7 +451,31 @@ protected function getDataForExport() |
452 | 451 | */ |
453 | 452 | private function exportColumns() |
454 | 453 | { |
455 | | - return is_array($this->exportColumns) ? $this->exportColumns : $this->getExportColumnsFromBuilder(); |
| 454 | + return is_array($this->exportColumns) ? $this->toColumnsCollection($this->exportColumns) : $this->getExportColumnsFromBuilder(); |
| 455 | + } |
| 456 | + |
| 457 | + /** |
| 458 | + * Convert array to collection of Column class. |
| 459 | + * |
| 460 | + * @param array $columns |
| 461 | + * @return Collection |
| 462 | + */ |
| 463 | + private function toColumnsCollection(array $columns) |
| 464 | + { |
| 465 | + $collection = collect(); |
| 466 | + foreach ($columns as $column) { |
| 467 | + if (isset($column['data'])) { |
| 468 | + $column['title'] = $column['title'] ?? $column['data']; |
| 469 | + $collection->push(new Column($column)); |
| 470 | + } else { |
| 471 | + $data = []; |
| 472 | + $data['data'] = $column; |
| 473 | + $data['title'] = $column; |
| 474 | + $collection->push(new Column($data)); |
| 475 | + } |
| 476 | + } |
| 477 | + |
| 478 | + return $collection; |
456 | 479 | } |
457 | 480 |
|
458 | 481 | /** |
@@ -583,8 +606,7 @@ protected function hasScopes(array $scopes, $validateAll = false) |
583 | 606 | return in_array(get_class($scope), $scopes); |
584 | 607 | }); |
585 | 608 |
|
586 | | - return $validateAll ? count($filteredScopes) === count($scopes) : |
587 | | - ! empty($filteredScopes); |
| 609 | + return $validateAll ? count($filteredScopes) === count($scopes) : ! empty($filteredScopes); |
588 | 610 | } |
589 | 611 |
|
590 | 612 | /** |
|
0 commit comments