parent
1904301eae
commit
ec8bc54437
14 changed files with 0 additions and 451 deletions
@ -1,87 +0,0 @@ |
||||
<template> |
||||
<div id="app" :class="theme"> |
||||
<div id="nav"> |
||||
<router-link to="/">Home</router-link> | |
||||
<router-link to="/posts">Posts</router-link> | |
||||
<router-link to="/qa">QA</router-link> |
||||
</div> |
||||
<div> |
||||
<button id="toggleThemeButton" @click="toggleTheme">{{ themeToggleVerb }} my eyes</button> |
||||
</div> |
||||
<router-view /> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
|
||||
export default { |
||||
name: 'App', |
||||
data() { |
||||
return { |
||||
theme: 'dark' |
||||
} |
||||
}, |
||||
computed: { |
||||
themeToggleVerb: function() { |
||||
return this.theme === 'light' ? "Save" : "Hurt" |
||||
} |
||||
}, |
||||
|
||||
methods: { |
||||
toggleTheme() { |
||||
const themes = ['light', 'dark'] |
||||
this.theme = themes[(themes.indexOf(this.theme) + 1) % themes.length] |
||||
} |
||||
}, |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
|
||||
.light { |
||||
--primary-color: #ffffeb; |
||||
--text-color: #272736; |
||||
} |
||||
|
||||
.dark { |
||||
--primary-color: #272736; |
||||
--text-color: #ffffeb; |
||||
} |
||||
|
||||
.dark a { |
||||
color: #7e7e8f; |
||||
} |
||||
|
||||
body { |
||||
background-color: var(--primary-color); |
||||
} |
||||
|
||||
#app { |
||||
font-family: Avenir, Helvetica, Arial, sans-serif; |
||||
-webkit-font-smoothing: antialiased; |
||||
-moz-osx-font-smoothing: grayscale; |
||||
text-align: center; |
||||
color: var(--text-color); |
||||
padding-top: 60px; |
||||
background-color: var(--primary-color); |
||||
min-height: 100vh; |
||||
} |
||||
|
||||
#toggleThemeButton { |
||||
background: var(--primary-color); |
||||
border: 0px; |
||||
color: var(--text-color); |
||||
margin: 0 auto; |
||||
|
||||
margin-right: 0px; |
||||
} |
||||
|
||||
@media (min-width:420px) { |
||||
#toggleThemeButton { |
||||
float:right; |
||||
margin-right: 10px; |
||||
} |
||||
} |
||||
|
||||
</style> |
||||
|
Before Width: | Height: | Size: 6.7 KiB |
@ -1,40 +0,0 @@ |
||||
<template> |
||||
<div> |
||||
<h2>Who am I?</h2> |
||||
<p> |
||||
Hi there, good to see you on my website. |
||||
My name is Raymon Zutekouw({{ age }}). |
||||
</p> |
||||
|
||||
<p> |
||||
Building software and exploring the wide variety of tools (or making them) is my passion. |
||||
To see it in action, checkout the stuff I make on |
||||
<a href='https://github.com/Raymonzut'>GitHub</a>. |
||||
</p> |
||||
|
||||
<p> |
||||
The projects that may be useful to others are open source; for inspiring others and improving each others work. |
||||
That is why I am a huge fan of |
||||
<a href='https://www.gnu.org/philosophy/free-sw.en.html'>free software</a>. |
||||
</p> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import me from '../me.js' |
||||
|
||||
export default { |
||||
name: 'AboutMe', |
||||
computed: { |
||||
age: me.age |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped> |
||||
p { |
||||
--margin-side: 12vw; |
||||
margin-left: var(--margin-side); |
||||
margin-right: var(--margin-side); |
||||
} |
||||
</style> |
@ -1,18 +0,0 @@ |
||||
<template> |
||||
<div> |
||||
{{ a }} |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
name: 'Answer', |
||||
props: { |
||||
a: { |
||||
type: String, |
||||
required: true, |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
@ -1,38 +0,0 @@ |
||||
<template> |
||||
<div id='qa'> |
||||
<Question :q='q'></Question> |
||||
<Answer :a='a'></Answer> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Question from './Question.vue' |
||||
import Answer from './Answer.vue' |
||||
|
||||
export default { |
||||
name: 'QA', |
||||
components: { |
||||
Question, |
||||
Answer, |
||||
}, |
||||
props: { |
||||
q: { |
||||
type: String, |
||||
required: true, |
||||
}, |
||||
a: { |
||||
type: String, |
||||
required: true, |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style scoped> |
||||
#qa { |
||||
--block-spacing: 7.5em; |
||||
|
||||
margin-top: var(--block-spacing); |
||||
margin-bottom: var(--block-spacing); |
||||
} |
||||
</style> |
@ -1,27 +0,0 @@ |
||||
<template> |
||||
<div id='question_box'> |
||||
{{ q }} |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
name: 'Question', |
||||
props: { |
||||
q: { |
||||
type: String, |
||||
required: true, |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style scoped> |
||||
#question_box { |
||||
--text-spacing: 0.75em; |
||||
|
||||
font-style: italic; |
||||
margin-top: var(--text-spacing); |
||||
margin-bottom: var(--text-spacing); |
||||
} |
||||
</style> |
@ -1,14 +0,0 @@ |
||||
import Vue from 'vue' |
||||
import VueResource from 'vue-resource' |
||||
|
||||
import App from './App.vue' |
||||
import router from './router' |
||||
|
||||
Vue.config.productionTip = false |
||||
|
||||
Vue.use(VueResource) |
||||
|
||||
new Vue({ |
||||
render: h => h(App), |
||||
router, |
||||
}).$mount('#app') |
@ -1,23 +0,0 @@ |
||||
module.exports = { |
||||
getPosts: function(id) { |
||||
const BASE_URL = '/api/posts' |
||||
const URL = BASE_URL + (id ? `/${id}` : '?sort=-1') |
||||
|
||||
this.$http |
||||
.get(URL) |
||||
.then(res => { |
||||
if (id) { |
||||
if (res.body.length === 0) { |
||||
throw Error("Response body empty") |
||||
} |
||||
this.post = res.body |
||||
} |
||||
else { |
||||
this.posts = res.body |
||||
} |
||||
}) |
||||
.catch(err => { |
||||
console.log(`Error: ${err}`) |
||||
}) |
||||
}, |
||||
} |
@ -1,46 +0,0 @@ |
||||
import Vue from 'vue' |
||||
import VueRouter from 'vue-router' |
||||
import Home from '../views/Home.vue' |
||||
import Posts from '../views/Posts.vue' |
||||
import Post from '../views/Post.vue' |
||||
import QAPage from '../views/QAPage' |
||||
|
||||
Vue.use(VueRouter) |
||||
|
||||
const routes = [ |
||||
{ |
||||
path: "/", |
||||
name: "Home", |
||||
component: Home, |
||||
}, |
||||
{ |
||||
path: "/posts", |
||||
name: "Posts", |
||||
component: Posts, |
||||
}, |
||||
{ |
||||
path: "/posts/:id", |
||||
name: "Post", |
||||
component: Post, |
||||
props: true, |
||||
}, |
||||
{ |
||||
path: "/qa", |
||||
name: "QA", |
||||
component: QAPage |
||||
}, |
||||
] |
||||
|
||||
const exclude_routes = [ |
||||
{ |
||||
path: "/api" |
||||
} |
||||
] |
||||
|
||||
const router = new VueRouter({ |
||||
mode: "history", |
||||
base: process.env.BASE_URL, |
||||
routes: routes.concat(exclude_routes), |
||||
}) |
||||
|
||||
export default router |
@ -1,19 +0,0 @@ |
||||
<template> |
||||
<div id="home"> |
||||
<h1>Home</h1> |
||||
<AboutMe></AboutMe> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import AboutMe from '@/components/AboutMe' |
||||
|
||||
export default { |
||||
name: "Home", |
||||
components: { |
||||
AboutMe |
||||
}, |
||||
} |
||||
</script> |
||||
|
||||
<style scoped></style> |
@ -1,45 +0,0 @@ |
||||
<template> |
||||
<div id="Post"> |
||||
<div v-if="Object.keys(post).length"> |
||||
<h1>{{ post.title }}</h1> |
||||
<h5>Written on {{ post.date.substring(0,10)}}</h5> |
||||
|
||||
<p v-for="(p, i) in post.content.split('\n')" :key="i">{{ p }}</p> |
||||
</div> |
||||
<h2 v-else>Waiting for post</h2> |
||||
<br> |
||||
Read other <a href="/posts">posts</a> |
||||
<br> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { getPosts } from '../remote' |
||||
|
||||
export default { |
||||
name: "Post", |
||||
data() { |
||||
return { |
||||
post: {}, |
||||
} |
||||
}, |
||||
methods: { |
||||
getPosts |
||||
}, |
||||
mounted() { |
||||
getPosts.call(this, this._props.id) |
||||
}, |
||||
props: { |
||||
id: { |
||||
type: String, |
||||
name: "id", |
||||
validator: val => { |
||||
const reg = /([0-9]|[a-f]){24}/ |
||||
return reg.test(val) |
||||
}, |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style scoped></style> |
@ -1,68 +0,0 @@ |
||||
<template> |
||||
<div id="posts" v-if="months.length >= 0"> |
||||
<h3 class="month" v-for="(month, i) in months" :key="i"> |
||||
{{ month }} |
||||
<div> |
||||
<ul> |
||||
<li v-for="(postItem, j) in getPostItems(month)" :key="j"> |
||||
{{ getPostItemDate(postItem) }} – |
||||
<a :href="/posts/ + postItem._id">{{ postItem.title }}</a> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
<br> |
||||
</h3> |
||||
</div> |
||||
<h2 v-else>There are no posts yet, but don't worry they will be added soon</h2> |
||||
</template> |
||||
|
||||
<script> |
||||
import { getPosts } from '../remote' |
||||
|
||||
export default { |
||||
name: "Posts", |
||||
computed: { |
||||
months: function () { |
||||
const dates = this.posts.map(post => new Date(post.date)) |
||||
|
||||
// Contains the month followed by the year |
||||
const months = dates.map(date => `${date.toLocaleString('default', { month: 'long' })} ${date.getFullYear()}`) |
||||
const uniques = Array.from(new Set(months)) |
||||
|
||||
return uniques |
||||
} |
||||
}, |
||||
data() { |
||||
return { |
||||
posts: [] |
||||
} |
||||
}, |
||||
methods: { |
||||
getPosts, |
||||
getPostItems: function (month) { |
||||
const month_index = new Date(`1 ${month}`).getMonth() |
||||
return this.posts.filter((post) => (new Date(post.date)).getMonth() === month_index) |
||||
}, |
||||
getPostItemDate: function (postItem) { |
||||
const date = new Date(postItem.date) |
||||
return `${date.getFullYear()} ${date.toLocaleString('default', { month: 'short' })} ${date.getDate()}` |
||||
} |
||||
}, |
||||
mounted() { |
||||
getPosts.call(this) |
||||
}, |
||||
} |
||||
</script> |
||||
|
||||
<style scoped> |
||||
ul { |
||||
text-align: left; |
||||
} |
||||
|
||||
@media (min-width: 420px) { |
||||
.month { |
||||
text-indent: 1em; |
||||
text-align: left; |
||||
} |
||||
} |
||||
</style> |
@ -1,25 +0,0 @@ |
||||
<template> |
||||
<div id="QAPage"> |
||||
<QA |
||||
q="What is this site about? " |
||||
a="This site is about me and the stuff I make " |
||||
></QA> |
||||
|
||||
<QA |
||||
q="Why is it still so empty?" |
||||
a="Because I am framework hopping " |
||||
></QA> |
||||
</div> |
||||
|
||||
</template> |
||||
|
||||
<script> |
||||
import QA from '@/components/QA' |
||||
|
||||
export default { |
||||
name: "QAPAge", |
||||
components: { QA } |
||||
} |
||||
</script> |
||||
|
||||
<style scoped></style> |
Loading…
Reference in new issue