2023-05-27 21:16:21 +03:00
|
|
|
<template>
|
2023-06-24 18:48:18 +03:00
|
|
|
<div>
|
|
|
|
<Navbar />
|
|
|
|
<Header> <label class="glitch">/dev/</label>blog </Header>
|
|
|
|
<div class="blogs">
|
|
|
|
<Input :keyup="keyup" placeholder="Search post" type="text" />
|
|
|
|
<PostPreview
|
|
|
|
v-for="post in posts"
|
|
|
|
:key="post.title"
|
|
|
|
:title="post.title"
|
|
|
|
:desc="post.desc"
|
|
|
|
:info="post.info"
|
|
|
|
:url="post.url"
|
|
|
|
>
|
|
|
|
{{ post.desc }}
|
|
|
|
</PostPreview>
|
2023-05-27 21:16:21 +03:00
|
|
|
</div>
|
2023-06-24 18:48:18 +03:00
|
|
|
<NewPost v-if="logged" />
|
|
|
|
</div>
|
2023-05-27 21:16:21 +03:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
2023-06-24 18:48:18 +03:00
|
|
|
import Navbar from "../../components/Navbar.vue"
|
|
|
|
import Header from "../../components/Header.vue"
|
|
|
|
import NewPost from "../../components/NewPost.vue"
|
|
|
|
import PostPreview from "../../components/PostPreview.vue"
|
|
|
|
import axios from "axios"
|
2023-05-27 21:16:21 +03:00
|
|
|
|
|
|
|
export default {
|
2023-06-24 18:48:18 +03:00
|
|
|
head() {
|
|
|
|
return {
|
|
|
|
title: "[ngn] | blog",
|
|
|
|
meta: [
|
|
|
|
{
|
|
|
|
hid: "description",
|
|
|
|
name: "description",
|
|
|
|
content: "read my blog posts"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
logged: false,
|
|
|
|
posts: [],
|
|
|
|
all: []
|
|
|
|
}
|
|
|
|
},
|
|
|
|
mounted: async function () {
|
|
|
|
if (localStorage.getItem("token")) this.logged = true
|
|
|
|
const res = await axios.get("/api/blog/sum")
|
|
|
|
let posts = []
|
2023-05-27 21:16:21 +03:00
|
|
|
|
2023-06-24 18:48:18 +03:00
|
|
|
res.data["posts"].forEach((post) => {
|
|
|
|
posts.push({
|
|
|
|
title: post.title,
|
|
|
|
desc: post.desc,
|
|
|
|
info: post.info,
|
|
|
|
url: `/blog/${post.title.toLowerCase().replaceAll(" ", "")}`
|
|
|
|
})
|
|
|
|
})
|
2023-06-11 20:19:35 +03:00
|
|
|
|
2023-06-24 18:48:18 +03:00
|
|
|
this.posts = posts
|
|
|
|
this.all = posts
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
keyup(e) {
|
|
|
|
let val = e.target.value
|
2023-06-11 20:19:35 +03:00
|
|
|
|
2023-06-24 18:48:18 +03:00
|
|
|
// search looks at name and info
|
|
|
|
this.posts = []
|
|
|
|
for (let i = 0; i < this.all.length; i++) {
|
|
|
|
if (this.all[i].title.toLowerCase().includes(val.toLowerCase()))
|
|
|
|
this.posts.push(this.all[i])
|
|
|
|
else if (this.all[i].info.toLowerCase().includes(val.toLowerCase()))
|
|
|
|
this.posts.push(this.all[i])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-05-27 21:16:21 +03:00
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
.blogs {
|
2023-06-24 18:48:18 +03:00
|
|
|
padding: 50px;
|
|
|
|
gap: 35px;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
gap: 30px;
|
|
|
|
align-items: center;
|
2023-05-27 21:16:21 +03:00
|
|
|
}
|
2023-06-11 20:19:35 +03:00
|
|
|
</style>
|