header.js 3.7 KB

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