]> git.proxmox.com Git - ceph.git/blob - ceph/src/civetweb/examples/_obsolete/docroot/main.js
buildsys: switch source download to quincy
[ceph.git] / ceph / src / civetweb / examples / _obsolete / docroot / main.js
1 // This file is part of Civetweb project,
2 // http://sourceforge.net/projects/civetweb/
3
4 var chat = {
5 // Backend URL, string.
6 // 'http://backend.address.com' or '' if backend is the same as frontend
7 backendUrl: '',
8 maxVisibleMessages: 10,
9 errorMessageFadeOutTimeoutMs: 2000,
10 errorMessageFadeOutTimer: null,
11 lastMessageId: 0,
12 getMessagesIntervalMs: 1000,
13 };
14
15 chat.normalizeText = function(text) {
16 return text.replace('<', '&lt;').replace('>', '&gt;');
17 };
18
19 chat.refresh = function(data) {
20
21 if (data === undefined) {
22 return;
23 }
24
25 $.each(data, function(index, entry) {
26 var row = $('<div>').addClass('message-row').appendTo('#mml');
27 var timestamp = (new Date(entry.timestamp * 1000)).toLocaleTimeString();
28 $('<span>')
29 .addClass('message-timestamp')
30 .html('[' + timestamp + ']')
31 .prependTo(row);
32 $('<span>')
33 .addClass('message-user')
34 .addClass(entry.user ? '' : 'message-user-server')
35 .html(chat.normalizeText((entry.user || '[server]') + ':'))
36 .appendTo(row);
37 $('<span>')
38 .addClass('message-text')
39 .addClass(entry.user ? '' : 'message-text-server')
40 .html(chat.normalizeText(entry.text))
41 .appendTo(row);
42 chat.lastMessageId = Math.max(chat.lastMessageId, entry.id) + 1;
43 });
44
45 // Keep only chat.maxVisibleMessages, delete older ones.
46 while ($('#mml').children().length > chat.maxVisibleMessages) {
47 $('#mml div:first-child').remove();
48 }
49 };
50
51 chat.getMessages = function(enter_loop) {
52 $.ajax({
53 dataType: 'jsonp',
54 url: chat.backendUrl + '/ajax/get_messages',
55 data: {last_id: chat.lastMessageId},
56 success: chat.refresh,
57 error: function() {
58 },
59 });
60 if (enter_loop) {
61 window.setTimeout('chat.getMessages(true)', chat.getMessagesIntervalMs);
62 }
63 };
64
65 chat.handleMenuItemClick = function(ev) {
66 $('.menu-item').removeClass('menu-item-selected'); // Deselect menu buttons
67 $(this).addClass('menu-item-selected'); // Select clicked button
68 $('.main').addClass('hidden'); // Hide all main windows
69 $('#' + $(this).attr('name')).removeClass('hidden'); // Show main window
70 };
71
72 chat.showError = function(message) {
73 $('#error').html(message).fadeIn('fast');
74 window.clearTimeout(chat.errorMessageFadeOutTimer);
75 chat.errorMessageFadeOutTimer = window.setTimeout(function() {
76 $('#error').fadeOut('slow');
77 }, chat.errorMessageFadeOutTimeoutMs);
78 };
79
80 chat.handleMessageInput = function(ev) {
81 var input = ev.target;
82 if (ev.keyCode != 13 || !input.value)
83 return;
84 //input.disabled = true;
85 $.ajax({
86 dataType: 'jsonp',
87 url: chat.backendUrl + '/ajax/send_message',
88 data: {text: input.value},
89 success: function(ev) {
90 input.value = '';
91 input.disabled = false;
92 chat.getMessages(false);
93 },
94 error: function(ev) {
95 chat.showError('Error sending message');
96 input.disabled = false;
97 },
98 });
99 };
100
101 $(document).ready(function() {
102 $('.menu-item').click(chat.handleMenuItemClick);
103 $('.message-input').keypress(chat.handleMessageInput);
104 chat.getMessages(true);
105 });
106
107 // vim:ts=2:sw=2:et