Guest User

Untitled

a guest
Feb 11th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.02 KB | None | 0 0
  1. /*******************************************************************************
  2. * Copyright (c) 2015 IBM Corp.
  3. *
  4. * All rights reserved. This program and the accompanying materials
  5. * are made available under the terms of the Eclipse Public License v1.0
  6. * and Eclipse Distribution License v1.0 which accompany this distribution.
  7. *
  8. * The Eclipse Public License is available at
  9. * http://www.eclipse.org/legal/epl-v10.html
  10. * and the Eclipse Distribution License is available at
  11. * http://www.eclipse.org/org/documents/edl-v10.php.
  12. *
  13. * Contributors:
  14. * James Sutton - Initial Contribution
  15. *******************************************************************************/
  16.  
  17. /*
  18. Eclipse Paho MQTT-JS Utility
  19. This utility can be used to test the Eclipse Paho MQTT Javascript client.
  20. */
  21.  
  22. // Create a client instance
  23. var client = null;
  24. var connected = false;
  25.  
  26.  
  27. logMessage("INFO", "Starting Eclipse Paho JavaScript Utility.");
  28.  
  29. // Things to do as soon as the page loads
  30. document.getElementById("clientIdInput").value = "js-utility-" + makeid();
  31.  
  32. // called when the client connects
  33. function onConnect(context) {
  34. // Once a connection has been made, make a subscription and send a message.
  35. var connectionString = context.invocationContext.host + ":" + context.invocationContext.port + context.invocationContext.path;
  36. logMessage("INFO", "Connection Success ", "[URI: ", connectionString, ", ID: ", context.invocationContext.clientId, "]");
  37. var statusSpan = document.getElementById("connectionStatus");
  38. statusSpan.innerHTML = "Connected to: " + connectionString + " as " + context.invocationContext.clientId;
  39. connected = true;
  40. setFormEnabledState(true);
  41. }
  42.  
  43.  
  44. function onConnected(reconnect, uri) {
  45. // Once a connection has been made, make a subscription and send a message.
  46. logMessage("INFO", "Client Has now connected: [Reconnected: ", reconnect, ", URI: ", uri, "]");
  47. connected = true;
  48.  
  49.  
  50. }
  51.  
  52. function onFail(context) {
  53. logMessage("ERROR", "Failed to connect. [Error Message: ", context.errorMessage, "]");
  54. var statusSpan = document.getElementById("connectionStatus");
  55. statusSpan.innerHTML = "Failed to connect: " + context.errorMessage;
  56. connected = false;
  57. setFormEnabledState(false);
  58. }
  59.  
  60. // called when the client loses its connection
  61. function onConnectionLost(responseObject) {
  62. if (responseObject.errorCode !== 0) {
  63. logMessage("INFO", "Connection Lost. [Error Message: ", responseObject.errorMessage, "]");
  64. }
  65. connected = false;
  66. }
  67.  
  68. // called when a message arrives
  69. function onMessageArrived(message) {
  70. logMessage("INFO", "Message Recieved: [Topic: ", message.destinationName, ", Payload: ", message.payloadString, ", QoS: ", message.qos, ", Retained: ", message.retained, ", Duplicate: ", message.duplicate, "]");
  71. var messageTime = new Date().toISOString();
  72. // Insert into History Table
  73. var table = document.getElementById("incomingMessageTable").getElementsByTagName("tbody")[0];
  74. var row = table.insertRow(0);
  75. row.insertCell(0).innerHTML = message.destinationName;
  76. row.insertCell(1).innerHTML = safeTagsRegex(message.payloadString);
  77. row.insertCell(2).innerHTML = messageTime;
  78. row.insertCell(3).innerHTML = message.qos;
  79.  
  80.  
  81. if (!document.getElementById(message.destinationName)) {
  82. var lastMessageTable = document.getElementById("lastMessageTable").getElementsByTagName("tbody")[0];
  83. var newlastMessageRow = lastMessageTable.insertRow(0);
  84. newlastMessageRow.id = message.destinationName;
  85. newlastMessageRow.insertCell(0).innerHTML = message.destinationName;
  86. newlastMessageRow.insertCell(1).innerHTML = safeTagsRegex(message.payloadString);
  87. newlastMessageRow.insertCell(2).innerHTML = messageTime;
  88. newlastMessageRow.insertCell(3).innerHTML = message.qos;
  89.  
  90. } else {
  91. // Update Last Message Table
  92. var lastMessageRow = document.getElementById(message.destinationName);
  93. lastMessageRow.id = message.destinationName;
  94. lastMessageRow.cells[0].innerHTML = message.destinationName;
  95. lastMessageRow.cells[1].innerHTML = safeTagsRegex(message.payloadString);
  96. lastMessageRow.cells[2].innerHTML = messageTime;
  97. lastMessageRow.cells[3].innerHTML = message.qos;
  98. }
  99.  
  100. }
  101.  
  102. function connectionToggle() {
  103.  
  104. if (connected) {
  105. disconnect();
  106. } else {
  107. connect();
  108. }
  109.  
  110.  
  111. }
  112.  
  113.  
  114. function connect() {
  115. var hostname = document.getElementById("hostInput").value;
  116. var port = document.getElementById("portInput").value;
  117. var clientId = document.getElementById("clientIdInput").value;
  118.  
  119. var path = document.getElementById("pathInput").value;
  120. var user = document.getElementById("userInput").value;
  121. var pass = document.getElementById("passInput").value;
  122. var keepAlive = Number(document.getElementById("keepAliveInput").value);
  123. var timeout = Number(document.getElementById("timeoutInput").value);
  124. var tls = document.getElementById("tlsInput").checked;
  125. var automaticReconnect = document.getElementById("automaticReconnectInput").checked;
  126. var cleanSession = document.getElementById("cleanSessionInput").checked;
  127. var lastWillTopic = document.getElementById("lwtInput").value;
  128. var lastWillQos = Number(document.getElementById("lwQosInput").value);
  129. var lastWillRetain = document.getElementById("lwRetainInput").checked;
  130. var lastWillMessageVal = document.getElementById("lwMInput").value;
  131.  
  132.  
  133. if (path.length > 0) {
  134. client = new Paho.Client(hostname, Number(port), path, clientId);
  135. } else {
  136. client = new Paho.Client(hostname, Number(port), clientId);
  137. }
  138. logMessage("INFO", "Connecting to Server: [Host: ", hostname, ", Port: ", port, ", Path: ", client.path, ", ID: ", clientId, "]");
  139.  
  140. // set callback handlers
  141. client.onConnectionLost = onConnectionLost;
  142. client.onMessageArrived = onMessageArrived;
  143. client.onConnected = onConnected;
  144.  
  145.  
  146. var options = {
  147. invocationContext: { host: hostname, port: port, path: client.path, clientId: clientId },
  148. timeout: timeout,
  149. keepAliveInterval: keepAlive,
  150. cleanSession: cleanSession,
  151. useSSL: tls,
  152. reconnect: automaticReconnect,
  153. onSuccess: onConnect,
  154. onFailure: onFail
  155. };
  156.  
  157.  
  158.  
  159. if (user.length > 0) {
  160. options.userName = user;
  161. }
  162.  
  163. if (pass.length > 0) {
  164. options.password = pass;
  165. }
  166.  
  167. if (lastWillTopic.length > 0) {
  168. var lastWillMessage = new Paho.Message(lastWillMessageVal);
  169. lastWillMessage.destinationName = lastWillTopic;
  170. lastWillMessage.qos = lastWillQos;
  171. lastWillMessage.retained = lastWillRetain;
  172. options.willMessage = lastWillMessage;
  173. }
  174.  
  175. // connect the client
  176. client.connect(options);
  177. var statusSpan = document.getElementById("connectionStatus");
  178. statusSpan.innerHTML = "Connecting...";
  179. }
  180.  
  181. function disconnect() {
  182. logMessage("INFO", "Disconnecting from Server.");
  183. client.disconnect();
  184. var statusSpan = document.getElementById("connectionStatus");
  185. statusSpan.innerHTML = "Connection - Disconnected.";
  186. connected = false;
  187. setFormEnabledState(false);
  188.  
  189. }
  190.  
  191. // Sets various form controls to either enabled or disabled
  192. function setFormEnabledState(enabled) {
  193.  
  194. // Connection Panel Elements
  195. if (enabled) {
  196. document.getElementById("clientConnectButton").innerHTML = "Disconnect";
  197. } else {
  198. document.getElementById("clientConnectButton").innerHTML = "Connect";
  199. }
  200. document.getElementById("hostInput").disabled = enabled;
  201. document.getElementById("portInput").disabled = enabled;
  202. document.getElementById("clientIdInput").disabled = enabled;
  203. document.getElementById("pathInput").disabled = enabled;
  204. document.getElementById("userInput").disabled = enabled;
  205. document.getElementById("passInput").disabled = enabled;
  206. document.getElementById("keepAliveInput").disabled = enabled;
  207. document.getElementById("timeoutInput").disabled = enabled;
  208. document.getElementById("tlsInput").disabled = enabled;
  209. document.getElementById("automaticReconnectInput").disabled = enabled;
  210. document.getElementById("cleanSessionInput").disabled = enabled;
  211. document.getElementById("lwtInput").disabled = enabled;
  212. document.getElementById("lwQosInput").disabled = enabled;
  213. document.getElementById("lwRetainInput").disabled = enabled;
  214. document.getElementById("lwMInput").disabled = enabled;
  215.  
  216. // Publish Panel Elements
  217. document.getElementById("publishTopicInput").disabled = !enabled;
  218. document.getElementById("publishQosInput").disabled = !enabled;
  219. document.getElementById("publishMessageInput").disabled = !enabled;
  220. document.getElementById("publishButton").disabled = !enabled;
  221. document.getElementById("publishRetainInput").disabled = !enabled;
  222.  
  223. // Subscription Panel Elements
  224. document.getElementById("subscribeTopicInput").disabled = !enabled;
  225. document.getElementById("subscribeQosInput").disabled = !enabled;
  226. document.getElementById("subscribeButton").disabled = !enabled;
  227. document.getElementById("unsubscribeButton").disabled = !enabled;
  228.  
  229. }
  230.  
  231. function publish() {
  232. var topic = document.getElementById("publishTopicInput").value;
  233. var qos = document.getElementById("publishQosInput").value;
  234. var message = document.getElementById("publishMessageInput").value;
  235. var retain = document.getElementById("publishRetainInput").checked;
  236. logMessage("INFO", "Publishing Message: [Topic: ", topic, ", Payload: ", message, ", QoS: ", qos, ", Retain: ", retain, "]");
  237. message = new Paho.Message(message);
  238. message.destinationName = topic;
  239. message.qos = Number(qos);
  240. message.retained = retain;
  241. client.send(message);
  242. }
  243.  
  244.  
  245. function subscribe() {
  246. var topic = document.getElementById("subscribeTopicInput").value;
  247. var qos = document.getElementById("subscribeQosInput").value;
  248. logMessage("INFO", "Subscribing to: [Topic: ", topic, ", QoS: ", qos, "]");
  249. client.subscribe(topic, { qos: Number(qos) });
  250. }
  251.  
  252. function unsubscribe() {
  253. var topic = document.getElementById("subscribeTopicInput").value;
  254. logMessage("INFO", "Unsubscribing: [Topic: ", topic, "]");
  255. client.unsubscribe(topic, {
  256. onSuccess: unsubscribeSuccess,
  257. onFailure: unsubscribeFailure,
  258. invocationContext: { topic: topic }
  259. });
  260. }
  261.  
  262.  
  263. function unsubscribeSuccess(context) {
  264. logMessage("INFO", "Unsubscribed. [Topic: ", context.invocationContext.topic, "]");
  265. }
  266.  
  267. function unsubscribeFailure(context) {
  268. logMessage("ERROR", "Failed to unsubscribe. [Topic: ", context.invocationContext.topic, ", Error: ", context.errorMessage, "]");
  269. }
  270.  
  271. function clearHistory() {
  272. var table = document.getElementById("incomingMessageTable");
  273. //or use : var table = document.all.tableid;
  274. for (var i = table.rows.length - 1; i > 0; i--) {
  275. table.deleteRow(i);
  276. }
  277.  
  278. }
  279.  
  280.  
  281. // Just in case someone sends html
  282. function safeTagsRegex(str) {
  283. return str.replace(/&/g, "&").replace(/</g, "<").
  284. replace(/>/g, ">");
  285. }
  286.  
  287. function makeid() {
  288. var text = "";
  289. var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  290.  
  291. for (var i = 0; i < 5; i++)
  292. text += possible.charAt(Math.floor(Math.random() * possible.length));
  293.  
  294. return text;
  295. }
  296.  
  297. function logMessage(type, ...content) {
  298. var consolePre = document.getElementById("consolePre");
  299. var date = new Date();
  300. var timeString = date.toUTCString();
  301. var logMessage = timeString + " - " + type + " - " + content.join("");
  302. consolePre.innerHTML += logMessage + "n";
  303. if (type === "INFO") {
  304. console.info(logMessage);
  305. } else if (type === "ERROR") {
  306. console.error(logMessage);
  307. } else {
  308. console.log(logMessage);
  309. }
  310. }
  311.  
  312. /**
  313. * Copyright 2013 dc-square GmbH
  314. *
  315. * Licensed under the Apache License, Version 2.0 (the "License");
  316. * you may not use this file except in compliance with the License.
  317. * You may obtain a copy of the License at
  318. *
  319. * http://www.apache.org/licenses/LICENSE-2.0
  320. *
  321. * Unless required by applicable law or agreed to in writing, software
  322. * distributed under the License is distributed on an "AS IS" BASIS,
  323. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  324. * See the License for the specific language governing permissions and
  325. * limitations under the License.
  326. *
  327. * @author: Christoph Schäbel
  328. */
  329.  
  330. var websocketclient = {
  331. 'client': null,
  332. 'lastMessageId': 1,
  333. 'lastSubId': 1,
  334. 'subscriptions': [],
  335. 'messages': [],
  336. 'connected': false,
  337.  
  338. 'connect': function () {
  339.  
  340. var host = $('#urlInput').val();
  341. var port = parseInt($('#portInput').val(), 10);
  342. var clientId = $('#clientIdInput').val();
  343. var username = $('#userInput').val();
  344. var password = $('#pwInput').val();
  345. var keepAlive = parseInt($('#keepAliveInput').val());
  346. var cleanSession = $('#cleanSessionInput').is(':checked');
  347. var lwTopic = $('#lwTopicInput').val();
  348. var lwQos = parseInt($('#lwQosInput').val());
  349. var lwRetain = $('#LWRInput').is(':checked');
  350. var lwMessage = $('#LWMInput').val();
  351. var ssl = $('#sslInput').is(':checked');
  352.  
  353. this.client = new Messaging.Client(host, port, clientId);
  354. this.client.onConnectionLost = this.onConnectionLost;
  355. this.client.onMessageArrived = this.onMessageArrived;
  356.  
  357. var options = {
  358. timeout: 3,
  359. keepAliveInterval: keepAlive,
  360. cleanSession: cleanSession,
  361. useSSL: ssl,
  362. onSuccess: this.onConnect,
  363. onFailure: this.onFail
  364. };
  365.  
  366. if (username.length > 0) {
  367. options.userName = username;
  368. }
  369. if (password.length > 0) {
  370. options.password = password;
  371. }
  372. if (lwTopic.length > 0) {
  373. var willmsg = new Messaging.Message(lwMessage);
  374. willmsg.qos = lwQos;
  375. willmsg.destinationName = lwTopic;
  376. willmsg.retained = lwRetain;
  377. options.willMessage = willmsg;
  378. }
  379.  
  380. this.client.connect(options);
  381. },
  382.  
  383. 'onConnect': function () {
  384. websocketclient.connected = true;
  385. console.log("connected");
  386. var body = $('body').addClass('connected').removeClass('notconnected').removeClass('connectionbroke');
  387.  
  388. websocketclient.render.hide('conni');
  389. websocketclient.render.show('publish');
  390. websocketclient.render.show('sub');
  391. websocketclient.render.show('messages');
  392. },
  393.  
  394. 'onFail': function (message) {
  395. websocketclient.connected = false;
  396. console.log("error: " + message.errorMessage);
  397. websocketclient.render.showError('Connect failed: ' + message.errorMessage);
  398. },
  399.  
  400. 'onConnectionLost': function (responseObject) {
  401. websocketclient.connected = false;
  402. if (responseObject.errorCode !== 0) {
  403. console.log("onConnectionLost:" + responseObject.errorMessage);
  404. }
  405. $('body.connected').removeClass('connected').addClass('notconnected').addClass('connectionbroke');
  406. websocketclient.render.show('conni');
  407. websocketclient.render.hide('publish');
  408. websocketclient.render.hide('sub');
  409. websocketclient.render.hide('messages');
  410.  
  411. //Cleanup messages
  412. websocketclient.messages = [];
  413. websocketclient.render.clearMessages();
  414.  
  415. //Cleanup subscriptions
  416. websocketclient.subscriptions = [];
  417. websocketclient.render.clearSubscriptions();
  418. },
  419.  
  420. 'onMessageArrived': function (message) {
  421. // console.log("onMessageArrived:" + message.payloadString + " qos: " + message.qos);
  422.  
  423. var subscription = websocketclient.getSubscriptionForTopic(message.destinationName);
  424.  
  425. var messageObj = {
  426. 'topic': message.destinationName,
  427. 'retained': message.retained,
  428. 'qos': message.qos,
  429. 'payload': message.payloadString,
  430. 'timestamp': moment(),
  431. 'subscriptionId': subscription.id,
  432. 'color': websocketclient.getColorForSubscription(subscription.id)
  433. };
  434.  
  435. console.log(messageObj);
  436. messageObj.id = websocketclient.render.message(messageObj);
  437. websocketclient.messages.push(messageObj);
  438. },
  439.  
  440. 'disconnect': function () {
  441. this.client.disconnect();
  442. },
  443.  
  444. 'publish': function (topic, payload, qos, retain) {
  445.  
  446. if (!websocketclient.connected) {
  447. websocketclient.render.showError("Not connected");
  448. return false;
  449. }
  450.  
  451. var message = new Messaging.Message(payload);
  452. message.destinationName = topic;
  453. message.qos = qos;
  454. message.retained = retain;
  455. this.client.send(message);
  456. },
  457.  
  458. 'subscribe': function (topic, qosNr, color) {
  459.  
  460. if (!websocketclient.connected) {
  461. websocketclient.render.showError("Not connected");
  462. return false;
  463. }
  464.  
  465. if (topic.length < 1) {
  466. websocketclient.render.showError("Topic cannot be empty");
  467. return false;
  468. }
  469.  
  470. if (_.find(this.subscriptions, { 'topic': topic })) {
  471. websocketclient.render.showError('You are already subscribed to this topic');
  472. return false;
  473. }
  474.  
  475. this.client.subscribe(topic, {qos: qosNr});
  476. if (color.length < 1) {
  477. color = '999999';
  478. }
  479.  
  480. var subscription = {'topic': topic, 'qos': qosNr, 'color': color};
  481. subscription.id = websocketclient.render.subscription(subscription);
  482. this.subscriptions.push(subscription);
  483. return true;
  484. },
  485.  
  486. 'unsubscribe': function (id) {
  487. var subs = _.find(websocketclient.subscriptions, {'id': id});
  488. this.client.unsubscribe(subs.topic);
  489. websocketclient.subscriptions = _.filter(websocketclient.subscriptions, function (item) {
  490. return item.id != id;
  491. });
  492.  
  493. websocketclient.render.removeSubscriptionsMessages(id);
  494. },
  495.  
  496. 'deleteSubscription': function (id) {
  497. var elem = $("#sub" + id);
  498.  
  499. if (confirm('Are you sure ?')) {
  500. elem.remove();
  501. this.unsubscribe(id);
  502. }
  503. },
  504.  
  505. 'getRandomColor': function () {
  506. var r = (Math.round(Math.random() * 255)).toString(16);
  507. var g = (Math.round(Math.random() * 255)).toString(16);
  508. var b = (Math.round(Math.random() * 255)).toString(16);
  509. return r + g + b;
  510. },
  511.  
  512. 'getSubscriptionForTopic': function (topic) {
  513. var i;
  514. for (i = 0; i < this.subscriptions.length; i++) {
  515. if (this.compareTopics(topic, this.subscriptions[i].topic)) {
  516. return this.subscriptions[i];
  517. }
  518. }
  519. return false;
  520. },
  521.  
  522. 'getColorForPublishTopic': function (topic) {
  523. var id = this.getSubscriptionForTopic(topic);
  524. return this.getColorForSubscription(id);
  525. },
  526.  
  527. 'getColorForSubscription': function (id) {
  528. try {
  529. if (!id) {
  530. return '99999';
  531. }
  532.  
  533. var sub = _.find(this.subscriptions, { 'id': id });
  534. if (!sub) {
  535. return '999999';
  536. } else {
  537. return sub.color;
  538. }
  539. } catch (e) {
  540. return '999999';
  541. }
  542. },
  543.  
  544. 'compareTopics': function (topic, subTopic) {
  545. var pattern = subTopic.replace("+", "(.*?)").replace("#", "(.*)");
  546. var regex = new RegExp("^" + pattern + "$");
  547. return regex.test(topic);
  548. },
  549.  
  550. 'render': {
  551.  
  552. 'showError': function (message) {
  553. alert(message);
  554. },
  555. 'messages': function () {
  556.  
  557. websocketclient.render.clearMessages();
  558. _.forEach(websocketclient.messages, function (message) {
  559. message.id = websocketclient.render.message(message);
  560. });
  561.  
  562. },
  563. 'message': function (message) {
  564.  
  565. var largest = websocketclient.lastMessageId++;
  566.  
  567. var html = '<li class="messLine id="' + largest + '">' +
  568. ' <div class="row large-12 mess' + largest + '" style="border-left: solid 10px #' + message.color + '; ">' +
  569. ' <div class="large-12 columns messageText">' +
  570. ' <div class="large-3 columns date">' + message.timestamp.format("YYYY-MM-DD HH:mm:ss") + '</div>' +
  571. ' <div class="large-5 columns topicM truncate" id="topicM' + largest + '" title="' + Encoder.htmlEncode(message.topic, 0) + '">Topic: ' + Encoder.htmlEncode(message.topic) + '</div>' +
  572. ' <div class="large-2 columns qos">Qos: ' + message.qos + '</div>' +
  573. ' <div class="large-2 columns retain">';
  574. if (message.retained) {
  575. html += 'Retained';
  576. }
  577. html += ' </div>' +
  578. ' <div class="large-12 columns message break-words">' + Encoder.htmlEncode(message.payload) + '</div>' +
  579. ' </div>' +
  580. ' </div>' +
  581. '</li>';
  582. $("#messEdit").prepend(html);
  583. return largest;
  584. },
  585.  
  586. 'subscriptions': function () {
  587. websocketclient.render.clearSubscriptions();
  588. _.forEach(websocketclient.subscriptions, function (subs) {
  589. subs.id = websocketclient.render.subscription(subs);
  590. });
  591. },
  592.  
  593. 'subscription': function (subscription) {
  594. var largest = websocketclient.lastSubId++;
  595. $("#innerEdit").append(
  596. '<li class="subLine" id="sub' + largest + '">' +
  597. ' <div class="row large-12 subs' + largest + '" style="border-left: solid 10px #' + subscription.color + '; background-color: #ffffff">' +
  598. ' <div class="large-12 columns subText">' +
  599. ' <div class="large-1 columns right closer">' +
  600. ' <a href="#" onclick="websocketclient.deleteSubscription(' + largest + '); return false;">x</a>' +
  601. ' </div>' +
  602. ' <div class="qos">Qos: ' + subscription.qos + '</div>' +
  603. ' <div class="topic truncate" id="topic' + largest + '" title="' + Encoder.htmlEncode(subscription.topic, 0) + '">' + Encoder.htmlEncode(subscription.topic) + '</div>' +
  604. ' </div>' +
  605. ' </div>' +
  606. '</li>');
  607. return largest;
  608. },
  609.  
  610. 'toggleAll': function () {
  611. websocketclient.render.toggle('conni');
  612. websocketclient.render.toggle('publish');
  613. websocketclient.render.toggle('messages');
  614. websocketclient.render.toggle('sub');
  615. },
  616.  
  617. 'toggle': function (name) {
  618. $('.' + name + 'Arrow').toggleClass("closed");
  619. $('.' + name + 'Top').toggleClass("closed");
  620. var elem = $('#' + name + 'Main');
  621. elem.slideToggle();
  622. },
  623.  
  624. 'hide': function (name) {
  625. $('.' + name + 'Arrow').addClass("closed");
  626. $('.' + name + 'Top').addClass("closed");
  627. var elem = $('#' + name + 'Main');
  628. elem.slideUp();
  629. },
  630.  
  631. 'show': function (name) {
  632. $('.' + name + 'Arrow').removeClass("closed");
  633. $('.' + name + 'Top').removeClass("closed");
  634. var elem = $('#' + name + 'Main');
  635. elem.slideDown();
  636. },
  637.  
  638. 'removeSubscriptionsMessages': function (id) {
  639. websocketclient.messages = _.filter(websocketclient.messages, function (item) {
  640. return item.subscriptionId != id;
  641. });
  642. websocketclient.render.messages();
  643. },
  644.  
  645. 'clearMessages': function () {
  646. $("#messEdit").empty();
  647. },
  648.  
  649. 'clearSubscriptions': function () {
  650. $("#innerEdit").empty();
  651. }
  652. }
  653. };
Add Comment
Please, Sign In to add comment