aboutsummaryrefslogtreecommitdiffstats
path: root/etherpad/src/static/js/connection_diagnostics.js
blob: cc43d4600c5f3f82e4a0516087ca902260f87de6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/**
 * Copyright 2009 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS-IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

diagnostics = {};

diagnostics.data = {};

diagnostics.steps = [
  ['init', "Initializing"],
  ['examineBrowser', "Examining web browser"],
  ['testStreaming', "Testing primary transport (streaming)"],
  ['testPolling', "Testing secondary transport (polling)"],
  ['testHiccups', "Testing connection hiccups"],
  ['sendInfo', "Sending information"],
  ['showResult', ""] 
];

diagnostics.processNext = function(i) {
  if (i < diagnostics.steps.length) {
    var msg = "Step "+(i+1)+": "+diagnostics.steps[i][1]+"...";
    $('#statusmsg').html(msg);
    diagnostics[diagnostics.steps[i][0]](function() { 
      diagnostics.processNext(i+1);
    });
  }
};

$(document).ready(function() {
  diagnostics.processNext(0);
  
  var emailClicked = false;
  $('#email').click(function() {
    if (!emailClicked) {
      $('#email').select();
      emailClicked = true;
    }
  });

  $('#emailsubmit').click(function() {
    function err(m) {
      $('#emailerrormsg').hide().html(m).fadeIn('fast');
    }
    var email = $('#email').val();
    if (!etherpad.validEmail(email)) {
      err("That doesn't look like a valid email address.");
      return;
    }
    $.ajax({
      type: 'post',
      url: '/ep/connection-diagnostics/submitemail',
      data: {email: email, diagnosticStorableId: clientVars.diagnosticStorableId},
      success: success,
      error: error
    });
    function success(responseText) {
      if (responseText == "OK") {
	$('#emailform').html("<p>Thanks!  We will look at your case shortly.</p>");
      } else {
	err(responseText);
      }
    }
    function error() {
      err("There was an error processing your request.");
    }
  });
});

diagnostics.init = function(done) {
  setTimeout(done, 1000);
};

diagnostics.examineBrowser = function(done) {
  setTimeout(done, 1000);
};
		  
diagnostics.testStreaming = function(done) {
  setTimeout(done, 1000);
};
		  
diagnostics.testPolling = function(done) {
  setTimeout(done, 1000);
};
		  
diagnostics.testHiccups = function(done) {
  setTimeout(done, 1000);
};
		  
diagnostics.sendInfo = function(done) {

  // TODO(jd): remove these test data when you submit actual data.
  diagnostics.data.test1 = "foo";
  diagnostics.data.test2 = "bar";
  diagnostics.data.testNested = {a: 1, b: 2, c: 3};
  
  // send data object back to server.
  $.ajax({
    type: 'post',
    url: '/ep/connection-diagnostics/submitdata',
    data: {dataJson: JSON.stringify(diagnostics.data),
	   diagnosticStorableId: clientVars.diagnosticStorableId},
    success: done,
    error: function() { alert("There was an error submitting the diagnostic information to the server."); done(); }
  });
};

diagnostics.showResult = function(done) {
  $('#linkanimation').hide();
  $('#statusmsg').html("<br/>Result: your browser and internet"
		       + " connection appear to be incompatibile with EtherPad.");
  $('#statusmsg').css('color', '#520');
  $('#emailform').show();
};