apps.js 2.4 KB

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