Commit 56d3daf8 authored by Evan You's avatar Evan You

spinner position

parent 987a6283
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<span class="title"> <span class="title">
<template v-if="item.url"> <template v-if="item.url">
<a :href="item.url" target="_blank">{{ item.title }}</a> <a :href="item.url" target="_blank">{{ item.title }}</a>
<span>({{ item.url | host }})</span> <span class="host">({{ item.url | host }})</span>
</template> </template>
<template v-else> <template v-else>
<router-link :to="'/item/' + item.id">{{ item.title }}</router-link> <router-link :to="'/item/' + item.id">{{ item.title }}</router-link>
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
| <router-link :to="'/item/' + item.id">{{ item.descendants }} comments</router-link> | <router-link :to="'/item/' + item.id">{{ item.descendants }} comments</router-link>
</span> </span>
</span> </span>
<span class="label" v-if="item.type !== 'story'">{{ item.type }}</span>
</li> </li>
</template> </template>
...@@ -49,7 +50,7 @@ export default { ...@@ -49,7 +50,7 @@ export default {
width 80px width 80px
text-align center text-align center
margin-top -10px margin-top -10px
.meta .meta, .host
font-size .85em font-size .85em
color #999 color #999
a a
......
<template> <template>
<div class="news"> <div class="news">
<spinner :show="loading"></spinner>
<div class="news-list-nav"> <div class="news-list-nav">
<router-link v-if="page > 1" :to="'/' + type + '/' + (page - 1)">&lt; prev</router-link> <router-link v-if="page > 1" :to="'/' + type + '/' + (page - 1)">&lt; prev</router-link>
<a v-else class="disabled">&lt; prev</a> <a v-else class="disabled">&lt; prev</a>
<span>{{ page }}/{{ maxPage }}</span> <span>{{ page }}/{{ maxPage }}</span>
<router-link v-if="hasMore" :to="'/' + type + '/' + (page + 1)">more &gt;</router-link> <router-link v-if="hasMore" :to="'/' + type + '/' + (page + 1)">more &gt;</router-link>
<a v-else class="disabled">more &gt;</a> <a v-else class="disabled">more &gt;</a>
<spinner :show="loading"></spinner>
</div> </div>
<transition :name="transition"> <transition :name="transition">
<div class="news-list" :key="displayedPage" v-if="displayedPage > 0"> <div class="news-list" :key="displayedPage" v-if="displayedPage > 0">
...@@ -124,11 +124,6 @@ export default { ...@@ -124,11 +124,6 @@ export default {
margin 0 1em margin 0 1em
.disabled .disabled
color #ccc color #ccc
.spinner
position absolute
top 50%
left 50%
transform translate(-50%, -50%)
.news-list .news-list
position absolute position absolute
......
...@@ -15,6 +15,9 @@ $offset = 126 ...@@ -15,6 +15,9 @@ $offset = 126
$duration = 1.4s $duration = 1.4s
.spinner .spinner
position fixed
right 15px
bottom 15px
opacity 0 opacity 0
transition opacity .15s ease transition opacity .15s ease
animation rotator $duration linear infinite animation rotator $duration linear infinite
......
...@@ -18,6 +18,6 @@ export default new Router({ ...@@ -18,6 +18,6 @@ export default new Router({
{ path: '/job/:page(\\d+)?', component: createListView('job') }, { path: '/job/:page(\\d+)?', component: createListView('job') },
{ path: '/item/:id(\\d+)', component: ItemView }, { path: '/item/:id(\\d+)', component: ItemView },
{ path: '/user/:id', component: UserView }, { path: '/user/:id', component: UserView },
{ path: '*', redirect: '/top/1' } { path: '*', redirect: '/top' }
] ]
}) })
<template> <template>
<div class="item-view" v-if="item"> <div class="item-view" v-if="item">
<spinner :show="!item"></spinner>
<template v-if="item">
<div class="item-view-header"> <div class="item-view-header">
<a :href="item.url" target="_blank"> <a :href="item.url" target="_blank">
<h2>{{ item.title }}</h2> <h2>{{ item.title }}</h2>
...@@ -15,10 +17,12 @@ ...@@ -15,10 +17,12 @@
<ul v-if="item.kids" class="item-view-comments"> <ul v-if="item.kids" class="item-view-comments">
<comment v-for="id in item.kids" :id="id"></comment> <comment v-for="id in item.kids" :id="id"></comment>
</ul> </ul>
</template>
</div> </div>
</template> </template>
<script> <script>
import Spinner from '../components/Spinner.vue'
import Comment from '../components/Comment.vue' import Comment from '../components/Comment.vue'
function fetchItem (store) { function fetchItem (store) {
...@@ -29,7 +33,7 @@ function fetchItem (store) { ...@@ -29,7 +33,7 @@ function fetchItem (store) {
export default { export default {
name: 'item-view', name: 'item-view',
components: { Comment }, components: { Spinner, Comment },
computed: { computed: {
item () { item () {
return this.$store.state.items[this.$route.params.id] return this.$store.state.items[this.$route.params.id]
......
<template> <template>
<div class="user-view" v-if="user"> <div class="user-view">
<spinner :show="!user"></spinner>
<template v-if="user">
<ul> <ul>
<li><span class="label">user:</span> {{ user.id }}</li> <li><span class="label">user:</span> {{ user.id }}</li>
<li><span class="label">created:</span> {{ user.created | timeAgo }} ago</li> <li><span class="label">created:</span> {{ user.created | timeAgo }} ago</li>
...@@ -13,10 +15,13 @@ ...@@ -13,10 +15,13 @@
<a :href="'https://news.ycombinator.com/submitted?id=' + user.id">submissions</a><br> <a :href="'https://news.ycombinator.com/submitted?id=' + user.id">submissions</a><br>
<a :href="'https://news.ycombinator.com/threads?id=' + user.id">comments</a> <a :href="'https://news.ycombinator.com/threads?id=' + user.id">comments</a>
</p> </p>
</template>
</div> </div>
</template> </template>
<script> <script>
import Spinner from '../components/Spinner.vue'
function fetchUser (store) { function fetchUser (store) {
return store.dispatch('FETCH_USER', { return store.dispatch('FETCH_USER', {
id: store.state.route.params.id id: store.state.route.params.id
...@@ -25,6 +30,7 @@ function fetchUser (store) { ...@@ -25,6 +30,7 @@ function fetchUser (store) {
export default { export default {
name: 'user-view', name: 'user-view',
components: { Spinner },
computed: { computed: {
user () { user () {
return this.$store.state.users[this.$route.params.id] return this.$store.state.users[this.$route.params.id]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment