Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.69 KB | None | 0 0
  1. 'use strict';
  2. const path = require('path');
  3. const express = require('express');
  4. const http = require('http');
  5. const app = express();
  6. const portti = process.env.PORT || 3000;
  7. const host = process.env.HOST || 'localhost';
  8. const palvelin = http.createServer(app);
  9. //apufunktio helpottamaan palvelinvirheen lähettämistä
  10. const palvelinvirhe = res => res.status(500).render('virhesivu', {
  11. viesti: 'Palvelimen virhe'
  12. });
  13. const optiot = require(path.join(__dirname, 'tietovarasto', '/mopovarastoConfig.json'));
  14. const Mopokanta = require(path.join(__dirname, 'tietovarasto', '/mopovarasto.js'));
  15. const mopot = new Mopokanta(optiot);
  16. const valikkopolku = path.join(__dirname, 'valikko.html');
  17. app.set('view engine', 'ejs');
  18. app.set('views', path.join(__dirname, 'sivumallit'));
  19.  
  20. //julkiset resurssit käyttöön resurssit-kansion alta
  21. //kansiot resurssit ei merkitä linkanttavaan polkuun.
  22. //siis esimerkiksi polku EI ole /resurssit/tyylit/tyylit.css
  23. //vaan polku on /tyylit/tyylit.css
  24.  
  25. app.use(express.static(path.join(__dirname, 'resurssit')));
  26.  
  27. //otetaan lomaketiedon muunto automaattisesti käyttöön.
  28. //Näin ei tarvitse erikseen lisätä jokaiseen polkuun
  29.  
  30. app.use(express.urlencoded({extended: false}));
  31.  
  32. //lähettää valikon selaimeen
  33.  
  34. app.get('/', (req, res) => res.sendFile(valikkopolku));
  35.  
  36. //hakee mopovarastosta kaikki mopot ja lähettää ne selaimeen
  37. app.get('/kaikki', async (req, res) => {
  38. try {
  39. const tulos = await mopot.haeKaikki();
  40. res.render('haeKaikki', {
  41. mopot: tulos
  42. });
  43. } catch (virhe) {
  44. res.render('virhesivu', {
  45. viesti: virhe.message
  46. });
  47. }
  48. });
  49.  
  50. //lähettää hakulomakkeen selaimeen
  51. app.get('/hae', (req, res) => {
  52. res.render('haeMopo', {
  53. paaotsikko: 'mopon haku',
  54. otsikko: 'Syötä mopoId',
  55. toiminto: '/hae'
  56. });
  57. });
  58.  
  59. //hakee hakulomakkeelle syötettyä mopoId:tä vastaavan
  60. //mopo-olion mopovarastosta
  61. app.post('/hae', async (req, res) => {
  62. if (!req.body) {
  63. palvelinvirhe(res);
  64. } else {
  65. try {
  66. const tulos = await mopot.hae(req.body.mopoId);
  67. if (tulos.viesti) {
  68. res.render('tilasivu', {
  69. paaotsikko: 'Hakutulos',
  70. otsikko: 'Viesti',
  71. viesti: tulos.viesti
  72. });
  73. } else {
  74. res.render('hakutulos', {
  75. mopo: tulos
  76. });
  77. }
  78. } catch (virhe) {
  79. res.render('virhesivu', {
  80. viesti: virhe.message
  81. });
  82. }
  83. }
  84. });
  85.  
  86. //lähettää poistolomakkeen selaimeen
  87. app.get('/poista', (req, res) => {
  88. res.render('haeMopo', {
  89. paaotsikko: 'Mopon haku',
  90. otsikko: 'Syötä mopoId',
  91. toiminto: '/poista'
  92. });
  93. });
  94.  
  95. //Käsitellään lomakkeelta tuleva tieto ja suoritetaan poisto
  96. app.post('/poista', async (req, res) => {
  97. if (!req.body) {
  98. palvelinvirhe(res);
  99. } else {
  100. try {
  101. const tulos = await mopot.poista(req.body.mopoId);
  102. res.render('tilasivu', {
  103. paaotsikko: 'Poiston tulos',
  104. otsikko: 'Viesti',
  105. viesti: tulos.viesti
  106. });
  107. } catch (virhe) {
  108. res.render('virhesivu', {
  109. viesti: virhe.message
  110. });
  111. }
  112. }
  113. });
  114.  
  115. //lähettää lomakkeen selaimeen
  116. app.get('/lisaa', (req, res) => {
  117. res.render('lomake', {
  118. paaotsikko: 'mopon lisäys',
  119. otsikko: 'Syötä tiedot',
  120. toiminto: '/lisaa',
  121. mopoId: {
  122. arvo: '',
  123. vainluku: ''
  124. },
  125. merkki: {
  126. arvo: '',
  127. vainluku: ''
  128. },
  129. varastoLkm: {
  130. arvo: '',
  131. vainluku: ''
  132. },
  133. arvostelu: {
  134. arvo: '',
  135. vainluku: ''
  136. },
  137. huippunopeus: {
  138. arvo: '',
  139. vainluku: ''
  140. }
  141. });
  142. });
  143.  
  144. //käsittelee lomakkeelta tulevan tiedon ja vie mopovarastoon
  145. app.post('/lisaa', async (req, res) => {
  146. if (!req.body) {
  147. palvelinvirhe(res);
  148. } else {
  149. try {
  150. if (req.body.mopoId && req.body.merkki) {
  151. const tulos = await mopot.lisaa(req.body);
  152. res.render('tilasivu', {
  153. paaotsikko: 'Lisäyksen tulos',
  154. otsikko: 'Viesti',
  155. viesti: tulos.viesti
  156. });
  157. } else {
  158. res.redirect('/lisaa');
  159. }
  160. } catch (virhe) {
  161. res.render('virhesivu', {
  162. viesti: virhe.message
  163. });
  164. }
  165. }
  166. });
  167.  
  168. //lähettää lomakkeen selaimeen
  169. app.get('/paivita', (req, res) => {
  170. res.render('lomake', {
  171. paaotsikko: 'mopon päivitys',
  172. otsikko: 'Syötä tiedot',
  173. toiminto: '/paivita',
  174. mopoId: {
  175. arvo: '',
  176. vainluku: ''
  177. },
  178. merkki: {
  179. arvo: '',
  180. vainluku: 'readonly'
  181. },
  182. varastoLkm: {
  183. arvo: '',
  184. vainluku: 'readonly'
  185. },
  186. arvostelu: {
  187. arvo: '',
  188. vainluku: 'readonly'
  189. },
  190. huippunopeus: {
  191. arvo: '',
  192. vainluku: 'readonly'
  193. }
  194. });
  195. });
  196.  
  197. //hakee lomakkeelta tulevan mopoId:n perusteella mopon
  198. //ja lähettää mopon tiedoilla täytetyn lomakkeen selaimeen
  199. app.post('/paivita', async (req, res) => {
  200. if (!req.body) {
  201. palvelinvirhe(res);
  202. } else {
  203. try {
  204. const tulos = await mopot.hae(req.body.mopoId);
  205. if (tulos.viesti) {
  206. res.render('tilasivu', {
  207. paaotsikko: 'Hakutulos',
  208. otsikko: 'Viesti',
  209. viesti: tulos.viesti
  210. });
  211. } else {
  212. res.render('lomake', {
  213. paaotsikko: 'mopon päivitys',
  214. otsikko: 'Syötä tiedot',
  215. toiminto: '/paivitatiedot',
  216. mopoId: {
  217. arvo: tulos.mopoId,
  218. vainluku: 'readonly'
  219. },
  220. merkki: {
  221. arvo: tulos.merkki,
  222. vainluku: ''
  223. },
  224. varastoLkm: {
  225. arvo: tulos.varastoLkm,
  226. vainluku: ''
  227. },
  228. arvostelu: {
  229. arvo: tulos.arvostelu,
  230. vainluku: ''
  231. },
  232. huippunopeus: {
  233. arvo: tulos.huippunopeus,
  234. vainluku: ''
  235. }
  236. });
  237. }
  238. } catch (virhe) {
  239. console.log(virhe.message);
  240. res.render('virhesivu', {
  241. viesti: virhe.message
  242. });
  243. }
  244. }
  245. });
  246.  
  247. //päivittää mopovarastoon lomakkeelta tulevan
  248. //muokatun mopo - olion
  249. app.post('/paivitatiedot', async (req, res) => {
  250. if (!req.body) {
  251. palvelinvirhe(res);
  252. } else {
  253. try {
  254. const tulos = await mopot.paivita(req.body);
  255. res.render('tilasivu', {
  256. paaotsikko: 'Päivityksen tulos',
  257. otsikko: 'Viesti',
  258. viesti: tulos.viesti
  259. });
  260. } catch (virhe) {
  261. res.render('virhesivu', {
  262. viesti: virhe.message
  263. });
  264. }
  265. }
  266. });
  267.  
  268. palvelin.listen(portti, host, () =>
  269. console.log(`Palvelin ${host} palvelee portissa ${portti}.`)
  270. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement