header.js 3.6 KB

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