Conditions | 1 |
Paths | 2 |
Total Lines | 443 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | $(document).ready(function(){ |
||
4 | $('body').load('../public/assests/partials/app.html', function() { |
||
5 | $('body').append(pre); |
||
6 | |||
7 | |||
8 | var heightFrom; // global variable |
||
9 | // Websocket Connection Open |
||
10 | var conn = new WebSocket("ws://localhost:8080"); |
||
|
|||
11 | |||
12 | // For send Message to Web Socket Server |
||
13 | function sendTo(data) |
||
14 | { |
||
15 | conn.send(JSON.stringify(data)); |
||
16 | } |
||
17 | |||
18 | // For First time |
||
19 | function init() |
||
20 | { |
||
21 | var msg = { |
||
22 | "type": "OpenChat initiated..!" |
||
23 | }; |
||
24 | sendTo(msg); |
||
25 | } |
||
26 | |||
27 | conn.onopen = function() { |
||
28 | console.log("Connection established!"); |
||
29 | init(); |
||
30 | }; |
||
31 | |||
32 | // SideBar Load Request |
||
33 | function sidebarRequest() |
||
34 | { |
||
35 | var msg = { |
||
36 | "type": "Load Sidebar" |
||
37 | }; |
||
38 | sendTo(msg); |
||
39 | } |
||
40 | |||
41 | // Create Sidebar |
||
42 | function createSidebarElement(data, eleId) |
||
43 | { |
||
44 | // organising content according to time |
||
45 | $("#"+eleId).html(""); |
||
46 | var condition = data.length; |
||
47 | for (var i = 0; i < condition; i++) |
||
48 | { |
||
49 | |||
50 | var div1 = $("<div></div>").addClass("row sideBar-body"); |
||
51 | |||
52 | div1.attr({ |
||
53 | "id" : data[i].username |
||
54 | }); |
||
55 | |||
56 | var div2 = $("<div></div>").addClass("col-sm-3 col-xs-3 sideBar-avatar"); |
||
57 | var div3 = $("<div></div>").addClass("avatar-icon"); |
||
58 | var imgElement = $("<img>").attr({ |
||
59 | "src": "../public/assests/img/bg.png" |
||
60 | }); |
||
61 | div3.append(imgElement); |
||
62 | div2.append(div3); |
||
63 | div1.append(div2); |
||
64 | |||
65 | div2 = $("<div></div>").addClass("col-sm-9 col-xs-9 sideBar-main"); |
||
66 | div3 = $("<div></div>").addClass("row"); |
||
67 | var div4 = $("<div></div>").addClass("col-sm-8 col-xs-8 sideBar-name"); |
||
68 | var spanE = $("<span></span>").addClass("name-meta").text(data[i].name); |
||
69 | div4.append(spanE); |
||
70 | div3.append(div4); |
||
71 | |||
72 | div4 = $("<div></div>").addClass("col-sm-4 col-xs-4 pull-right sideBar-time"); |
||
73 | spanE = $("<span></span>").addClass("time-meta pull-right").text(data[i].time); |
||
74 | div4.append(spanE); |
||
75 | div3.append(div4); |
||
76 | div2.append(div3); |
||
77 | |||
78 | div1.append(div2); |
||
79 | $("#"+eleId).append(div1); |
||
80 | |||
81 | if (eleId === "message" && $("#text_reply").attr("name") == data[i].login_id) { |
||
82 | $("#"+data[i].username).addClass("active"); |
||
83 | } |
||
84 | } |
||
85 | } |
||
86 | |||
87 | |||
88 | // For updating Sidebar |
||
89 | function SideBar(msg) { |
||
90 | // Getting Div |
||
91 | if (msg != null) { |
||
92 | createSidebarElement(msg, "message"); |
||
93 | } |
||
94 | } |
||
95 | |||
96 | function toConversation() { |
||
97 | $(".side").addClass("hide"); |
||
98 | $(".message").addClass("show"); |
||
99 | $(".lowerBar").addClass("show"); |
||
100 | $(".reply-emojis").addClass("hide"); |
||
101 | $(".reply-recording").addClass("hide"); |
||
102 | } |
||
103 | |||
104 | function toSidebar() { |
||
105 | $(".side").removeClass("hide"); |
||
106 | $(".message").removeClass("show"); |
||
107 | $(".lowerBar").removeClass("show"); |
||
108 | $(".reply-emojis").removeClass("hide"); |
||
109 | $(".reply-recording").removeClass("hide"); |
||
110 | } |
||
111 | |||
112 | function width() { |
||
113 | if (window.innerWidth < 768) { |
||
114 | return true; |
||
115 | } |
||
116 | return false; |
||
117 | } |
||
118 | |||
119 | // Creating new Conversation or Loading Conversation |
||
120 | function newConversation(element, load) { |
||
121 | |||
122 | if (width()) { |
||
123 | toConversation(); |
||
124 | } |
||
125 | |||
126 | var msg = { |
||
127 | "details": element.id, |
||
128 | "load": load, |
||
129 | "type": "Initiated" |
||
130 | }; |
||
131 | sendTo(msg); |
||
132 | } |
||
133 | |||
134 | // Set Details |
||
135 | function setConversationDetails(details) { |
||
136 | $("#conversationHeading").html(""); |
||
137 | |||
138 | var headingEle = $("<div></div>").addClass("col-sm-2 col-md-1 col-xs-3 heading-avatar"); |
||
139 | var headingAva = $("<div></div>").addClass("heading-avatar-icon"); |
||
140 | var headingImg = $("<img>").attr({"src" : "../public/assests/img/ankit.png"}); |
||
141 | headingAva.append(headingImg); |
||
142 | headingEle.append(headingAva); |
||
143 | |||
144 | var headingEleName = $("<div></div>").addClass("col-sm-8 col-xs-7 heading-name"); |
||
145 | var headingNameMeta = $("<a></a>").addClass("heading-name-meta").text(details.name); |
||
146 | headingNameMeta.attr({ |
||
147 | "href": location.href.substring(0, location.href.lastIndexOf("/") + 1) + "account.php/" + details.username |
||
148 | }); |
||
149 | var headingOnline = $("<span></span>").addClass("heading-online"); |
||
150 | headingOnline.text(""); |
||
151 | if (details.login_status === "1") { |
||
152 | headingOnline.text("Online"); |
||
153 | } |
||
154 | headingEleName.append(headingNameMeta); |
||
155 | headingEleName.append(headingOnline); |
||
156 | |||
157 | var headingDot = $("<div></div>").addClass("col-sm-1 col-xs-1 heading-dot pull-right"); |
||
158 | var headingDotIcon = $("<i></i>").addClass("fa fa-ellipsis-v fa-2x").attr({"aria-hidden" : "true"}); |
||
159 | headingDot.append(headingDotIcon); |
||
160 | |||
161 | |||
162 | $("#conversationHeading").append(headingEle); |
||
163 | $("#conversationHeading").append(headingEleName); |
||
164 | $("#conversationHeading").append(headingDot); |
||
165 | |||
166 | $("#text_reply").attr({ |
||
167 | "name": details.id |
||
168 | }); |
||
169 | } |
||
170 | |||
171 | |||
172 | // Update Current Conversation |
||
173 | function updateConversation(data) { |
||
174 | |||
175 | var ele = document.getElementById("conversation"); |
||
176 | ele.innerHTML = ""; |
||
177 | |||
178 | if (data[0].type === 1) |
||
179 | { |
||
180 | // For showing previous message |
||
181 | if (data[0].load > 10) |
||
182 | { |
||
183 | var divE1 = $("<div></div>").addClass("row message-previous"); |
||
184 | var divE2 = $("<div></div>").addClass("col-sm-12 previous"); |
||
185 | var aElement = $("<a></a>").text("Show Previous Message!"); |
||
186 | aElement.attr({ |
||
187 | "id": data[0].username, |
||
188 | "name": data[0].load |
||
189 | }); |
||
190 | divE2.append(aElement); |
||
191 | divE1.append(divE2); |
||
192 | $("#conversation").append(divE1); |
||
193 | } |
||
194 | var noOfMessages = data.length - 1; |
||
195 | for (var i = noOfMessages; i >= 1; i--) { |
||
196 | // create element |
||
197 | var divElement1 = $("<div></div>").addClass("row message-body"); |
||
198 | var divElement2 = $("<div></div>").addClass("col-sm-12"); |
||
199 | var divElement3 = $("<div></div>"); |
||
200 | var messageText = $("<div></div>").addClass("message-text").text(data[i].message); |
||
201 | var spanElement = $("<span></span>").addClass("message-time pull-right").text(data[i].time); |
||
202 | |||
203 | if (data[i]["sent_by"] !== data[i].start) |
||
204 | { |
||
205 | divElement2.addClass("message-main-receiver"); |
||
206 | divElement3.addClass("receiver"); |
||
207 | } else { |
||
208 | divElement2.addClass("message-main-sender"); |
||
209 | divElement3.addClass("sender"); |
||
210 | } |
||
211 | divElement3.append(messageText); |
||
212 | divElement3.append(spanElement); |
||
213 | divElement2.append(divElement3); |
||
214 | divElement1.append(divElement2); |
||
215 | $("#conversation").append(divElement1); |
||
216 | } |
||
217 | |||
218 | if (noOfMessages < 21) { |
||
219 | ele.scrollTop = ele.scrollHeight; |
||
220 | } else { |
||
221 | ele.scrollTop = $("#conversation")[0].scrollHeight - heightFrom; |
||
222 | } |
||
223 | } |
||
224 | setConversationDetails(data[0]); |
||
225 | } |
||
226 | |||
227 | // For reply to other messages |
||
228 | function reply() { |
||
229 | |||
230 | var message = $("#text_reply").val(); |
||
231 | var id = $("#text_reply").attr("name"); |
||
232 | $("#text_reply").val(""); |
||
233 | if (message !== "") { |
||
234 | var msg = { |
||
235 | "name": id, |
||
236 | "reply": message, |
||
237 | "type": "reply" |
||
238 | }; |
||
239 | sendTo(msg); |
||
240 | } |
||
241 | } |
||
242 | |||
243 | function notFound(eleId) { |
||
244 | eleId = "#" + eleId; |
||
245 | $(eleId).text(""); |
||
246 | var divElement = $("<div></div>").addClass("notFound").text("Not Found"); |
||
247 | $(eleId).append(divElement); |
||
248 | } |
||
249 | |||
250 | function composeChoose() { |
||
251 | var text = document.getElementById("composeText").value; |
||
252 | if (text !== "") { |
||
253 | var msg = |
||
254 | { |
||
255 | "value": text, |
||
256 | "type": "Compose" |
||
257 | }; |
||
258 | sendTo(msg); |
||
259 | } else { |
||
260 | $("#compose").html("<div class=\"notFound\">Start New Chat</div>"); |
||
261 | } |
||
262 | } |
||
263 | |||
264 | //compose messages |
||
265 | function composeResult(arr) { |
||
266 | var ele = document.getElementById("compose"); |
||
267 | ele.innerHTML = ""; |
||
268 | |||
269 | if (arr !== "Not Found") { |
||
270 | createSidebarElement(arr, "compose"); |
||
271 | } else { |
||
272 | notFound("compose"); |
||
273 | } |
||
274 | } |
||
275 | |||
276 | function searchChoose() { |
||
277 | var text = $("#searchText").val(); |
||
278 | if (text !== "") { |
||
279 | var msg = { |
||
280 | "value": text, |
||
281 | "type": "Search" |
||
282 | }; |
||
283 | |||
284 | sendTo(msg); |
||
285 | } else { |
||
286 | sidebarRequest(); |
||
287 | } |
||
288 | |||
289 | } |
||
290 | |||
291 | function searchResult(arr) { |
||
292 | if (arr !== "Not Found") { |
||
293 | createSidebarElement(arr, "message"); |
||
294 | } else { |
||
295 | notFound("message"); |
||
296 | } |
||
297 | |||
298 | } |
||
299 | |||
300 | // Load previous messages |
||
301 | function previous(element) { |
||
302 | var user = element.id; |
||
303 | var lo = element.name; |
||
304 | heightFrom = $("#conversation")[0].scrollHeight; |
||
305 | newConversation(element, lo); |
||
306 | } |
||
307 | |||
308 | function hideComposeScreen() { |
||
309 | $(".side-two").css({ |
||
310 | "left": "-100%" |
||
311 | }); |
||
312 | } |
||
313 | |||
314 | // Audio Recognization |
||
315 | |||
316 | function startDictation() { |
||
317 | |||
318 | if (window.hasOwnProperty("webkitSpeechRecognition")) { |
||
319 | |||
320 | var recognition = new webkitSpeechRecognition(); |
||
321 | |||
322 | recognition.continuous = false; |
||
323 | recognition.interimResults = false; |
||
324 | |||
325 | recognition.lang = "en-IN"; |
||
326 | recognition.start(); |
||
327 | |||
328 | recognition.onresult = function(e) { |
||
329 | document.getElementById("text_reply").value = e.results[0][0].transcript; |
||
330 | recognition.stop(); |
||
331 | reply(); |
||
332 | }; |
||
333 | |||
334 | recognition.onerror = function() { |
||
335 | recognition.stop(); |
||
336 | } |
||
337 | |||
338 | } |
||
339 | } |
||
340 | |||
341 | |||
342 | // On Message |
||
343 | conn.onmessage = function(e) |
||
344 | { |
||
345 | var msg = JSON.parse(e.data); |
||
346 | // console.log(msg); |
||
347 | if (!width()) { |
||
348 | SideBar(msg.sidebar); |
||
349 | } else { |
||
350 | if (!$(".side").hasClass("hide")) { |
||
351 | SideBar(msg.sidebar); |
||
352 | } |
||
353 | } |
||
354 | |||
355 | if (typeof(msg.initial) !== "undefined") { |
||
356 | SideBar(msg.initial); |
||
357 | } |
||
358 | |||
359 | if (typeof(msg.conversation) !== "undefined") { |
||
360 | updateConversation(msg.conversation); |
||
361 | } |
||
362 | |||
363 | if (typeof(msg.reply) !== "undefined") { |
||
364 | var textAreaId = $("#text_reply").attr("name"); |
||
365 | if (msg.reply[0].id === textAreaId) { |
||
366 | updateConversation(msg.reply); |
||
367 | } |
||
368 | } |
||
369 | |||
370 | if (typeof(msg.Search) !== "undefined") { |
||
371 | searchResult(msg.Search); |
||
372 | } |
||
373 | |||
374 | if (typeof(msg.Compose) !== "undefined") { |
||
375 | composeResult(msg.Compose); |
||
376 | } |
||
377 | }; |
||
378 | |||
379 | // Event Listeners |
||
380 | $("body").on("click", ".sideBar-body", function() { |
||
381 | newConversation(this,20); |
||
382 | hideComposeScreen(); |
||
383 | $("#searchText").val(""); |
||
384 | $("#composeText").val(""); |
||
385 | }); |
||
386 | |||
387 | $("body").on("click", ".reply-send", |
||
388 | function() { |
||
389 | reply(); |
||
390 | }); |
||
391 | |||
392 | $("body").on("click", ".reply-recording", |
||
393 | function() { |
||
394 | startDictation(); |
||
395 | }); |
||
396 | |||
397 | $("body").on("click", ".lowerBar-recording", |
||
398 | function() { |
||
399 | startDictation(); |
||
400 | }); |
||
401 | |||
402 | $("body").on("click", ".lowerBar-back", |
||
403 | function() { |
||
404 | toSidebar(); |
||
405 | sidebarRequest(); |
||
406 | }); |
||
407 | |||
408 | $("body").on("click", ".previous a", |
||
409 | function() { |
||
410 | previous(this); |
||
411 | }); |
||
412 | |||
413 | $("body").on("keyup", "#searchText", |
||
414 | function() { |
||
415 | searchChoose(); |
||
416 | }); |
||
417 | |||
418 | $("body").on("keyup", "#composeText", |
||
419 | function() { |
||
420 | composeChoose(); |
||
421 | }); |
||
422 | |||
423 | $(".heading-compose").click(function() { |
||
424 | $(".side-two").css({ |
||
425 | "left": "0" |
||
426 | }); |
||
427 | }); |
||
428 | |||
429 | $(".newMessage-back").click(function() { |
||
430 | hideComposeScreen(); |
||
431 | $("#composeText").val(""); |
||
432 | }); |
||
433 | |||
434 | $("#conversation").scroll(function() { |
||
435 | var res = $(".message-previous").html(); |
||
436 | var scrollTop = $("#conversation").scrollTop(); |
||
437 | if (typeof(res) !== "undefined" && scrollTop < 100) { |
||
438 | $(".previous a").click(); |
||
439 | if (scrollTop < 3) { |
||
440 | $(".message-previous div").html("").removeClass("col-sm-12 previous").addClass("loader").css({"width" : "20px", "height" : "20px"}); |
||
441 | } |
||
442 | } |
||
443 | |||
444 | }); |
||
445 | |||
446 | }); |
||
447 | |||
452 |
This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.
To learn more about declaring variables in Javascript, see the MDN.