peers_view.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. const peersView = async ({ peers, connectedPeers }) => {
  2. const { form, button, div, h2, p, section, ul, li, a, br } = require("../server/node_modules/hyperaxe");
  3. const { template, i18n } = require('./main_views');
  4. const startButton = form({ action: "/settings/conn/start", method: "post" }, button({ type: "submit" }, i18n.startNetworking));
  5. const restartButton = form({ action: "/settings/conn/restart", method: "post" }, button({ type: "submit" }, i18n.restartNetworking));
  6. const stopButton = form({ action: "/settings/conn/stop", method: "post" }, button({ type: "submit" }, i18n.stopNetworking));
  7. const syncButton = form({ action: "/settings/conn/sync", method: "post" }, button({ type: "submit" }, i18n.sync));
  8. const connButtons = [startButton, restartButton, stopButton, syncButton];
  9. const renderPeerList = (list) =>
  10. list.map(([, data]) =>
  11. li(
  12. data.name, br,
  13. a({ href: `/author/${encodeURIComponent(data.key)}` }, data.key), br, br
  14. )
  15. );
  16. return template(
  17. i18n.peers,
  18. section(
  19. div({ class: 'tags-header' },
  20. h2(i18n.peers),
  21. p(i18n.peerConnectionsIntro)
  22. ),
  23. div({ class: "conn-actions" }, ...connButtons),
  24. div({ class: "peers-list" },
  25. h2(`${i18n.online} (${connectedPeers.length})`),
  26. connectedPeers.length > 0 ? ul(renderPeerList(connectedPeers)) : p(i18n.noConnections),
  27. h2(`${i18n.offline} (${peers.length})`),
  28. peers.length > 0 ? ul(renderPeerList(peers)) : p(i18n.noDiscovered),
  29. p(i18n.connectionActionIntro)
  30. )
  31. )
  32. );
  33. };
  34. exports.peersView = peersView;