Advertisement
Guest User

Untitled

a guest
Apr 11th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.66 KB | None | 0 0
  1. const mysql = require("mysql");
  2. const express = require('express');
  3. const app = express();
  4. const server = require('http').createServer(app);
  5. const io = require('socket.io').listen(server);
  6.  
  7. const util = require('util');
  8. app.use('/', express.static('www'));
  9.  
  10. let pl = require('mysql/lib/Pool');
  11. pl.prototype.getConnectionAsync = util.promisify(pl.prototype.getConnection);
  12. pl.prototype.queryAsync = util.promisify(pl.prototype.query);
  13. let cn = require('mysql/lib/Connection');
  14. cn.prototype.queryAsync = util.promisify(cn.prototype.query);
  15.  
  16. let c = mysql.createConnection({
  17. host: 'hercules.ii.fmph.uniba.sk',
  18. user: 'wa2',
  19. password: 'JzY8enG5h3nd3NIZ',
  20. database: 'wa2'
  21. });
  22.  
  23. c.queryAsync = util.promisify(c.query);
  24.  
  25.  
  26. c.connect();
  27.  
  28.  
  29. async function Init() {
  30. await c.queryAsync('CREATE TABLE IF NOT EXISTS `Participants_hornikova30` (\n' +
  31. ' `id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n' +
  32. ' `name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,\n' +
  33. ' `surname` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,\n' +
  34. ' PRIMARY KEY (`id`)\n' +
  35. ') ENGINE=InnoDB ROW_FORMAT=DYNAMIC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;\n')
  36. }
  37.  
  38. io.on('connect', socket => {
  39. console.log('Nový klient pripojený.');
  40.  
  41. socket.on('disconnect', msg => {
  42. console.log('Klient odpojený.', msg);
  43. });
  44. socket.on('error', error => {
  45. console.log('Chyba spojenia.', error.message);
  46. });
  47.  
  48.  
  49. socket.on('insert', async zs => {
  50. let {name, surname} = zs;
  51.  
  52. if (name.length > 0 && surname.length > 0) {
  53. let sql = 'INSERT INTO Participants_hornikova30 (name, surname) VALUES (?,?) ';
  54. sql = mysql.format(sql, [name, surname]);
  55. await c.queryAsync(sql);
  56.  
  57. let rows = await c.queryAsync("SELECT * FROM Participants_hornikova30");
  58. io.emit('refresh', rows);
  59. }
  60.  
  61. });
  62.  
  63. socket.on('select', async func => {
  64. let rows = await c.queryAsync("SELECT * FROM Participants_hornikova30");
  65. func(rows);
  66. });
  67.  
  68. socket.on('delete', async id => {
  69. let sql = 'DELETE FROM Participants_hornikova30 WHERE `id` = ?';
  70. sql = mysql.format(sql, [id]);
  71. await c.queryAsync(sql);
  72.  
  73. let rows = await c.queryAsync("SELECT * FROM Participants_hornikova30");
  74. io.emit('refresh', rows);
  75. });
  76.  
  77.  
  78. });
  79.  
  80. server.listen(9000, () => {
  81. Init();
  82. console.log('Listen on port 9000');
  83. });
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93. //NOVY SUBOR
  94.  
  95.  
  96. const $e = (elName, cl, parEl) => {
  97. const e = document.createElement(elName);
  98. if (cl) e.classList.add(cl);
  99. if (parEl) parEl.appendChild(e);
  100. return e;
  101. };
  102.  
  103.  
  104. var socket = io.connect();
  105.  
  106.  
  107. class UserList {
  108.  
  109. constructor(x, y, w = 330, h = 400) {
  110. var el, ro = this.root = $e('div', 'Main');
  111. ro.style.left = x + 'px';
  112. ro.style.top = y + 'px';
  113. ro.style.width = w + 'px';
  114. ro.style.height = h + 'px';
  115.  
  116. $e('div', 'Headline', ro).innerHTML = 'Zoznam účastníkov';
  117.  
  118. this.list = $e('div', 'List', ro);
  119.  
  120. el = $e('button', 'Button', ro);
  121. el.innerHTML = 'Registruj sa';
  122. el.addEventListener('mousedown', e => this.root.querySelector('.Formular').classList.toggle('Formular2'));
  123.  
  124. el = $e('div', 'Formular', ro);
  125. $e('div', '', el).innerHTML = 'Meno:';
  126. this.input1 = $e('input', null, el);
  127. $e('div', '', el).innerHTML = 'Priezvisko:';
  128. this.input2 = $e('input', null, el);
  129. el = $e('button', 'sendButton', el);
  130. el.innerHTML = 'Posli';
  131. el.addEventListener('mousedown', e => {
  132. this.root.querySelector('.Formular').classList.toggle('Formular2');
  133. this.send();
  134. this.input1.value = this.input2.value = '';
  135. });
  136.  
  137. document.body.appendChild(ro);
  138.  
  139. socket.on('refresh', db => this.refresh(db));
  140. socket.emit('select', db => this.refresh(db));
  141. }
  142.  
  143.  
  144. send() {
  145. socket.emit('insert', {'name': this.input1.value, 'surname': this.input2.value});
  146. }
  147.  
  148.  
  149. refresh(db) {
  150. this.list.innerHTML = '';
  151. db.forEach(r => {
  152. var el = $e('div', 'Row', this.list);
  153. el.innerHTML = r.name + ' ' + r.surname;
  154.  
  155. const span = $e('span', 'delButton', el);
  156. span.innerText = 'X';
  157. span.addEventListener('click', () => {
  158. socket.emit('delete', r.id);
  159. });
  160. // Sem doplnit kod.
  161.  
  162. });
  163. }
  164.  
  165. }
  166.  
  167.  
  168. window.addEventListener('load', () => {
  169. new UserList(20, 50);
  170. new UserList(450, 150);
  171. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement