apps.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import { readFileSync } from 'fs';
  2. import { appCard } from '../components/appCard.js';
  3. let templatesJSON = readFileSync('./templates.json');
  4. let templates = JSON.parse(templatesJSON).templates;
  5. templates = templates.sort((a, b) => {
  6. if (a.name < b.name) {
  7. return -1;
  8. }
  9. });
  10. export const Apps = (req, res) => {
  11. let page = Number(req.params.page) || 1;
  12. let list_start = (page-1)*28;
  13. let list_end = (page*28);
  14. let last_page = Math.ceil(templates.length/28);
  15. let prev = '/apps/' + (page-1);
  16. let next = '/apps/' + (page+1);
  17. if (page == 1) {
  18. prev = '/apps/' + (page);
  19. }
  20. if (page == last_page) {
  21. next = '/apps/' + (page);
  22. }
  23. let apps_list = '';
  24. for (let i = list_start; i < list_end && i < templates.length; i++) {
  25. let app_card = appCard(templates[i]);
  26. apps_list += app_card;
  27. }
  28. res.render("apps", {
  29. name: req.session.user,
  30. role: req.session.role,
  31. avatar: req.session.avatar,
  32. list_start: list_start + 1,
  33. list_end: list_end,
  34. app_count: templates.length,
  35. prev: prev,
  36. next: next,
  37. apps_list: apps_list
  38. });
  39. }
  40. export const appSearch = async (req, res) => {
  41. let search = req.body.search.split(' ');
  42. let apps_list = '';
  43. let results = [];
  44. let page = Number(req.query.page) || 1;
  45. let list_start = (page - 1) * 28;
  46. let list_end = (page * 28);
  47. let last_page = Math.ceil(templates.length / 28);
  48. let prev = '/apps?page=' + (page - 1);
  49. let next = '/apps?page=' + (page + 1);
  50. if (page == 1) {
  51. prev = '/apps?page=' + (page);
  52. }
  53. if (page == last_page) {
  54. next = '/apps?page=' + (page);
  55. }
  56. function searchTemplates(word) {
  57. for (let i = 0; i < templates.length; i++) {
  58. if ((templates[i].description.includes(word)) || (templates[i].name.includes(word)) || (templates[i].title.includes(word))) {
  59. results.push(templates[i]);
  60. }
  61. }
  62. }
  63. searchTemplates(search);
  64. for (let i = 0; i < results.length; i++) {
  65. let app_card = appCard(results[i]);
  66. apps_list += app_card;
  67. }
  68. res.render("apps", {
  69. name: req.session.user,
  70. role: req.session.role,
  71. avatar: req.session.avatar,
  72. list_start: list_start + 1,
  73. list_end: list_end,
  74. app_count: templates.length,
  75. prev: prev,
  76. next: next,
  77. apps_list: apps_list
  78. });
  79. }