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
education.js 28.6 KiB
Newer Older
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
function getServerUrl() {
    return `${location.origin}${location.origin.charAt(location.origin.length - 1) !== "/" ? "/" : ""
        }`;
}

module.exports = {
    getServerUrl,
    build: {
        protected_dirs: ["assets", "style", "articles"],
        default_meta_keys: ["title", "description", "image", "open_graph", "json_ld"],
    },
};

},{}],2:[function(require,module,exports){
const { getServerUrl } = require("./config");

module.exports = {
    images_url: `${getServerUrl()}assets/images/`,
    articles_url: `${getServerUrl()}articles/`,
};

},{"./config":1}],3:[function(require,module,exports){
"use strict";

module.exports = {
    setRenderCycleRoot(renderCycleRoot) {
        this.renderCycleRoot = renderCycleRoot;
    },
    objectToHtml: function objectToHtml(obj) {
        const { tag } = obj;

        const node = document.createElement(tag);
        const excludeKeys = ["tag", "contents", "style_rules", "state"];

        Object.keys(obj)
            .filter(attr => !excludeKeys.includes(attr))
            .forEach(attr => {
                if (attr === "class") {
                    node.classList.add(...obj[attr].split(" ").filter(s => s !== ""));
                } else {
                    node[attr] = obj[attr];
                }
            });
        if (obj.contents && typeof obj.contents === "string") {
            node.innerHTML = obj.contents;
        } else {
            obj.contents &&
                obj.contents.length > 0 &&
                obj.contents.forEach(el => {
                    switch (typeof el) {
                        case "string":
                            node.innerHTML = el;
                            break;
                        case "object":
                            node.appendChild(objectToHtml(el));
                            break;
                    }
                });
        }

        if (obj.style_rules) {
            Object.keys(obj.style_rules).forEach(rule => {
                node.style[rule] = obj.style_rules[rule];
            });
        }

        return node;
    },
    renderCycle: function () {
        this.subRender(this.renderCycleRoot.render(), document.getElementsByTagName("main")[0], {
            mode: "replace",
        });
    },
    subRender(object, htmlNode, options = { mode: "append" }) {
        const insert = this.objectToHtml(object);
        switch (options.mode) {
            case "append":
                htmlNode.appendChild(insert);
                break;
            case "override":
                htmlNode.innerHTML = "";
                htmlNode.appendChild(insert);
                break;
            case "insert-before":
                htmlNode.insertBefore(insert, htmlNode.childNodes[options.insertIndex]);
                break;
            case "adjacent":
                /**
                 * options.insertLocation must be one of:
                 *
                 * afterbegin
                 * afterend
                 * beforebegin
                 * beforeend
                 */
                htmlNode.insertAdjacentHTML(options.insertLocation, insert);
                break;
            case "replace":
                htmlNode.parentNode.replaceChild(insert, htmlNode);
                break;
            case "remove":
                htmlNode.remove();
                break;
        }
    },
};

},{}],4:[function(require,module,exports){
"use strict";

class WebPage {
    constructor(args) {
        Object.assign(this, args);
    }
}

module.exports = WebPage;
},{}],5:[function(require,module,exports){
"use strict";

const { images_url } = require("../../../constants");
const WebPage = require("../../lib/web-page");

const EDU_THEMES = [
    // {
    //     title: "Création de jeux vidéo",
    //     description: "Conception, graphisme et animation, programmation, je vous accompagne dans la découverte des techniques pour créer un jeu vidéo de A à Z",
    //     image: "learning_theme_conception.png",
    //     pageUrl: "gamedev",
    // },
    {
        title: "Programmation",
        description: `<b>Franchissez le mur du code !</b><br />
        Apprenez à programmer avec différents langages (Python, Javascript, C ...), pour du web, du logiciel, du jeu vidéo ou autre.`,
        image: "learning_theme_coding.png",
        // pageUrl: "coding",
    },
    {
        title: "Dessin numérique et animation 2D",
        description: `Apprenez à utiliser des logiciels libres de création graphique 2D et d'animation.<br />
        Créez des personnages et des décors, menez votre projet de dessin animé, d'illustration ou de jeu vidéo.`,
        image: "learning_theme_2d.png",
        // pageUrl: "2d",
    },
    {
        title: "Maths et physique",
Pierre Jarriges's avatar
Pierre Jarriges committed
        description: "Abordez les notions fondamentales de façon décontractée pour le plaisir de comprendre en s'appuyant sur les domaines d'application du jeu vidéo.",
        image: "learning_theme_math.png",
        // pageUrl: "math",
    },
    // {
    //     title: "Musique et sons électroniques",
    //     description: "Découvrez des logiciels libres de composition musicales, de synthèse sonore et de prise de son.",
    //     image: "learning_theme_sound.png",
    //     pageUrl: "sound",
    // },
    {
        title: "Aide informatique générale",
Pierre Jarriges's avatar
Pierre Jarriges committed
        description: "Perdu avec votre ordinateur ou votre smartphone, les logiciels, internet ? Prenez en main les fondamentaux apprenez pas à pas à utiliser sereinement la technologie.",
        image: "learning_theme_pc.png",
        // pageUrl: "popularization"
    },
    {
        title: "Stage GNU/Linux",
        description: `<b>Passez le cap du libre ! </b><br/>
Pierre Jarriges's avatar
Pierre Jarriges committed
        Apprenez à installer Linux, faites vos premiers pas avec les logiciels libres et acquérez une autonomie suffisante pour une utilisation basique.`,
        image: "learning_theme_linux.png"
Pierre Jarriges's avatar
Pierre Jarriges committed
    },
    {
        title: "Créer un jeu avec Mentalo",
        description: "Créez un jeu en quelques séances avec l'application Mentalo. Manipulez des concepts logiques, narratifs et artistiques avec le maximum de simplicité.",
        image: "learning_theme_mentalo.png",
    }
];

class EducationPage extends WebPage {
    render() {
        return {
            tag: "div",
            id: "education-page",
            typeof: "EducationalOrganization",
            contents: [
                {
                    tag: "div",
                    class: "page-header logo-left",
                    contents: [
                        {
                            tag: "div",
                            class: "page-contents-center grid-wrapper",
                            contents: [
                                {
                                    tag: "div",
                                    class: "logo",
                                    contents: [
                                        {
                                            tag: "img",
                                            alt: "image brain",
                                            src: `${images_url}brain.svg`,
                                        },
                                    ],
                                },
                                { tag: "h1", contents: "Pédagogie" },
                                {
                                    tag: "p",
Pierre Jarriges's avatar
Pierre Jarriges committed
                                    contents: `Ateliers, stages, workshops et cours particuliers accessibles à tous. 
                                    Programmation, graphisme 2D, jeux vidéo, vulgarisation informatique, etc.`,
                                },
                            ],
                        },
                    ],
                },
                {
                    tag: "div",
                    class: "title-banner",
                },
                {
                    tag: "section",
                    class: "bg-dark",
                    contents: [
                        {
                            tag: "div",
                            class: "page-contents-center",
                            contents: [
                                {
                                    tag: "ul",
                                    class: "edu-themes",
                                    contents: EDU_THEMES.map(theme => {
                                        return {
                                            tag: "li",
                                            class: "edu-theme",
                                            contents: [
                                                { tag: "img", width: 250, height: 140, class: "pixelated", src: `${images_url}${theme.image}` },
                                                { tag: "h3", contents: theme.title },
                                                { tag: "p", contents: theme.description },
                                            ]
                                        }
                                    })
                                },
                            ]
                        },
                    ]
                },
                {
                    tag: "section",
                    class: "practical-info",
                    contents: [
                        {
                            tag: "div",
                            class: "page-contents-center",
                            contents: [
Pierre Jarriges's avatar
Pierre Jarriges committed
                                // {
                                //     tag: "div",
                                //     class: "info-block",
                                //     contents: [
                                //         { tag: "h3", class: "info-title", contents: "Pour qui ?" },
                                //         {
                                //             tag: "p",
                                //             class: "info-body",
                                //             contents: `Les ateliers sont accessibles aux adultes comme aux enfants, plutôt à partir de 12 ans.<br/>
                                //             Les séances ont lieu en groupes mixtes. Capacité limitée à 5 personnes.
                                //             `
                                //         }
                                //     ]
                                // },
                                // {
                                //     tag: "div",
                                //     class: "info-block",
                                //     contents: [
                                //         { tag: "h3", class: "info-title", contents: "Où ça ?" },
                                //         {
                                //             tag: "p",
                                //             class: "info-body",
                                //             contents: "Dans mon local professionnel : <br /><blue>32 rue Simon Vialet, passage du Cheminou, 07240 Vernoux en Vivarais.</blue>"
                                //         }
                                //     ]
                                // },
                                // {
                                //     tag: "div",
                                //     class: "info-block",
                                //     contents: [
                                //         { tag: "h3", class: "info-title", contents: "Quel matériel ?" },
                                //         {
                                //             tag: "p",
                                //             class: "info-body",
                                //             contents: `Le matériel informatique est fourni sur place (ordinateurs et tablettes graphique) 
                                //             mais il est possible d'amener le sien. 
                                //             <br />Il est recommandé d'apporter au moins une clé USB pour faire ses sauvegardes.`
                                //         }
                                //     ]
                                // },
                                // {
                                //     tag: "div",
                                //     class: "info-block",
                                //     contents: [
                                //         { tag: "h3", class: "info-title", contents: "Quand ?" },
                                //         {
                                //             tag: "ul",
                                //             class: "info-body tabled",
                                //             contents: [
                                //                 {
                                //                     tag: "li",
                                //                     contents: [
                                //                         { tag: "span", contents: "Mardi" },
                                //                         { tag: "span", contents: "16h - 18h" },
                                //                     ]
                                //                 },
                                //                 {
                                //                     tag: "li",
                                //                     contents: [
                                //                         { tag: "span", contents: "Mercredi" },
                                //                         { tag: "span", contents: "14h - 16h" },
                                //                     ]
                                //                 },
                                //                 {
                                //                     tag: "li",
                                //                     contents: [
                                //                         { tag: "span", contents: "Jeudi" },
                                //                         { tag: "span", contents: "16h - 18h" },
                                //                     ]
                                //                 },
                                //                 {
                                //                     tag: "li",
                                //                     class: "fullwidth",
                                //                     contents: "<em><blue>Ouvert de Septembre à Juin, sauf vacances scolaires ou fermetures exceptionnelles</blue></em>"
                                //                 }
                                //             ]
                                //         },
                                //     ]
                                // },
                                // {
                                //     tag: "div",
                                //     class: "info-block",
                                //     contents: [
                                //         { tag: "h3", class: "info-title", contents: "Combien ça coûte ?" },
                                //         {
                                //             tag: "ul",
                                //             class: "info-body tabled",
                                //             contents: [
                                //                 {
                                //                     tag: "li",
                                //                     contents: [
                                //                         { tag: "span", contents: "Inscription au mois" },
                                //                         { tag: "span", contents: "50€, accès à toutes les plages horaires." },
                                //                     ]
                                //                 },
                                //                 {
                                //                     tag: "li",
                                //                     contents: [
                                //                         { tag: "span", contents: "Inscription à la séance" },
                                //                         { tag: "span", contents: "15€" },
                                //                     ]
                                //                 },
                                //                 {
                                //                     tag: "li",
                                //                     contents: [
                                //                         { tag: "span", contents: "Cours particuliers" },
                                //                         { tag: "span", contents: "30€/h, sur place ou en visio. Horaires à définir." },
                                //                     ]
                                //                 },
                                //                 {
                                //                     tag: "li",
                                //                     contents: [
                                //                         { tag: "span", contents: "Stage 4 séances de 2h" },
                                //                         { tag: "span", contents: "40€ par personne, horaires et dates à définir selon la demande." },
                                //                     ]
                                //                 }
                                //             ]
                                //         }
                                //     ]
                                // },
                                {
                                    tag: "div",
                                    class: "info-block",
                                    contents: [
Pierre Jarriges's avatar
Pierre Jarriges committed
                                        { tag: "h3", class: "info-title", contents: "Pour s'inscrire ou en savoir plus <em>(programme 2021 2022 à définir, plus d'infos bientôt)</em>" },
                                        {
                                            tag: "ul",
                                            class: "info-body",
                                            contents: [
                                                {
                                                    tag: "li",
                                                    contents: [
                                                        { tag: "span", contents: "Me contacter" },
                                                        {
                                                            tag: "a",
                                                            href: "mailto:contact@kuadrado-software.fr",
                                                            contents: "contact@kuadrado-software.fr",
                                                        }
                                                    ]
                                                },
                                                {
                                                    tag: "li",
                                                    contents: [
                                                        { tag: "span", contents: "" },
                                                        {
                                                            tag: "a",
                                                            href: "tel:+33475780872",
                                                            contents: "04 75 78 08 72",
                                                            property: "telephone",
                                                        },
                                                    ]
                                                },
Pierre Jarriges's avatar
Pierre Jarriges committed
                                                // {
                                                //     tag: "li",
                                                //     contents: [
                                                //         { tag: "span", contents: "ou passer directement me voir au local !" }
                                                //     ]
                                                // }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        }
                    ]

                },
            ],
        };
    }
}

module.exports = EducationPage;

},{"../../../constants":2,"../../lib/web-page":4}],6:[function(require,module,exports){
"use strict";
const runPage = require("../../run-page");
const EducationPage = require("./education");
runPage(EducationPage);

},{"../../run-page":7,"./education":5}],7:[function(require,module,exports){
"use strict";

const objectHtmlRenderer = require("object-to-html-renderer")
const Template = require("./template/template");

module.exports = function runPage(PageComponent) {
    const template = new Template({ page: new PageComponent() });
    objectHtmlRenderer.setRenderCycleRoot(template);
    objectHtmlRenderer.renderCycle();
};

},{"./template/template":9,"object-to-html-renderer":3}],8:[function(require,module,exports){
"use strict";

const { images_url } = require("../../../constants");

const NAV_MENU_ITEMS = [
    { url: "/games/", text: "Jeux" },
    {
        url: "/education/",
        text: "Pédagogie",
        // submenu: [
        //     { url: "/gamedev", text: "Création de jeux vidéo" },
        // ]
    },
    { url: "/software-development/", text: "Software" }
];

class NavBar {
    constructor() {
        this.initEventHandlers();
    }

    handleBurgerClick() {
        document.getElementById("nav-menu-list").classList.toggle("responsive-show");
    }

    initEventHandlers() {
        window.addEventListener("click", event => {
            if (
                event.target.id !== "nav-menu-list" &&
                !event.target.classList.contains("burger") &&
                !event.target.parentNode.classList.contains("burger")
            ) {
                document.getElementById("nav-menu-list").classList.remove("responsive-show");
            }
        });
    }

    renderHome() {
        return {
            tag: "div",
            class: "home",
            contents: [
                {
                    tag: "a",
                    href: "/",
                    contents: [
                        {
                            tag: "img",
                            alt: "Logo Kuadrado",
                            src: `${images_url}logo_kuadrado.svg`,
                        },
                        {
                            tag: "img",
                            alt: "Kuadrado Software",
                            class: "logo-text",
                            src: `${images_url}logo_kuadrado_txt.svg`,
                        },
                    ],
                },
            ],
        };
    }

    renderMenu(menuItemsArray, isSubmenu = false, parentUrl = "") {
        return {
            tag: "ul",
            id: "nav-menu-list",
            class: isSubmenu ? "submenu" : "",
            contents: menuItemsArray.map(item => {
                const { url, text, submenu } = item;
                const href = `${parentUrl}${url}`;
                return {
                    tag: "li",
                    class: !isSubmenu && window.location.pathname === href ? "active" : "",
                    contents: [
                        {
                            tag: "a",
                            href,
                            contents: text,
                        },
                    ].concat(submenu ? [this.renderMenu(submenu, true, url)] : []),
                };
            }),
        };
    }

    renderResponsiveBurger() {
        return {
            tag: "div",
            class: "burger",
            onclick: this.handleBurgerClick.bind(this),
            contents: [{ tag: "span", contents: "···" }],
        };
    }

    render() {
        return {
            tag: "nav",
            contents: [
                this.renderHome(),
                this.renderResponsiveBurger(),
                this.renderMenu(NAV_MENU_ITEMS),
            ],
        };
    }
}

module.exports = NavBar;

},{"../../../constants":2}],9:[function(require,module,exports){
"use strict";

const { in_construction } = require("../../config");
const { images_url } = require("../../constants");
const NavBar = require("./components/navbar");

class Template {
    constructor(props) {
        this.props = props;
    }
    render() {
        return {
            tag: "main",
            contents: [
                {
                    tag: "header",
                    contents: [new NavBar().render()],
                },
                in_construction && {
                    tag: "section",
                    class: "warning-banner",
                    contents: [
                        {
                            tag: "strong",
                            class: "page-contents-center",
                            contents: "Site en construction ...",
                        },
                    ],
                },
                {
                    tag: "section",
                    id: "page-container",
                    contents: [this.props.page.render()],
                },
                {
                    tag: "footer",
                    contents: [
                        {
                            tag: "div",
                            class: "logo",
                            contents: [
                                {
                                    tag: "img",
                                    alt: `logo Kuadrado`,
                                    src: `${images_url}logo_kuadrado.svg`,
                                },
                                {
                                    tag: "img",
                                    class: "text-logo",
                                    alt: "Kuadrado Software",
                                    src: `${images_url}logo_kuadrado_txt.svg`,
                                },
                            ],
                        },
                        {
                            tag: "span",
                            contents: "32 rue Simon Vialet, 07240 Vernoux en Vivarais. Ardèche, France",
                        },
                        {
                            tag: "div",
                            contents: [
                                { tag: "strong", contents: "<blue>Contact : </blue>" },
                                {
                                    tag: "a",
                                    href: "mailto:contact@kuadrado-software.fr",
                                    contents: "contact@kuadrado-software.fr",
                                },
                            ],
                        },
                        {
                            tag: "div",
                            class: "social",
                            contents: [
                                {
                                    tag: "strong",
                                    contents: "<blue>Sur les réseaux : </blue>",
                                },
                                {
                                    tag: "a",
                                    href: "https://www.linkedin.com/company/kuadrado-software",
                                    target: "_blank",
                                    contents: "in",
                                    title: "Linkedin",
                                },
                                {
                                    tag: "a",
                                    href: "https://twitter.com/KuadradoSoft",
                                    target: "_blank",
                                    contents: "t",
                                    title: "Twitter",
                                    style_rules: { fontFamily: "serif" },
                                },
                            ],
                        },
                        {
                            tag: "span",
                            contents: `Copyright © ${new Date()
                                .getFullYear()} Kuadrado Software | 
                                Toutes les images du site ont été réalisées par mes soins et peuvent être réutilisées pour un usage personnel.`,
                        },
                    ],
                },
            ],
        };
    }
}

module.exports = Template;

},{"../../config":1,"../../constants":2,"./components/navbar":8}]},{},[6]);