Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
template.js 2.66 KiB
Newer Older
peter_rabbit's avatar
peter_rabbit committed
"use strict";

peter_rabbit's avatar
peter_rabbit committed
const { images_url } = require("../../constants");

peter_rabbit's avatar
peter_rabbit committed
const NAV_MENU_ITEMS = [
peter_rabbit's avatar
peter_rabbit committed
    ["/public/", "logo_kuadrado_s32.png; "],
peter_rabbit's avatar
peter_rabbit committed
    ["/public/games/", "Jeux"],
    ["/public/software-development/", "Software"],
    [
        "/public/education/",
        "Pédagogie",
        [
            // submenu
            ["/public/education/#game-studio-club", "Game Studio Club"],
            ["/public/education/#popularization", "Animations vulgarisation"],
        ],
    ],
];

peter_rabbit's avatar
peter_rabbit committed
class Template {
    constructor(props) {
        this.props = props;
    }

peter_rabbit's avatar
peter_rabbit committed
    renderMenu(menuItemsArray, isSubmenu = false) {
        const r = {
            tag: "ul",
            class: isSubmenu ? "submenu" : "",
            contents: menuItemsArray.map(link => {
peter_rabbit's avatar
peter_rabbit committed
                let [href, text, submenu] = link;
                const spltTxt = text.split(";");
                text = spltTxt.length > 1 ? spltTxt[1] : text;
                const img = spltTxt.length > 1 ? spltTxt[0] : undefined;
peter_rabbit's avatar
peter_rabbit committed
                return {
                    tag: "li",
                    class: !isSubmenu && window.location.pathname === href ? "active" : "",
peter_rabbit's avatar
peter_rabbit committed
                    contents: [
                        {
                            tag: "a",
                            href,
                            contents: img
                                ? [
                                      { tag: "img", src: `${images_url}/${img}` },
                                      { tag: "span", contents: text },
                                  ]
                                : text,
                        },
                    ].concat(submenu ? [this.renderMenu(submenu, true)] : []),
peter_rabbit's avatar
peter_rabbit committed
                };
            }),
        };
        return r;
    }

peter_rabbit's avatar
peter_rabbit committed
    render() {
        return {
            tag: "main",
            contents: [
                {
                    tag: "header",
                    contents: [
                        {
                            tag: "nav",
peter_rabbit's avatar
peter_rabbit committed
                            contents: [this.renderMenu(NAV_MENU_ITEMS)],
peter_rabbit's avatar
peter_rabbit committed
                        },
                    ],
                },
                {
                    tag: "div",
                    id: "page-container",
                    contents: [this.props.page.render()],
                },
                {
                    tag: "footer",
                    contents: [
                        {
                            tag: "a",
                            href: "mailto:kuadrado-software@tutanota.com",
                            contents: "kuadrado-software@tutanota.com",
                        },
                    ],
                },
            ],
        };
    }
}

module.exports = Template;