clockwerk-opensim – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 vero 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5 <title>Simulator statistics</title>
6 <link rel="stylesheet" href="sim.css" type="text/css"/>
7 <!-- <script type="text/javascript" src="jquery.js"></script> -->
8 <!-- <script type="text/javascript" src="https://code.jquery.com/jquery-1.9.0.min.js"></script> -->
9 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
10 <!-- <script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/libs/jQuery/jquery-1.9.0.min.js"></script> -->
11 <noscript>
12 <p color="red">
13 Your browser does not support Javascript. This won't work for you.
14 </p>
15 </noscript>
16 <script type="text/javascript">
17 $(document).ready(function() {
18 // Major divisions in the content accordioning
19 $('.SimSection').show('slow');
20 $('.SimSectionHeader').click(function() {
21 $(this).next().slideToggle('slow');
22 return false;
23 });
24  
25 // Start the timed functions
26 TimerDataStuff();
27 });
28  
29 // One of the sections is viewer statistics. Poll for the data.
30 var statTimerHandle;
31 var graphFPS;
32 var lastFPS = 10;
33 var xxThru = 0;
34 function TimerDataStuff() {
35 statTimerHandle = setInterval('TimerStatDisplay()', 5000);
36 }
37  
38 // called by timer to fetch and display statistic information
39 var doingStatDisplay = false;
40 function TimerStatDisplay() {
41 if (doingStatDisplay) return;
42 doingStatDisplay = true;
43 if ($('#SimSimStats').is(':visible')) {
44 DisplaySimStats();
45 }
46 if ($('#SimRegionStats').is(':visible')) {
47 DisplayPerRegionStats();
48 }
49 if ($('#SimSessionStats').is(':visible')) {
50 DisplaySessionStats();
51 }
52 if ($('#SimLogFile').is(':visible')) {
53 DisplayLogFile();
54 }
55 doingStatDisplay = false;
56 }
57  
58 var simName = "127.0.0.1";
59 var simPort = "9000";
60 function DisplaySimStats() {
61 var statURL = "http://" + simName + ":" + simPort + "/SStats/?json=1";
62 $.ajax({
63 type: "GET",
64 url: statURL,
65 dataType: 'json',
66 timeout: 1000,
67 success: function(data, status) {
68 if (status == 'success') {
69 DisplaySimStatDetails(data);
70 }
71 },
72 error: function(xmlHTTPRequest, errorType) {
73 // DebugLog('Failed fetch');
74 }
75 });
76 }
77  
78 function DisplayPerRegionStats() {
79 var statURL = "http://" + simName + ":" + simPort + "/SStats/simstatsajax.html?json=1";
80 $.ajax({
81 type: "GET",
82 url: statURL,
83 dataType: 'json',
84 timeout: 1000,
85 success: function(data, status) {
86 if (status == 'success') {
87 DisplayRegionStatDetails(data);
88 }
89 },
90 error: function(xmlHTTPRequest, errorType) {
91 // DebugLog('Failed fetch');
92 }
93 });
94 };
95  
96 function DisplayLogFile() {
97 var statURL = "http://" + simName + ":" + simPort + "/SStats/activelogajax.html?json=1";
98 $.ajax({
99 type: "GET",
100 url: statURL,
101 dataType: 'json',
102 timeout: 1000,
103 success: function(data, status) {
104 if (status == 'success') {
105 DisplayLogFileDetails(data);
106 }
107 },
108 error: function(xmlHTTPRequest, errorType) {
109 // DebugLog('Failed fetch');
110 }
111 });
112 };
113  
114 function DisplaySessionStats() {
115 var statURL = "http://" + simName + ":" + simPort + "/SStats/activeconnectionsajax.html?json=1";
116 $.ajax({
117 type: "GET",
118 url: statURL,
119 dataType: 'json',
120 timeout: 1000,
121 success: function(data, status) {
122 if (status == 'success') {
123 DisplaySessionStatsDetails(data);
124 }
125 },
126 error: function(xmlHTTPRequest, errorType) {
127 // DebugLog('Failed fetch');
128 }
129 });
130 };
131  
132 function DisplaySimStatDetails(data) {
133 var simInfo = new StringBuffer();
134 simInfo.append('<table id="RegionStatsTable">');
135 simInfo.append('<tr>');
136 simInfo.append('<th>Total Users</th>');
137 simInfo.append('<th>Total Sessions</th>');
138 simInfo.append('<th>Avg client FPS</th>');
139 simInfo.append('<th>Avg client Mem</th>');
140 simInfo.append('<th>Avg ping time</th>');
141 simInfo.append('<th>KB out</th>');
142 simInfo.append('<th>KB in</th>');
143 simInfo.append('</tr>');
144 simInfo.append('<tr>');
145 simInfo.append('<td>' + data.totalUsers + '</td>');
146 simInfo.append('<td>' + data.totalSessions + '</td>');
147 simInfo.append('<td>' + data.averageClientFPS + '</td>');
148 simInfo.append('<td>' + data.averageClientMem + '</td>');
149 simInfo.append('<td>' + data.averagePingTime + '</td>');
150 simInfo.append('<td>' + data.totalKBOut + '</td>');
151 simInfo.append('<td>' + data.totalKBIn + '</td>');
152 simInfo.append('</tr>');
153 simInfo.append('</table>');
154 $('#SimSimStats').empty();
155 $('#SimSimStats').append(simInfo.toString());
156 }
157  
158 function DisplayRegionStatDetails(data) {
159 var regionInfo = new StringBuffer();
160 regionInfo.append('<table id="RegionStatsTable">');
161 regionInfo.append('<tr>');
162 regionInfo.append('<th>Region</th>');
163 regionInfo.append('<th>Agents</th>');
164 regionInfo.append('<th>Child</th>');
165 regionInfo.append('<th>FPS</th>');
166 regionInfo.append('<th>Frame Time</th>');
167 regionInfo.append('<th>Phys Time</th>');
168 regionInfo.append('<th>Prims</th>');
169 regionInfo.append('</tr>');
170 for (region in data) {
171 regionInfo.append('<tr>');
172 regionInfo.append('<td>' + data[region].region + '</td>');
173 regionInfo.append('<td>' + data[region].rootAgents + '</td>');
174 regionInfo.append('<td>' + data[region].childAgents + '</td>');
175 regionInfo.append('<td>' + data[region].simFPS + '</td>');
176 regionInfo.append('<td>' + data[region].totalFrameTime + '</td>');
177 regionInfo.append('<td>' + data[region].physicsFrameTime + '</td>');
178 regionInfo.append('<td>' + data[region].totalPrims + '</td>');
179 regionInfo.append('</tr>');
180 }
181 regionInfo.append('</table>');
182 $('#SimRegionStats').empty();
183 $('#SimRegionStats').append(regionInfo.toString());
184 }
185  
186 function DisplayLogFileDetails(data) {
187 var logInfo = new StringBuffer();
188 var logPattern = /^(.+),\d\d\d .* \[(.+)\]: (.+)$/;
189 for (logLine in data['logLines']) {
190 logInfo.append('<div>');
191 var logPieces = logPattern.exec(data['logLines'][logLine]);
192 if (logPieces) {
193 logInfo.append(logPieces[1] + ' [' + logPieces[2]
194 + '] ' + logPieces[3]);
195 }
196 else {
197 logInfo.append(data['logLines'][logLine]);
198 }
199  
200 logInfo.append('</div>');
201 }
202 $('#SimLogFile').empty();
203 $('#SimLogFile').append(logInfo.toString());
204 }
205  
206 function DisplaySessionStatsDetails(data) {
207 var userInfo = new StringBuffer();
208 userInfo.append('<table>');
209 userInfo.append('<tr>');
210 userInfo.append('<th>region</th>');
211 userInfo.append('<th>user</th>');
212 userInfo.append('<th></th>');
213 userInfo.append('<th>position</th>');
214 userInfo.append('</tr>');
215 for (region in data) {
216 for (user in data[region]) {
217 if (user != 'queues') {
218 userInfo.append('<tr>');
219 userInfo.append('<td>' + region + '</td>');
220 userInfo.append('<td>' + data[region][user].Name + '</td>');
221 if (data[region][user].isRoot == 'true') {
222 userInfo.append('<td>root</td>');
223 }
224 else {
225 userInfo.append('<td>child</td>');
226 }
227 userInfo.append('<td>' + data[region][user].position + '</td>');
228 userInfo.append('</tr>');
229 }
230 }
231 }
232 userInfo.append('</table>');
233 $('#SimSessionStats').empty();
234 $('#SimSessionStats').append(userInfo.toString());
235 }
236  
237 function DebugLog(msg) {
238 $("#DEBUG").append('<div>' + msg + '</div>');
239 $("#DEBUG").show();
240 }
241  
242 function StringBuffer() {
243 this.__strings__ = new Array;
244 }
245 StringBuffer.prototype.append = function(str) {
246 this.__strings__.push(str);
247 }
248 StringBuffer.prototype.toString = function() {
249 return this.__strings__.join("");
250 }
251  
252 </script>
253 </head>
254 <body id="SimBody">
255 <div id="SimHeader"></div>
256 <div id="SimContent">
257  
258 <!-- ============================================== -->
259 <div class="SimSectionContainer">
260 <a class="SimSectionHeader" href="#">Simulator Stats</a>
261 <div id="SimSimStats" class="SimSection">
262 </div> <!-- SimSimStats -->
263 </div> <!-- SimSectionContainer -->
264  
265 <!-- ============================================== -->
266 <div class="SimSectionContainer">
267 <a class="SimSectionHeader" href="#">Region Stats</a>
268 <div id="SimRegionStats" class="SimSection">
269 </div> <!-- SimRegionStats -->
270 </div> <!-- SimSectionContainer -->
271  
272 <!-- ============================================== -->
273 <div class="SimSectionContainer">
274 <a class="SimSectionHeader" href="#">Sessions</a>
275 <div id="SimSessionStats" class="SimSection">
276 </div> <!-- SimSessionStats -->
277 </div> <!-- SimSectionContainer -->
278  
279 <!-- ============================================== -->
280 <div class="SimSectionContainer">
281 <a class="SimSectionHeader" href="#">Log File</a>
282 <div id="SimLogFile" class="SimSection">
283 </div> <!-- SimLogFile -->
284 </div> <!-- SimSectionContainer -->
285  
286 <!-- ============================================== -->
287 </div> <!-- SimContent -->
288 <div id="DEBUG"></div>
289 <div id="SimFooter"></div>
290 </body>
291 </html>