apps.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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 searchApps = async (req, res) => {
  41. let page = Number(req.query.page) || 1;
  42. let list_start = (page - 1) * 28;
  43. let list_end = (page * 28);
  44. let last_page = Math.ceil(templates.length / 28);
  45. let prev = '/apps?page=' + (page - 1);
  46. let next = '/apps?page=' + (page + 1);
  47. if (page == 1) {
  48. prev = '/apps?page=' + (page);
  49. }
  50. if (page == last_page) {
  51. next = '/apps?page=' + (page);
  52. }
  53. let apps_list = '';
  54. let search_results = [];
  55. let search = req.body.search;
  56. // split value of search into an array of words
  57. search = search.split(' ');
  58. try {console.log(search[0]);} catch (error) {}
  59. try {console.log(search[1]);} catch (error) {}
  60. try {console.log(search[2]);} catch (error) {}
  61. function searchTemplates(word) {
  62. for (let i = 0; i < templates.length; i++) {
  63. if ((templates[i].description.includes(word)) || (templates[i].name.includes(word)) || (templates[i].title.includes(word))) {
  64. search_results.push(templates[i]);
  65. }
  66. }
  67. // console.log(search_results);
  68. }
  69. searchTemplates(search);
  70. for (let i = 0; i < search_results.length; i++) {
  71. let app_card = appCard(search_results[i]);
  72. apps_list += app_card;
  73. }
  74. res.render("apps", {
  75. name: req.session.user,
  76. role: req.session.role,
  77. avatar: req.session.avatar,
  78. list_start: list_start + 1,
  79. list_end: list_end,
  80. app_count: templates.length,
  81. prev: prev,
  82. next: next,
  83. apps_list: apps_list
  84. });
  85. }