Files
app.ethica-spinoza.net/assets/modules/header.js
T

117 lines
3.4 KiB
JavaScript

var m = require('mithril');
var _dbs = require('./dbs');
var _i18n = require('./i18n');
var markdown = require('markdown-it')()
.use(require('markdown-it-footnote'));
// import * as i18next from 'i18next';
// __ __ __
// / / / /__ ____ _____/ /__ _____
// / /_/ / _ \/ __ `/ __ / _ \/ ___/
// / __ / __/ /_/ / /_/ / __/ /
// /_/ /_/\___/\__,_/\__,_/\___/_/
module.exports = {
// onupdate(vn){
// // console.log("Header onupdate : vn", vn);
// },
view(vn){
// console.log("Header view : vn", vn);
return m('header', [
m('hgroup', [
m('h1', 'Ethica'),
m('h2', 'Benedictus Spinoza')
]),
m('div', {'id':"menus"}, [
m(_PartsNav),
m(_RouteMenu),
m(_LangMenu)
])
]);
}
}
// ____ __
// / __ \____ ______/ /______ ____ ___ ___ ____ __ __
// / /_/ / __ `/ ___/ __/ ___/ / __ `__ \/ _ \/ __ \/ / / /
// / ____/ /_/ / / / /_(__ ) / / / / / / __/ / / / /_/ /
// /_/ \__,_/_/ \__/____/ /_/ /_/ /_/\___/_/ /_/\__,_/
var _PartsNav = {
view(vn){
var lang = m.route.param('lang');
// console.log('partsmenu', lang);
return m('nav', {id:'parts-nav'}, [
// TODO: replaced labels with localized content
m('h3', _i18n.t('Parts')),
m('ul', _dbs.data[lang].map(function(p){
// console.log("anchors, part", p);
if(p.id !== "intro"){
return m('li', [
m('a', {'href':'#'+p.id}, m.trust(markdown.renderInline(p.title)))
]);
}
})
)
]);
}
};
// ____ __
// / __ \____ __ __/ /____ ____ ___ ___ ____ __ __
// / /_/ / __ \/ / / / __/ _ \ / __ `__ \/ _ \/ __ \/ / / /
// / _, _/ /_/ / /_/ / /_/ __/ / / / / / / __/ / / / /_/ /
// /_/ |_|\____/\__,_/\__/\___/ /_/ /_/ /_/\___/_/ /_/\__,_/
var _RouteMenu = {
view(){
var lang = m.route.param('lang');
var path = m.route.get().match(/^(\/[^\/]+)(\/[^\/|#]+)(.*)$/);
// console.log('Route menu Path', path);
return m('nav', {id:'routes'}, [
// TODO: replaced labels with localized content
m('h3', _i18n.t('Mode')),
m('ul', [
m('li', m('a', {
'href':`/${lang}/text${path[3]}`,
oncreate : m.route.link,
onupdate : m.route.link
}, _i18n.t("Text"))),
m('li', m('a', {
'href':`/${lang}/connections${path[3]}`,
oncreate : m.route.link,
onupdate : m.route.link
}, _i18n.t("Connections"))),
])
]);
}
}
// __ __ ___
// / / ____ _____ ____ _/ |/ /__ ____ __ __
// / / / __ `/ __ \/ __ `/ /|_/ / _ \/ __ \/ / / /
// / /___/ /_/ / / / / /_/ / / / / __/ / / / /_/ /
// /_____/\__,_/_/ /_/\__, /_/ /_/\___/_/ /_/\__,_/
// /____/
var _LangMenu = {
view(){
var path = m.route.get().match(/^\/[^\/]+(.+)$/);
// console.log('Lang menu Path', path);
// create ul dom
// console.log("Header _LangMenu view : i18next", i18next);
return m('nav', {id:'languages'}, [
// TODO: replaced labels with localized content
m('h3', _i18n.t('Language')),
m('ul', _dbs.langs.map(lang => {
// create li dom for each lang link
return m('li', m('a', {
'lang':lang.lc,
'href':`/${lang.lc}${path[1]}`,
oncreate : m.route.link,
onupdate : m.route.link
}, lang.label)
);
}))
]);
}
}