1
0
Fork 0

Add creation date
the build was successful Details

pull/2/head
Ambrose Chua 2018-09-29 15:59:10 +08:00
parent 1649afe535
commit 6c1595537f
2 changed files with 26 additions and 8 deletions

View File

@ -9,10 +9,11 @@
<ListHeader slot="header"> <ListHeader slot="header">
<span slot="title">Tag</span> <span slot="title">Tag</span>
<span slot="detail">Pull Commmand</span> <span slot="detail">Pull Commmand</span>
<span slot="date">Created</span>
<span slot="size">Size</span> <span slot="size">Size</span>
</ListHeader> </ListHeader>
<ListItem <ListItem
v-for="tag in tags" v-for="(tag, i) in tags"
:key="tag" :key="tag"
:to="{ name: 'tag', params: { tag, }}"> :to="{ name: 'tag', params: { tag, }}">
<span slot="title"> <span slot="title">
@ -21,6 +22,9 @@
<span slot="detail"> <span slot="detail">
<code>docker pull {{ registryHost }}/{{ $route.params.repo }}:{{ tag }}</code> <code>docker pull {{ registryHost }}/{{ $route.params.repo }}:{{ tag }}</code>
</span> </span>
<time slot="date" :datetime="dates[i]">
{{ dates[i].toLocaleString() }}
</time>
<TagSize slot="size" :repo="$route.params.repo" :tag="tag" /> <TagSize slot="size" :repo="$route.params.repo" :tag="tag" />
</ListItem> </ListItem>
</List> </List>
@ -30,7 +34,7 @@
<script> <script>
import { registryHost } from '@/options'; import { registryHost } from '@/options';
import { tags, repoCanDelete, repoDelete } from '@/api'; import { tags, repoCanDelete, repoDelete, tag, configBlob } from '@/api';
import Layout from '@/components/Layout.vue'; import Layout from '@/components/Layout.vue';
import Error from '@/components/Error.vue'; import Error from '@/components/Error.vue';
@ -59,6 +63,7 @@ export default {
error: '', error: '',
registryHost: '', registryHost: '',
tags: [], tags: [],
dates: [],
repoCanDelete: false, repoCanDelete: false,
nextLast: '', nextLast: '',
}; };
@ -83,6 +88,13 @@ export default {
this.tags = r.tags; this.tags = r.tags;
this.nextLast = r.nextLast; this.nextLast = r.nextLast;
this.repoCanDelete = await repoCanDelete(this.$route.params.repo); this.repoCanDelete = await repoCanDelete(this.$route.params.repo);
// fetch tag dates
this.dates = await Promise.all(r.tags.map(async (tagName) => {
const t = await tag(this.$route.params.repo, tagName);
const config = await configBlob(this.$route.params.repo, t.config.digest);
return new Date(config.created);
}));
} catch (e) { } catch (e) {
console.error(e); console.error(e);
this.error = `Unable to fetch tags (${e.message})`; this.error = `Unable to fetch tags (${e.message})`;

View File

@ -16,7 +16,7 @@
</ListItem> </ListItem>
<ListItem> <ListItem>
<span slot="title">Date Created</span> <span slot="title">Date Created</span>
<span slot="detail">{{ config.created }}</span> <span slot="date">{{ new Date(config.created).toLocaleString() }}</span>
</ListItem> </ListItem>
<ListItem> <ListItem>
<span slot="title">Platform</span> <span slot="title">Platform</span>
@ -24,23 +24,29 @@
</ListItem> </ListItem>
<ListItem> <ListItem>
<span slot="title">Entrypoint</span> <span slot="title">Entrypoint</span>
<span slot="detail"><pre>{{ config.config.Entrypoint.join(' ') }}</pre></span> <span slot="detail"><code>{{ config.config.Entrypoint }}</code></span>
</ListItem> </ListItem>
<ListItem> <ListItem>
<span slot="title">Command</span> <span slot="title">Command</span>
<span slot="detail"><pre>{{ config.config.Cmd.join(' ') }}</pre></span> <span slot="detail"><code>{{ config.config.Cmd }}</code></span>
</ListItem> </ListItem>
<ListItem> <ListItem>
<span slot="title">Labels</span> <span slot="title">Labels</span>
<span slot="detail"><pre>{{ formatLabels(config.config.Labels) }}</pre></span> <span slot="detail">
<ul style="text-align: left; list-style: none;">
<li v-for="(v, k) in config.config.Labels" :key="k">
<code>{{ k }}: {{ v }}</code>
</li>
</ul>
</span>
</ListItem> </ListItem>
<ListItem> <ListItem>
<span slot="title">Layers</span> <span slot="title">Layers</span>
<span slot="detail">{{ tag.layers.length }}</span> <span slot="size">{{ tag.layers.length }}</span>
</ListItem> </ListItem>
<ListItem> <ListItem>
<span slot="title">Size</span> <span slot="title">Size</span>
<span slot="detail"> <span slot="size">
<TagSize :repo="$route.params.repo" :tag="$route.params.tag" /> <TagSize :repo="$route.params.repo" :tag="$route.params.tag" />
</span> </span>
</ListItem> </ListItem>