header.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. var m = require('mithril');
  2. var _dbs = require('./dbs');
  3. var _i18n = require('./i18n');
  4. var markdown = require('markdown-it')()
  5. .use(require('markdown-it-footnote'));
  6. // import * as i18next from 'i18next';
  7. // __ __ __
  8. // / / / /__ ____ _____/ /__ _____
  9. // / /_/ / _ \/ __ `/ __ / _ \/ ___/
  10. // / __ / __/ /_/ / /_/ / __/ /
  11. // /_/ /_/\___/\__,_/\__,_/\___/_/
  12. module.exports = {
  13. // onupdate(vn){
  14. // // console.log("Header onupdate : vn", vn);
  15. // },
  16. view(vn){
  17. // console.log("Header view : vn", vn);
  18. return m('header', [
  19. m('hgroup', [
  20. m('h1', 'Ethica'),
  21. m('h2', 'Spinoza (1632-1677)')
  22. ]),
  23. m('div', {'id':"menus"}, [
  24. m(_PartsNav),
  25. m(_RouteMenu),
  26. m(_LangMenu)
  27. ])
  28. ]);
  29. }
  30. }
  31. // ____ __
  32. // / __ \____ ______/ /______ ____ ___ ___ ____ __ __
  33. // / /_/ / __ `/ ___/ __/ ___/ / __ `__ \/ _ \/ __ \/ / / /
  34. // / ____/ /_/ / / / /_(__ ) / / / / / / __/ / / / /_/ /
  35. // /_/ \__,_/_/ \__/____/ /_/ /_/ /_/\___/_/ /_/\__,_/
  36. var _PartsNav = {
  37. view(vn){
  38. var lang = m.route.param('lang');
  39. // console.log('partsmenu', lang);
  40. return m('nav', {id:'parts-nav'}, [
  41. // TODO: replaced labels with localized content
  42. m('h3', _i18n.t('Parts')),
  43. m('ul', _dbs.data[lang].map(function(p){
  44. // console.log("anchors, part", p);
  45. if(p.id !== "intro"){
  46. return m('li', [
  47. m('a', {'href':'#'+p.id}, m.trust(markdown.renderInline(p.title)))
  48. ]);
  49. }
  50. })
  51. )
  52. ]);
  53. }
  54. };
  55. // ____ __
  56. // / __ \____ __ __/ /____ ____ ___ ___ ____ __ __
  57. // / /_/ / __ \/ / / / __/ _ \ / __ `__ \/ _ \/ __ \/ / / /
  58. // / _, _/ /_/ / /_/ / /_/ __/ / / / / / / __/ / / / /_/ /
  59. // /_/ |_|\____/\__,_/\__/\___/ /_/ /_/ /_/\___/_/ /_/\__,_/
  60. var _RouteMenu = {
  61. view(){
  62. var lang = m.route.param('lang');
  63. var path = m.route.get().match(/^(\/[^\/]+)(\/[^\/|#]+)(.*)$/);
  64. // console.log('Route menu Path', path);
  65. return m('nav', {id:'routes'}, [
  66. // TODO: replaced labels with localized content
  67. m('h3', _i18n.t('Mode')),
  68. m('ul', [
  69. m('li', m('a', {
  70. 'href':`/${lang}/text${path[3]}`,
  71. oncreate : m.route.link,
  72. onupdate : m.route.link
  73. }, _i18n.t("Text"))),
  74. m('li', m('a', {
  75. 'href':`/${lang}/connections${path[3]}`,
  76. oncreate : m.route.link,
  77. onupdate : m.route.link
  78. }, _i18n.t("Connections"))),
  79. ])
  80. ]);
  81. }
  82. }
  83. // __ __ ___
  84. // / / ____ _____ ____ _/ |/ /__ ____ __ __
  85. // / / / __ `/ __ \/ __ `/ /|_/ / _ \/ __ \/ / / /
  86. // / /___/ /_/ / / / / /_/ / / / / __/ / / / /_/ /
  87. // /_____/\__,_/_/ /_/\__, /_/ /_/\___/_/ /_/\__,_/
  88. // /____/
  89. var _LangMenu = {
  90. view(){
  91. var path = m.route.get().match(/^\/[^\/]+(.+)$/);
  92. // console.log('Lang menu Path', path);
  93. // create ul dom
  94. // console.log("Header _LangMenu view : i18next", i18next);
  95. return m('nav', {id:'languages'}, [
  96. // TODO: replaced labels with localized content
  97. m('h3', _i18n.t('Language')),
  98. m('ul', _dbs.langs.map(lang => {
  99. // create li dom for each lang link
  100. return m('li', m('a', {
  101. 'lang':lang.lc,
  102. 'href':`/${lang.lc}${path[1]}`,
  103. oncreate : m.route.link,
  104. onupdate : m.route.link
  105. }, lang.label)
  106. );
  107. }))
  108. ]);
  109. }
  110. }