reverse roadmap order, light github cleanup

This commit is contained in:
Jeremy Kauffman 2017-12-13 17:43:01 -05:00
parent a19bcfd6f7
commit 497fcc8541
3 changed files with 28 additions and 23 deletions

View file

@ -254,16 +254,16 @@ class ContentActions extends Actions
{ {
if ($items) if ($items)
{ {
$lastItem = end($items); $firstItem = reset($items);
$project = $lastItem['project']; $project = $firstItem['project'];
if (!isset($projectMaxVersions[$project]) || $lastItem['sort_key'] > $projectMaxVersions[$project]) if (!isset($projectMaxVersions[$project]) || $firstItem['sort_key'] > $projectMaxVersions[$project])
{ {
$projectMaxVersions[$project] = $lastItem['sort_key']; $projectMaxVersions[$project] = $firstItem['sort_key'];
} }
} }
} }
$items = array_merge($githubItems, Asana::listRoadmapTasks($cache)); $items = array_merge(Asana::listRoadmapTasks($cache), $githubItems);
return ['content/roadmap', [ return ['content/roadmap', [
'projectMaxVersions' => $projectMaxVersions, 'projectMaxVersions' => $projectMaxVersions,
'items' => $items 'items' => $items

View file

@ -29,7 +29,7 @@ class Github
{ {
try try
{ {
return static::get('/repos/lbryio/lbry-app/releases/latest', $cache); return static::get('/repos/lbryio/lbry-app/releases/latest', [], $cache);
} }
catch (Exception $e) catch (Exception $e)
{ {
@ -55,7 +55,7 @@ class Github
{ {
try try
{ {
$releases = static::get('/repos/lbryio/lbry-app/releases', $cache); $releases = static::get('/repos/lbryio/lbry-app/releases', [], $cache);
if (count($releases)) if (count($releases))
{ {
$asset = static::findReleaseAssetForOs($releases[0], $os); $asset = static::findReleaseAssetForOs($releases[0], $os);
@ -79,7 +79,7 @@ class Github
try try
{ {
$releaseData = static::get('/repos/lbryio/lbry/releases/latest', $cache); $releaseData = static::get('/repos/lbryio/lbry/releases/latest', [], $cache);
foreach ($releaseData['assets'] as $asset) foreach ($releaseData['assets'] as $asset)
{ {
if ( if (
@ -104,10 +104,10 @@ class Github
return static::getDaemonReleaseProperty($os, 'browser_download_url', true); return static::getDaemonReleaseProperty($os, 'browser_download_url', true);
} }
public static function get($endpoint, $cache = true) public static function get($endpoint, array $params = [], $cache = true)
{ {
$twoHoursInSeconds = 7200; $twoHoursInSeconds = 7200;
return CurlWithCache::get('https://api.github.com' . $endpoint, [], return CurlWithCache::get('https://api.github.com' . $endpoint . '?' . http_build_query($params), [],
['user_agent' => 'LBRY', 'json_response' => true, 'cache' => $cache === true ? $twoHoursInSeconds : $cache]); ['user_agent' => 'LBRY', 'json_response' => true, 'cache' => $cache === true ? $twoHoursInSeconds : $cache]);
} }
@ -116,14 +116,14 @@ class Github
$sets = []; $sets = [];
$allReleases = []; $allReleases = [];
$projects = ['lbry' => 'Daemon', 'lbry-app' => 'App']; $projects = ['lbry' => 'LBRY Protocol', 'lbry-app' => 'LBRY App'];
foreach($projects as $project => $projectLabel) foreach($projects as $project => $projectLabel)
{ {
$page = 1; $page = 1;
do do
{ {
$releases = static::get('/repos/lbryio/' . $project . '/releases?page=' . $page, $cache); $releases = static::get('/repos/lbryio/' . $project . '/releases', ['page' => $page], $cache);
$page++; $page++;
$allReleases = array_merge($allReleases, array_map(function ($release) use ($project, $projectLabel) $allReleases = array_merge($allReleases, array_map(function ($release) use ($project, $projectLabel)
{ {
@ -135,6 +135,11 @@ class Github
} while (count($releases) >= 30); } while (count($releases) >= 30);
} }
/**
* This logic is likely overly convoluted at this point. It used to group releases by project before going
* to strictly by time. - Jeremy
*/
foreach ($allReleases as $release) foreach ($allReleases as $release)
{ {
$group = null; $group = null;
@ -148,6 +153,7 @@ class Github
$sets[$group][] = array_intersect_key($release, [ $sets[$group][] = array_intersect_key($release, [
'prerelease' => null, 'tag_name' => null, 'published_at' => null, 'project' => null 'prerelease' => null, 'tag_name' => null, 'published_at' => null, 'project' => null
]) + [ ]) + [
'created_at' => strtotime($release['created_at']),
'date' => date('Y-m-d', strtotime($release['created_at'])), 'date' => date('Y-m-d', strtotime($release['created_at'])),
//I thought published_at, but GitHub displays created_at and published_at is out of sync sometimes (0.3.2, 0.3.3) //I thought published_at, but GitHub displays created_at and published_at is out of sync sometimes (0.3.2, 0.3.3)
'name' => $release['name'] ?: $release['tag_name'], 'name' => $release['name'] ?: $release['tag_name'],
@ -168,12 +174,12 @@ class Github
{ {
return $sA[0]['project'] < $sB[0]['project'] ? -1 : 1; return $sA[0]['project'] < $sB[0]['project'] ? -1 : 1;
} }
return $sA[0]['sort_key'] < $sB[0]['sort_key'] ? -1 : 1; return $sB[0]['sort_key'] <=> $sA[0]['sort_key'];
}); });
foreach ($sets as $group => &$groupSet) foreach ($sets as $group => &$groupSet)
{ {
usort($groupSet, function ($rA, $rB) { return $rA['created_at'] <=> $rB['created_at']; }); usort($groupSet, function ($rA, $rB) { return $rB['created_at'] <=> $rA['created_at']; });
} }
return $sets; return $sets;

View file

@ -26,25 +26,23 @@
</div> </div>
<div style="max-width: 800px; margin: 0 auto"> <div style="max-width: 800px; margin: 0 auto">
<div class="roadmap-container" id="project-roadmap"> <div class="roadmap-container" id="project-roadmap">
<div class="text-center"><a href="javascript:;" class="link-primary show-all-roadmap-groups">Show Earlier Releases</a></div>
<?php foreach($items as $group => $groupItems): ?> <?php foreach($items as $group => $groupItems): ?>
<?php $lastItem = end($groupItems) ?> <?php $firstItem = reset($groupItems) ?>
<?php $isOpen = !isset($lastItem['project']) || !isset($lastItem['sort_key']) || $lastItem['sort_key'] === $projectMaxVersions[$lastItem['project']] ?> <?php $isOpen = !isset($firstItem['project']) || !isset($firstItem['sort_key']) || $firstItem['sort_key'] === $projectMaxVersions[$firstItem['project']] ?>
<h2 class="roadmap-group-title" <?php echo !$isOpen ? 'style="display: none"' : '' ?>"> <h2 class="roadmap-group-title" <?php echo !$isOpen ? 'style="display: none"' : '' ?>">
<span class="roadmap-group-title-label"> <span class="roadmap-group-title-label">
<?php echo $group ?> <?php echo isset($lastItem['sort_key']) && $lastItem['sort_key'] === $projectMaxVersions[$lastItem['project']] ? '(latest)' : '' ?> <?php echo $group ?> <?php echo isset($firstItem['sort_key']) && $firstItem['sort_key'] === $projectMaxVersions[$firstItem['project']] ? '(latest)' : '' ?>
</span> </span>
</h2> </h2>
<div class="roadmap-group <?php echo !$isOpen ? 'roadmap-group-closed' : '' ?>"> <div class="roadmap-group <?php echo !$isOpen ? 'roadmap-group-closed' : '' ?>">
<?php $lastItem = end($groupItems) ?> <?php $maxItems = isset($firstItem['sort_key']) ? 1 : count($groupItems) ?>
<?php $maxItems = isset($lastItem['sort_key']) ? 1 : count($groupItems) ?>
<?php $index = 0 ?> <?php $index = 0 ?>
<?php if (count($groupItems) > $maxItems): ?> <?php if (count($groupItems) > $maxItems): ?>
<div class="text-center spacer1"><a href="javascript:;" class="link-primary show-all-roadmap-group-items">Show All Items for <?php echo $group ?></a></div> <div class="text-center spacer1"><a href="javascript:;" class="link-primary show-all-roadmap-group-items">Show All Items for <?php echo $group ?></a></div>
<?php endif ?> <?php endif ?>
<?php foreach($groupItems as $item): ?> <?php foreach($groupItems as $item): ?>
<?php ++$index ?> <?php ++$index ?>
<div class="roadmap-item" <?php echo $index <= count($groupItems) - $maxItems ? 'style="display: none"' : '' ?>> <div class="roadmap-item" <?php echo $index != 1 ? 'style="display: none"' : '' ?>>
<?php if (isset($item['badge']) || isset($item['assignee'])): ?> <?php if (isset($item['badge']) || isset($item['assignee'])): ?>
<div> <div>
<?php if (isset($item['assignee'])): ?> <?php if (isset($item['assignee'])): ?>
@ -73,6 +71,7 @@
<?php endforeach ?> <?php endforeach ?>
</div> </div>
<?php endforeach ?> <?php endforeach ?>
<div class="text-center"><a href="javascript:;" class="link-primary show-all-roadmap-groups">Show Earlier Releases</a></div>
</div> </div>
</div> </div>
<?php echo View::render('nav/_learnFooter') ?> <?php echo View::render('nav/_learnFooter') ?>