Skip to content

Commit 525c1d7

Browse files
committed
2.3.0 Feedback
1 parent aa42e27 commit 525c1d7

File tree

5 files changed

+161
-20
lines changed

5 files changed

+161
-20
lines changed

index.html

+8
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,14 @@ <h2 data-lang="review.header"></h2>
371371
<div class="module _hidden" data-module="docket">
372372
<div class="-eggs"></div>
373373
<h2 class="-text" data-lang="docket.done"></h2>
374+
<div class="feedback">
375+
<h3 class="-text" data-lang="docket.feedback"></h3>
376+
<a class="-send" href="#" data-feedback="-2" data-lang="docket.toosoft"></a>
377+
<a class="-send" href="#" data-feedback="-1" data-lang="docket.soft"></a><br>
378+
<a class="-send -perfect" href="#" data-feedback="0" data-lang="docket.perfect"></a><br>
379+
<a class="-send" href="#" data-feedback="1" data-lang="docket.hard"></a>
380+
<a class="-send" href="#" data-feedback="2" data-lang="docket.toohard"></a>
381+
</div>
374382
</div>
375383
</div>
376384
</main>

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "eggup",
3-
"version": "2.0.0",
3+
"version": "2.3.0",
44
"description": "Order breakfast eggs at the Silverspin office",
55
"main": "server.js",
66
"scripts": {
@@ -12,7 +12,7 @@
1212
"url": "git+https://github.com/ljungmark/eggup-node.git"
1313
},
1414
"author": "twitter.com/ljungmark",
15-
"license": "Creative Commons Attribution-NonCommercial-ShareAlike 3.0 (CC BY-NC-SA 3.0)",
15+
"license": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 (CC BY-NC-SA 4.0)",
1616
"bugs": {
1717
"url": "https://github.com/ljungmark/eggup-node/issues"
1818
},
@@ -26,7 +26,7 @@
2626
"passport": "^0.3.2",
2727
"passport-facebook": "^2.1.1",
2828
"passport-github2": "^0.1.10",
29-
"passport-google-oauth20": "^1.0.0",
29+
"passport-linkedin": "^1.0.0",
3030
"passport-reddit": "^0.2.4",
3131
"passport-spotify": "^0.3.1",
3232
"passport-steam": "^1.0.8",

server.js

+44-1
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,7 @@ app.post('/synchronize', (request, response) => {
370370
'past_hard': null,
371371
'quantity': 0,
372372
'variant': 0,
373+
'feedback': null,
373374
'tokenstamp': null,
374375
'heap_1': 0,
375376
'heap_2': 0,
@@ -401,7 +402,7 @@ app.post('/synchronize', (request, response) => {
401402
model.hardboiled = results[0].hardboiled;
402403
}
403404

404-
sql = 'SELECT date, quantity, variant FROM orders WHERE token = ? AND DATE(date) = ?',
405+
sql = 'SELECT date, quantity, variant, feedback FROM orders WHERE token = ? AND DATE(date) = ?',
405406
values = [request.user.token, date];
406407
sql = mysql.format(sql, values);
407408

@@ -411,6 +412,7 @@ app.post('/synchronize', (request, response) => {
411412
if (results.length) {
412413
model.quantity = results[0].quantity;
413414
model.variant = results[0].variant;
415+
model.feedback = results[0].feedback;
414416
model.tokenstamp = results[0].date.substring(0, 10);
415417
}
416418

@@ -774,6 +776,47 @@ app.post('/controller', (request, response) => {
774776
});
775777
});
776778

779+
780+
781+
/**
782+
Recieve feedback
783+
784+
Example
785+
{
786+
'result': false,
787+
}
788+
*/
789+
app.post('/feedback', (request, response) => {
790+
const date = get_date();
791+
792+
const model = {
793+
'result': false
794+
}
795+
796+
let value = request.body.value;
797+
798+
let check = new Promise(function(resolve, reject) {
799+
sql = 'UPDATE orders SET feedback = ? WHERE token = ? AND DATE(date) = ?';
800+
sql = mysql.format(sql, [value, request.user.token, date]);
801+
802+
pool.query(sql, function (error, results, fields) {
803+
if (error) reject();
804+
805+
if (results.affectedRows) {
806+
model.result = true;
807+
808+
resolve();
809+
} else {
810+
reject();
811+
}
812+
});
813+
}).then(function(exists) {
814+
response.send(JSON.stringify(model));
815+
}).catch(function() {
816+
response.send(JSON.stringify(model));
817+
});
818+
});
819+
777820
/**
778821
* Set up broadcasting emitters
779822
*/

static/eggup.css

+36
Original file line numberDiff line numberDiff line change
@@ -1188,6 +1188,42 @@ h2 {
11881188
width: 100%;
11891189
}
11901190

1191+
.feedback .-send {
1192+
background: #ffffff;
1193+
border: #666666 2px solid;
1194+
border-radius: 6px;
1195+
color: #222222;
1196+
cursor: pointer;
1197+
display: inline-block;
1198+
margin: 0;
1199+
overflow: hidden;
1200+
padding: 8px 10px 12px;
1201+
position: relative;
1202+
text-decoration: none;
1203+
transition: all .5s ease;
1204+
}
1205+
.feedback .-send.-perfect {
1206+
margin: 10px 0;
1207+
padding: 16px 36px 17px;
1208+
}
1209+
.feedback .-send._confirmed {
1210+
background: #ffeb3b;
1211+
}
1212+
.feedback .-send:after {
1213+
backface-visibility: hidden;
1214+
background-image: repeating-linear-gradient(135deg, #666, #666 1px, transparent 2px, transparent 5px);
1215+
background-size: 7px 7px;
1216+
border-top: 1px solid #666;
1217+
bottom: 0;
1218+
content: '';
1219+
display: block;
1220+
height: 3px;
1221+
left: 0;
1222+
position: absolute;
1223+
width: 100%;
1224+
-webkit-backface-visibility: hidden;
1225+
}
1226+
11911227
.dancing {
11921228
display: none;
11931229
left: 50%;

static/eggup.js

+70-16
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,24 @@ Eggup.prototype.synchronize = function() {
383383

384384
if (startdate < current_date) {
385385
/** Countdown is finished */
386+
if (json.quantity == 0) {
387+
egg_markup = `
388+
<div class="egg _docket">
389+
<div class="yolk">
390+
<div class="face">
391+
<div class="eyes"></div>
392+
<div class="mouth"></div>
393+
</div>
394+
</div>
395+
</div>`;
396+
397+
document.querySelector('.-eggs').innerHTML = egg_markup;
398+
document.querySelector('.feedback').parentNode.removeChild(document.querySelector('.feedback'));
399+
} else {
400+
const valid_feedback = ['-2', '-1', '0', '1', '2'];
401+
if (valid_feedback.includes(json.feedback)) document.querySelector(`.feedback .-send[data-feedback="${json.feedback}"]`).classList.add('_confirmed');
402+
}
403+
386404
instance.load('docket');
387405
} else {
388406
/** There's still time left on the timer */
@@ -415,7 +433,7 @@ Eggup.prototype.synchronize = function() {
415433
});
416434
});
417435

418-
console.log('%c Eggup 2.2.8 ', [
436+
console.log('%c Eggup 2.3.0 ', [
419437
'background: linear-gradient(-180deg, #44b1e8, #3098de)',
420438
'border-radius: 3px',
421439
'box-shadow: 0 1px 0 0 rgba(46,86,153,.15), inset 0 1px 0 0 rgba(46,86,153,.1), inset 0 -1px 0 0 rgba(46,86,153,.4);',
@@ -637,23 +655,11 @@ Eggup.prototype.load = function(target_module) {
637655
/** Finish all map nodes when orders are done */
638656
(target_module == 'docket') ? eggup.map(target_module_index + 1) : eggup.map(target_module_index);
639657

640-
if (target_module == 'docket' && !document.querySelector('.egg._docket')) {
658+
if (target_module == 'docket') {
641659
if (document.querySelector('.wrapper > .egg')) {
642660
document.querySelector('.wrapper').removeChild(document.querySelector('.egg'));
643661
clearTimeout(window.bubble);
644662
}
645-
646-
egg_markup = `
647-
<div class="egg _docket">
648-
<div class="yolk">
649-
<div class="face">
650-
<div class="eyes"></div>
651-
<div class="mouth"></div>
652-
</div>
653-
</div>
654-
</div>`;
655-
656-
document.querySelector('.-eggs').innerHTML = egg_markup;
657663
}
658664

659665
/** Never load a module while not scrolled to the top */
@@ -884,7 +890,13 @@ Eggup.prototype.i18n = function(operation = 'get', pointer = null) {
884890
'done': 'All done'
885891
},
886892
'docket': {
887-
'done': 'The eggs are done, enjoy!'
893+
'done': 'The eggs are done, enjoy!',
894+
'feedback': 'What\'d you think of the eggs?',
895+
'toosoft': 'Way too soft boiled',
896+
'soft': 'A bit too soft boiled',
897+
'perfect': 'Perfect',
898+
'hard': 'A bit too hard boiled',
899+
'toohard': 'Way too hard boiled'
888900
}
889901
},
890902
/** Swedish */
@@ -959,7 +971,13 @@ Eggup.prototype.i18n = function(operation = 'get', pointer = null) {
959971
'done': 'Färdiga'
960972
},
961973
'docket': {
962-
'done': 'Äggen är klara, hugg in!'
974+
'done': 'Äggen är klara, hugg in!',
975+
'feedback': 'Vad tyckte du om dina ägg idag?',
976+
'toosoft': 'Alldeles för löskokta',
977+
'soft': 'Lite för löskokta',
978+
'perfect': 'Perfekt!',
979+
'hard': 'Lite för hårdkokta',
980+
'toohard': 'Alldeles för hårdkokta'
963981
}
964982
}
965983
};
@@ -1861,6 +1879,42 @@ document.addEventListener('DOMContentLoaded', function() {
18611879
return false;
18621880
};
18631881

1882+
document.querySelectorAll('.feedback').forEach(element => {
1883+
element.onclick = (event) => {
1884+
if (eggup.module != 'docket') return false;
1885+
1886+
let value = event.target.dataset.feedback;
1887+
1888+
let feedback_request = new Promise(function(resolve, reject) {
1889+
fetch('/feedback', {
1890+
method: 'post',
1891+
headers: {
1892+
'Content-Type': 'application/x-www-form-urlencoded'
1893+
},
1894+
body: serialize({ 'value': value }),
1895+
credentials: 'include'
1896+
}).then(function(response) {
1897+
return response.json().then(function(json) {
1898+
resolve(json);
1899+
});
1900+
});
1901+
});
1902+
1903+
feedback_request.then((response) => {
1904+
if (Object.values(response)[0] == true) {
1905+
1906+
document.querySelectorAll('.feedback .-send._confirmed').forEach(element => element.classList.remove(`_confirmed`));
1907+
event.target.classList.add(`_confirmed`);
1908+
1909+
} else {
1910+
eggup.error();
1911+
}
1912+
});
1913+
1914+
return false;
1915+
};
1916+
});
1917+
18641918
/** Add shadow on containers when scrolled */
18651919
document.querySelectorAll('.container').forEach(function(element) {
18661920
let current_element = element;

0 commit comments

Comments
 (0)