1 // Javascript for index page: mostly counters updating
10 sortedCounts: function () {
11 const variantsCounts
= variantArray
.map( v
=> {
15 count: this.counts
[v
.name
] || 0,
18 return variantsCounts
.sort((a
,b
) => {
19 if (a
.count
!= b
.count
)
20 return b
.count
- a
.count
;
21 // Else, alphabetic ordering
22 return a
.name
.localeCompare(b
.name
);
27 const url
= socketUrl
;
28 const sid
= getRandString();
29 this.conn
= new WebSocket(url
+ "/?sid=" + sid
+ "&page=index");
30 const socketMessageListener
= msg
=> {
31 const data
= JSON
.parse(msg
.data
);
32 if (data
.code
== "counts")
33 this.counts
= data
.counts
;
34 else if (data
.code
== "increase")
35 this.counts
[data
.vname
]++;
36 else if (data
.code
== "decrease")
37 this.counts
[data
.vname
]--;
39 const socketCloseListener
= () => {
40 this.conn
= new WebSocket(url
+ "/?sid=" + sid
+ "&page=index");
41 this.conn
.addEventListener('message', socketMessageListener
);
42 this.conn
.addEventListener('close', socketCloseListener
);
44 this.conn
.onmessage
= socketMessageListener
;
45 this.conn
.onclose
= socketCloseListener
;
49 document
.onkeydown
= event
=> {
50 // Is it Back or Esc? If yes, apply action on current word
51 if (event
.keyCode
== 8) //Back
53 event
.preventDefault();
54 this.curPrefix
= this.curPrefix
.slice(0,-1);
56 else if (event
.keyCode
== 27) //Esc
58 event
.preventDefault();
61 // Is it alphanumeric? If yes, stack it
62 else if (_
.range(48,58).includes(event
.keyCode
)
63 || _
.range(65,91).includes(event
.keyCode
)
64 || _
.range(97,123).includes(event
.keyCode
))
66 let newChar
= String
.fromCharCode(event
.keyCode
);
67 this.curPrefix
+= this.curPrefix
.length
==0
68 ? newChar
.toUpperCase()
69 : newChar
.toLowerCase();
71 // ...ignore everything else
73 // Show welcome dialog box if "first visit"
74 const visited
= getCookie("visited");
75 if (!visited
|| visited
!== "1")
76 document
.getElementById("modal-b4welcome").checked
= true;
79 showWelcomeMsg: function() {
80 document
.getElementById("modal-b4welcome").checked
= false;
81 document
.getElementById("modal-welcome").checked
= true;
83 markAsVisited: function() {
84 setCookie('visited', '1');
85 document
.getElementById('modal-welcome').checked
= false;