]>
git.mar77i.info Git - hublib/blob - webroot/first/master.js
ada5f960ee0f2f70aac284d5296f099c6fdb3ede
4 var clients_list
= null;
7 common
.write(input_div
.previousSibling
, msg
);
10 function master_send(hub
, client_ids
, client_id
, obj
) {
11 obj
.client_ids
= client_ids
;
12 obj
.client_id
= client_id
;
13 hub
.send(JSON
.stringify(obj
));
16 function ClientsList() {
17 function Client(clients_list
, client_id
, name
) {
20 this.clients_list
= clients_list
;
22 this.get_label = function () {
23 return "client-" + this.id
.toString();
25 client_label
= this.get_label();
26 this.name
= name
|| client_label
;
28 this.li
= common
.tag("li")
29 this.checkbox
= common
.tag(
33 "id": "checkbox-" + client_label
,
37 this.li
.append(this.checkbox
);
38 clients_list
.ul
.append(this.li
);
39 this.set_name = function (new_name
) {
40 var old_name
= this.name
;
42 while (this.checkbox
.nextSibling
)
43 this.checkbox
.nextSibling
.remove();
44 this.checkbox
.parentNode
.append(document
.createTextNode(new_name
));
47 this.set_name(client_label
);
50 this.ul
= common
.tag("ul");
51 document
.body
.append(this.ul
);
53 this.append = function (client_id
) {
54 var client
= new Client(this, client_id
);
55 this.clients
[client_id
.toString()] = client
;
58 this.remove = function (client_id
) {
59 var client
= this.clients
[client_id
];
62 delete this.clients
[client_id
];
66 this.all = function () {
69 for (key
in this.clients
) {
70 result
.push(this.clients
[key
].id
);
74 this.selected = function () {
78 for (key
in this.clients
) {
79 client
= this.clients
[key
];
80 if (client
.checkbox
.checked
) {
81 result
.push(client
.id
);
90 clients_list
= new ClientsList();
91 input_div
= common
.tag("div");
92 input_div
.append(document
.createTextNode("MASTER "));
94 common
.input_with_keydown_event(
95 function (event
, target
, keycode
) {
96 if (keycode
!== "Enter" && keycode
!== "NumpadEnter") {
99 hub
.send(JSON
.stringify({
100 "client_ids": clients_list
.selected(),
102 "data": target
.value
,
104 write("MASTER: " + target
.value
);
110 document
.body
.append(common
.tag("div")); // output
111 document
.body
.append(input_div
);
112 write("connected to " + ws_uri
);
116 write("connection lost");
120 function join_leave_broadcast(hub
, client
, action
) {
124 write("[action]: " + client
.name
+ " " + action
+ "s");
125 master_send(hub
, clients_list
.all(), client
.id
, {
131 function message(msg
) {
132 var obj
= JSON
.parse(msg
.data
);
134 if (obj
.action
=== "join") {
135 join_leave_broadcast(this, clients_list
.append(obj
.client_id
), obj
.action
);
137 } else if (obj
.action
=== "leave") {
138 join_leave_broadcast(this, clients_list
.remove(obj
.client_id
), obj
.action
);
141 client
= clients_list
.clients
[obj
.client_id
.toString()];
143 if (obj
.action
== "set_name") {
147 " changes name to " +
150 master_send(this, clients_list
.all(), client
.id
, {
151 "action": "set_name",
152 "old_name": client
.name
,
155 client
.set_name(obj
.name
);
156 } else if (obj
.hasOwnProperty("data")) {
157 write(client
.name
+ " [" + client
.id
+ "]: " + obj
.data
);
158 master_send(this, clients_list
.all(), client
.id
, {
165 common
.setup(function () { new common
.HubClient(ws_uri
, open
, close
, message
); });