Sort talks as part of the FormatTalksBundle
This commit is contained in:
parent
dab9a0e9b3
commit
eb6a42bae7
|
@ -2,7 +2,7 @@
|
||||||
<h2>Events</h2>
|
<h2>Events</h2>
|
||||||
|
|
||||||
{% include "talks-table" with {
|
{% include "talks-table" with {
|
||||||
talks: { talks: [page], event_data: site.events }|all_talks|reverse,
|
talks: { talks: [page], event_data: site.events }|all_talks,
|
||||||
talk_page: true
|
talk_page: true
|
||||||
} %}
|
} %}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -41,7 +41,7 @@ class FormatTalksExtension extends Twig_Extension
|
||||||
*/
|
*/
|
||||||
public function getAll(array $data)
|
public function getAll(array $data)
|
||||||
{
|
{
|
||||||
return $this->sort($this->format($data));
|
return $this->format($data)->sortBy('event.date');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -55,9 +55,9 @@ class FormatTalksExtension extends Twig_Extension
|
||||||
*/
|
*/
|
||||||
public function getUpcoming(array $data)
|
public function getUpcoming(array $data)
|
||||||
{
|
{
|
||||||
return $this->sort($this->format($data)->filter(function ($talk) {
|
return $this->format($data)->filter(function ($talk) {
|
||||||
return $talk['event']['date'] >= $this->today;
|
return $talk['event']['date'] >= $this->today;
|
||||||
}));
|
})->sortBy('event.date');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -71,9 +71,9 @@ class FormatTalksExtension extends Twig_Extension
|
||||||
*/
|
*/
|
||||||
public function getPast(array $data)
|
public function getPast(array $data)
|
||||||
{
|
{
|
||||||
return $this->sort($this->format($data)->filter(function ($talk) {
|
return $this->format($data)->filter(function ($talk) {
|
||||||
return $talk['event']['date'] < $this->today;
|
return $talk['event']['date'] < $this->today;
|
||||||
}));
|
})->sortByDesc('event.date');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -100,18 +100,6 @@ class FormatTalksExtension extends Twig_Extension
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sort and return the talks.
|
|
||||||
*
|
|
||||||
* @param Collection $talks The talk data.
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
private function sort(Collection $talks)
|
|
||||||
{
|
|
||||||
return $talks->sortByDesc('event.date')->all();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -4,6 +4,7 @@ namespace FormatTalksBundle\Tests\Twig;
|
||||||
|
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use FormatTalksBundle\Twig\FormatTalksExtension;
|
use FormatTalksBundle\Twig\FormatTalksExtension;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
class FormatTalksTest extends TestCase
|
class FormatTalksTest extends TestCase
|
||||||
|
@ -99,8 +100,9 @@ class FormatTalksTest extends TestCase
|
||||||
|
|
||||||
$this->assertCount(3, $results);
|
$this->assertCount(3, $results);
|
||||||
|
|
||||||
|
// Earliest events should be returned first.
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
[$eventA['date'], $eventC['date'], $eventB['date']],
|
[$eventB['date'], $eventC['date'], $eventA['date']],
|
||||||
$this->extractDates($results)
|
$this->extractDates($results)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -128,8 +130,9 @@ class FormatTalksTest extends TestCase
|
||||||
|
|
||||||
$this->assertCount(3, $results);
|
$this->assertCount(3, $results);
|
||||||
|
|
||||||
|
// Earliest events should be returned first.
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
[$eventE['date'], $eventA['date'], $eventC['date']],
|
[$eventC['date'], $eventA['date'], $eventE['date']],
|
||||||
$this->extractDates($results)
|
$this->extractDates($results)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -159,6 +162,7 @@ class FormatTalksTest extends TestCase
|
||||||
|
|
||||||
$this->assertCount(2, $results);
|
$this->assertCount(2, $results);
|
||||||
|
|
||||||
|
// Latest events should be returned first.
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
[$eventB['date'], $eventF['date']],
|
[$eventB['date'], $eventF['date']],
|
||||||
$this->extractDates($results)
|
$this->extractDates($results)
|
||||||
|
@ -168,12 +172,12 @@ class FormatTalksTest extends TestCase
|
||||||
/**
|
/**
|
||||||
* Extract the returned dates from the results.
|
* Extract the returned dates from the results.
|
||||||
*
|
*
|
||||||
* @param array $results The results returned from the filter.
|
* @param Collection $results The results returned from the filter.
|
||||||
*
|
*
|
||||||
* @return array An array of dates.
|
* @return array An array of dates.
|
||||||
*/
|
*/
|
||||||
private function extractDates(array $results)
|
private function extractDates(Collection $results)
|
||||||
{
|
{
|
||||||
return collect($results)->pluck('event.date')->all();
|
return $results->pluck('event.date')->all();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue