UNPKG

@nine-theme/vuepress-theme-nine

Version:
73 lines (64 loc) 2.03 kB
import { filterPosts, sortPostsByStickyAndDate, sortPostsByDate } from '../helpers/postData' export default { computed: { $ninePosts () { const { $categories: { list: articles } } = this let posts = articles.reduce((allData, currentData) => { return [...allData, ...currentData.pages] }, []) posts = filterPosts(posts, false) sortPostsByStickyAndDate(posts) return posts }, $ninePostsForTimeline () { let pages = this.$ninePosts const formatPages = {} const formatPagesArr = [] pages = filterPosts(pages, true) this.pages = pages.length == 0 ? [] : pages for (let i = 0, length = pages.length; i < length; i++) { const page = pages[i] const pageDateYear = dateFormat(page.frontmatter.date, 'year') if (formatPages[pageDateYear]) formatPages[pageDateYear].push(page) else { formatPages[pageDateYear] = [page] } } for (const key in formatPages) { const data = formatPages[key] sortPostsByDate(data) formatPagesArr.unshift({ year: key, data }) } return formatPagesArr }, $showSubSideBar () { const { $themeConfig: { subSidebar: themeSidebar }, $frontmatter: { subSidebar: pageSidebar } } = this const headers = this.$page.headers || [] if ((themeSidebar === 'auto' || pageSidebar === 'auto') && headers.length > 0) { return true } return false } } } function renderTime (date) { var dateee = new Date(date).toJSON() return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '').replace(/-/g, '/') } function dateFormat (date, type) { date = renderTime(date) const dateObj = new Date(date) const year = dateObj.getFullYear() const mon = dateObj.getMonth() + 1 const day = dateObj.getDate() if (type == 'year') return year else return `${mon}-${day}` }