import { Component } from 'react' import Element from '../components/Element' import Filters from '../components/Filters' import Post, { PostHeader } from '../components/Post' interface Props { userAgent?: string } interface States { elements: Array loaded: boolean asideHeight: number categories: Array } // export const config = {amp: 'hybrid'} let elements: Array = [] export default class Page extends Component { public async componentDidMount() { const posts = await Post.fetchAll() const header: Array = [] const cats: Array = [] posts.forEach((el) => { el.fetchSync() header.push(el.header) cats.push(...el.header.tags) }) header.sort((a, b) => { return (a.date < b.date) ? 1 : -1 }) cats.sort((a, b) => (a < b) ? -1 : 1) elements = header this.setState({ categories: cats.filter((item, pos) => cats.indexOf(item) === pos), elements: header, loaded: true, }) } public render() { return (
{this.state && this.state.elements && this.state.elements.length !== 0 ? this.state.elements.map((el, index) => ( )) : this.state && this.state.loaded ? (
La recherche n'a rien donnée 😢
) : (
Chargement en cours... 😃
)}
) } private onQuery = async (query: string, recent: boolean = true) => { // console.log(`query: ${query}`) const t = elements.filter( (el) => { return el.title.toLowerCase().includes(query.toLowerCase()) }) if (recent) { t.sort((a, b) => { return (a.date < b.date) ? 1 : -1 }) } else { t.sort((a, b) => { return (a.date > b.date) ? 1 : -1 }) } this.setState({ elements: t, }) } private onHeight = async (height: number) => { this.setState({ asideHeight: height, }) } }