import Element from '../components/Element' import Filters from '../components/Filters' import { Component } from 'react' import Post, { PostHeader } from '../components/Post' interface Props { userAgent?: string } interface el extends PostHeader {} interface States { elements: el[] loaded: boolean asideHeight: number categories: string[] } // export const config = {amp: 'hybrid'} let elements: PostHeader[] = [] export default class Page extends Component { 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 }) } onHeight = async (height: number) => { this.setState({ asideHeight: height }) } async componentDidMount() { const posts = await Post.fetchAll() const header: Array = [] let 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({ elements: header, loaded: true, categories: cats.filter((item, pos) => {return cats.indexOf(item) === pos}) }) } 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... 😃
)}
) } }