blob: 02cd8492fd06587322c304727e6787c42e2c5407 [file] [log] [blame]
Carsten Ziegelerdef0aa22009-09-24 12:09:34 +00001/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
Valentin Valchev699cc022010-03-15 14:17:58 +000017var eventsTable = false;
Carsten Ziegelerdef0aa22009-09-24 12:09:34 +000018
19/* displays a date in the user's local timezone */
20function printDate(time) {
21 var date = time ? new Date(time) : new Date();
22 return date.toLocaleString();
23}
24
Valentin Valchev699cc022010-03-15 14:17:58 +000025function renderData( eventData ) {
26 $('.statline').html(eventData.status); // FIXME:
27
28 // append table view
29 eventsBody.empty();
30 for ( var i in eventData.data ) entry( eventData.data[i] );
31 eventsTable.trigger('update').trigger('applyWidgets');
32
33 // append timeline view
34 timeline.empty();
35 for ( var i in eventData.data ) entryTimeline( eventData.data[i] );
Carsten Ziegelerdef0aa22009-09-24 12:09:34 +000036}
37
Valentin Valchev699cc022010-03-15 14:17:58 +000038
39function entryTimeline( /* Object */ dataEntry ) {
40 var txt = '<div class="event event' + dataEntry.category + '" style="width:' + dataEntry.width + '%">' +
41 '<b>' + dataEntry.offset + '</b>&nbsp;<b>' + dataEntry.topic + '</b>';
42 if ( dataEntry.info ) txt += '&nbsp;:&nbsp;' + dataEntry.info;
43 txt += '</div>';
44 timeline.prepend(txt);
Carsten Ziegeler40f56e32009-09-24 14:33:35 +000045}
Valentin Valchev699cc022010-03-15 14:17:58 +000046
47function entry( /* Object */ dataEntry ) {
48 var properties = dataEntry.properties;
49
50 var propE;
51 if ( dataEntry.info ) {
52 propE = text(dataEntry.info);
53 } else {
Valentin Valchev699cc022010-03-15 14:17:58 +000054 var bodyE = createElement('tbody');
Valentin Valchev699cc022010-03-15 14:17:58 +000055 for( var p in dataEntry.properties ) {
56 bodyE.appendChild(tr(null, null, [
Valentin Valchevbb75c892010-03-24 07:34:38 +000057 td('propName', null, [text(p)]),
58 td('propVal' , null, [text(dataEntry.properties[p])])
Valentin Valchev699cc022010-03-15 14:17:58 +000059 ]));
60 }
Valentin Valchevbb75c892010-03-24 07:34:38 +000061 propE = createElement('table', 'propTable', null, [ bodyE ]);
Valentin Valchev699cc022010-03-15 14:17:58 +000062 }
63
64 $(tr( null, { id: 'entry' + dataEntry.id }, [
65 td( null, null, [ text( printDate(dataEntry.received) ) ] ),
66 td( null, null, [ text( dataEntry.topic ) ] ),
Valentin Valchevbb75c892010-03-24 07:34:38 +000067 td( null, null, [ propE ] )
Valentin Valchev699cc022010-03-15 14:17:58 +000068 ])).appendTo(eventsBody);
69}
70
71var timeline = false;
Valentin Valchevbb75c892010-03-24 07:34:38 +000072var timelineLegend = false;
Valentin Valchev699cc022010-03-15 14:17:58 +000073$(document).ready(function(){
74 eventsTable = $('#eventsTable');
75 eventsBody = eventsTable.find('tbody');
76 timeline = $('#timeline');
Valentin Valchevbb75c892010-03-24 07:34:38 +000077 timelineLegend = $('#timelineLegend');
Valentin Valchev699cc022010-03-15 14:17:58 +000078
79 $('#clear').click(function () {
80 $.post(pluginRoot, { 'action':'clear' }, renderData, 'json');
Carsten Ziegelerdef0aa22009-09-24 12:09:34 +000081 });
Valentin Valchev699cc022010-03-15 14:17:58 +000082 $('#switch').click(function() {
83 var timelineHidden = timeline.hasClass('ui-helper-hidden');
84 if (timelineHidden) {
85 $(this).text(i18n.displayList);
86 timeline.removeClass('ui-helper-hidden');
Valentin Valchevbb75c892010-03-24 07:34:38 +000087 timelineLegend.removeClass('ui-helper-hidden');
Valentin Valchev699cc022010-03-15 14:17:58 +000088 eventsTable.addClass('ui-helper-hidden');
89 } else {
90 $(this).text(i18n.displayTimeline);
91 timeline.addClass('ui-helper-hidden');
Valentin Valchevbb75c892010-03-24 07:34:38 +000092 timelineLegend.addClass('ui-helper-hidden');
Valentin Valchev699cc022010-03-15 14:17:58 +000093 eventsTable.removeClass('ui-helper-hidden');
94 }
95 });
96 $('#reload').click(function() {
97 $.get(pluginRoot + '/data.json', null, renderData, 'json');
Valentin Valchev699cc022010-03-15 14:17:58 +000098 }).click();
99});