2 /* $Id: table.js 13009 2009-04-10 10:49:28Z baris $ */
4 var filtered_color = "grey";
5 var normal_color = "black";
8 function inTypeA(header_name) {
9 var typeA = ['ST','SN','RES','OS','NRR','NTP','NSR','NSF','NDS','NTH','NEC','LRN','LCY','LPR','LCN','LAT','LON','IP','ASN','AST'];
10 return typeA.indexOf(header_name);
13 function inTypeB(header_name) {
14 var typeB = ['BW','DS','MS','CC','CR','AS','MU','DU','CN'];
15 return typeB.indexOf(header_name);
18 function inTypeC(header_name) {
19 var typeC = ['Rw','Rm','Ry','BWw','BWm','BWy','Lw','Lm','Ly','Sw','Sm','Sy','CFw','CFm','CFy','BUw','BUm','BUy','MUw','MUm','MUy','SSHw','SSHm','SSHy'];
20 return typeC.indexOf(header_name);
23 function inTypeD(header_name) {
25 return typeD.indexOf(header_name);
28 function debugfilter(s) {
29 document.getElementById('debug').innerHTML+=s;
32 function scrollList(tableid) {
36 if (event.keyCode == 40)
38 else if (event.keyCode == 38)
43 function highlightOption(divid) {
45 //debugfilter("highlighting option "+divid);
47 for (var kk in column_headers) {
49 if (document.getElementById(kk))
50 document.getElementById(kk).className = 'out';
53 document.getElementById(divid).className = 'selected';
55 showDescription(divid);
60 function showDescription(h) {
62 //debugfilter("showing description "+h);
64 if (document.getElementById('selectdescr'))
67 document.getElementById('selectdescr').innerHTML = ""+window['desc'+h];
68 else if (column_table[h] && column_table[h]['description'])
69 document.getElementById('selectdescr').innerHTML = column_table[h]['description'];
71 document.getElementById('selectdescr').innerHTML = "No description provided";
76 function overrideTitles() {
78 //debugfilter("<p>overriding...");
80 for (var kk in column_headers) {
82 //debugfilter("here "+kk);
84 if (document.getElementById(kk) && window['title'+kk])
85 document.getElementById('htitle'+kk).innerHTML = window['title'+kk];
90 function changeCheckStatus(column) {
93 if (document.getElementById('selectdescr'))
95 showDescription(document.getElementById(column).value);
97 if (document.getElementById(column).checked)
98 addColumn(document.getElementById(column).value);
100 deleteColumn(document.getElementById(column).value);
105 function updatePeriod(h) {
106 deleteColumn2(h, h+'w');
107 deleteColumn2(h, h+'m');
108 deleteColumn2(h, h+'y');
112 function filterByType(selectedtype) {
114 var notselectedyet = true;
116 for (var kk in column_headers) {
118 if (document.getElementById(kk))
120 if (window['type'+kk] == selectedtype)
122 document.getElementById(kk).className = 'in';
125 notselectedyet = false;
128 document.getElementById(kk).className = 'out';
136 RESET/SAVE CONFIGURATION
140 function resetColumns() {
142 for (var kk in column_table) {
144 if (column_table[kk]['visible'] == true && column_table[kk]['fetch'] == false)
146 else if (column_table[kk]['visible'] == false && column_table[kk]['fetch'] == true)
152 function resetCols(which_conf) {
154 var target_configuration = "|"+document.getElementById(which_conf).value+"|";
156 //debugfilter("<p>Target configuration = "+target_configuration);
158 for (var kk in column_table) {
159 //debugfilter("in "+kk+" ");
161 if (target_configuration.indexOf("|"+kk+"|")>=0)
163 if (document.getElementById('check'+kk))
164 if (document.getElementById('check'+kk).checked == false)
166 debugfilter("<p>Adding "+kk);
172 if (document.getElementById('check'+kk))
173 if (document.getElementById('check'+kk).checked == true)
175 debugfilter("<p>Deleting "+kk);
182 function saveConfiguration(which_conf)
184 var slice_id = document.getElementById('slice_id').value;
186 var target_configuration = document.getElementById(which_conf).value;
188 debugfilter("saving configuration "+target_configuration);
189 updateColumnConfiguration(slice_id, target_configuration);
192 function updateColumnConfiguration(slice_id, value)
195 if (window.XMLHttpRequest)
196 {// code for IE7+, Firefox, Chrome, Opera, Safari
197 xmlhttp=new XMLHttpRequest();
200 {// code for IE6, IE5
201 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
203 xmlhttp.onreadystatechange=function()
205 if (xmlhttp.readyState==4) // && xmlhttp.status==200)
207 //value=xmlhttp.responseText;
208 //debugfilter(value);
209 if (document.getElementById('column_configuration'))
210 document.getElementById('column_configuration').value=value;
213 xmlhttp.open("GET","/plekit/php/updateConf.php?value="+value+"&slice_id="+slice_id+"&tagName=Configuration",true);
220 function resetConfiguration(which_conf)
222 var slice_id = document.getElementById('slice_id').value;
223 var target_configuration = document.getElementById(which_conf).value;
225 debugfilter("reseting configuration "+target_configuration);
227 if (window.XMLHttpRequest)
228 {// code for IE7+, Firefox, Chrome, Opera, Safari
229 xmlhttp=new XMLHttpRequest();
232 {// code for IE6, IE5
233 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
235 xmlhttp.onreadystatechange=function()
237 if (xmlhttp.readyState==4) // && xmlhttp.status==200)
239 //value=xmlhttp.responseText;
240 //debugfilter(value);
241 window.location.reload(true);
244 xmlhttp.open("GET","/plekit/php/updateConf.php?value="+target_configuration+"&slice_id="+slice_id+"&tagName=Configuration",true);
249 function addColumnToConfiguration(column) {
252 var old_configuration = document.getElementById('column_configuration').value;
253 var slice_id = document.getElementById('slice_id').value;
255 var new_configuration = "";
257 if (old_configuration != "")
258 new_configuration = old_configuration += "|"+column;
260 new_configuration = column;
262 //debugfilter("new configuration = "+new_configuration);
264 updateColumnConfiguration(slice_id, new_configuration);
276 function getHTTPObject()
278 if (typeof XMLHttpRequest != 'undefined')
279 { return new XMLHttpRequest(); }
282 { return new ActiveXObject("Msxml2.XMLHTTP"); }
285 try { return new ActiveXObject("Microsoft.XMLHTTP"); }
292 function load_html(column, url) {
293 var req = getHTTPObject();
295 req.open('GET', url, true);
296 req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
297 req.onreadystatechange =
299 if (req.readyState == 4)
300 { updateColumnData(column, req.responseText); }
305 function updateColumnData(column,data) {
308 var headers = column.split("|");
309 var data_table = data.split("|");
311 //debugfilter("<p>headers[0] = "+headers[0]);
312 //debugfilter("<p>sample line = "+data_table[2]);
317 var table_id1 = 'nodes';
318 var table=$(table_id1);
319 var css='#'+table_id1+'>tbody';
320 var rows = $$(css)[0].rows;
322 var data_array1 = new Array();
324 //debugfilter("COLUMN "+column+"<p>");
326 for (var node_index = 1; node_index < data_table.length; node_index++) {
327 if (data_table[node_index] == '---potential---')
329 node_data = data_table[node_index].split(':');
331 data_array1[node_data[0]] = new Array();
333 for (var h_index=0; h_index < headers.length; h_index++) {
335 if (node_data[h_index+1] == "")
336 data_array1[node_data[0]][h_index] = "n/a";
338 data_array1[node_data[0]][h_index] = node_data[h_index+1];
344 for (var row_index = 0; row_index < rows.length ; row_index++) {
345 var tr=rows[row_index];
347 for (var column_index=0; column_index < tr.cells.length; column_index++) {
348 //debugfilter("<p>node id = "+tr.cells[0].innerHTML);
349 var found_index = headers.indexOf(tr.cells[column_index].getAttribute('name'));
350 if (found_index != -1)
351 tr.cells[column_index].innerHTML = data_array1[tr.cells[0].innerHTML][found_index];
356 if (data_table[node_index] == '---potential---')
359 var table_id2 = 'add_nodes';
360 var table2=$(table_id2);
361 var css2='#'+table_id2+'>tbody';
362 var rows2 = $$(css2)[0].rows;
364 var data_array2 = new Array();
366 //debugfilter("COLUMN "+column+"<p>");
368 for (; node_index < data_table.length; node_index++) {
369 if (data_table[node_index] == '')
371 node_data = data_table[node_index].split(':');
373 data_array2[node_data[0]] = new Array();
375 for (var h_index=0; h_index < headers.length; h_index++) {
377 if (node_data[h_index+1] == "")
378 data_array2[node_data[0]][h_index] = "n/a";
380 data_array2[node_data[0]][h_index] = node_data[h_index+1];
385 for (var row_index = 0; row_index < rows2.length ; row_index++) {
386 var tr=rows2[row_index];
388 for (var column_index=0; column_index < tr.cells.length; column_index++) {
389 var found_index = headers.indexOf(tr.cells[column_index].getAttribute('name'));
390 if (found_index != -1)
391 tr.cells[column_index].innerHTML = data_array2[tr.cells[0].innerHTML][found_index];
397 document.getElementById('loadingDiv').innerHTML = ""
404 function addColumnCells(column,header) {
406 //debugfilter("adding cells now: "+column+":"+header);
407 column_table[header]['visible']=true;
409 var cells = document.getElementsByName(header);
412 //debugfilter("got cells -"+cells+"- for "+header);
413 for(var j = 0; j < cells.length; j++)
414 cells[j].style.display = "table-cell";
417 function addColumnSamples(column) {
419 var cellsheader = document.getElementsByName("confheader"+column);
420 for(var j = 0; j < cellsheader.length; j++)
421 cellsheader[j].style.display = "table-cell";
425 function addColumnAjax(column) {
427 var selectedperiod="";
429 if (document.getElementById('selectperiod'+column))
430 selectedperiod = document.getElementById('selectperiod'+column).value;
432 var header = column+""+selectedperiod;
434 addColumnCells(column, header);
436 var t = column_table[header]['tagname'];
437 var slice_id = document.getElementById('slice_id').value;
438 document.getElementById('loadingDiv').innerHTML = "<img src=/plekit/icons/ajax-loader.gif>LOADING ...";
439 var url = "/plekit/php/updateColumn.php?slice_id="+slice_id+"&tagName="+t;
440 load_html(header, url);
442 addColumnToConfiguration(header);
446 function addColumn2(column) {
448 var selectedperiod="";
450 if (document.getElementById('selectperiod'+column))
451 selectedperiod = document.getElementById('selectperiod'+column).value;
453 var header = column+""+selectedperiod;
455 addColumnCells(column,header);
457 addColumnToConfiguration(column);
462 function addColumn(column) {
464 var selectedperiod="";
467 //debugfilter("adding column "+column+" and header "+header);
469 if (inTypeC(column)!=-1)
471 column = column.substring(0,column.length-1);
473 else if (document.getElementById('selectperiod'+column))
475 selectedperiod = document.getElementById('selectperiod'+column).value;
476 header = column+""+selectedperiod;
479 //debugfilter("adding "+column+","+header);
481 addColumnCells(column, header);
483 addColumnToConfiguration(header);
485 column_table[header]['visible'] = true;
490 function checkDataToFetch() {
492 var dataExist = false;
494 for (var kk in column_table) {
496 if (document.getElementById(kk))
498 if (column_table[kk]['visible'] == true && column_table[kk]['fetch'] == false)
500 document.getElementById('fetchbutton').disabled = false;
501 document.getElementById('fetchbutton').style.color = 'red';
509 document.getElementById('fetchbutton').disabled = true;
510 document.getElementById('fetchbutton').style.color = 'grey';
516 function fetchData() {
521 for (var kk in column_table) {
523 if (column_table[kk]['visible'] == true && column_table[kk]['fetch'] == false)
526 tagnames = column_table[kk]['tagname'];
531 tagnames += "|"+column_table[kk]['tagname'];
536 //debugfilter("fetching these columns: "+tagnames+ "("+headers+")");
538 var slice_id = document.getElementById('slice_id').value;
539 document.getElementById('loadingDiv').innerHTML = " <img src=/plekit/icons/ajax-loader.gif> Loading data. Please wait ...";
540 var url = "/plekit/php/updateColumn.php?slice_id="+slice_id+"&tagName="+tagnames;
541 load_html(headers, url);
544 function deleteColumnCells(column, header) {
546 column_table[header]['visible']=false;
548 var cells = document.getElementsByName(header);
549 for(var j = 0; j < cells.length; j++)
550 cells[j].style.display = "none";
554 function deleteColumnSample() {
555 var cellsheader = document.getElementsByName("confheader"+column);
556 for(var j = 0; j < cellsheader.length; j++)
557 cellsheader[j].style.display = "none";
561 function deleteColumnFromConfiguration(column) {
564 var old_configuration = document.getElementById('column_configuration').value;
565 var slice_id = document.getElementById('slice_id').value;
567 var old_columns = old_configuration.split("|");
568 var new_columns = new Array();
570 for (var column_index = 0; column_index < old_columns.length ; column_index++) {
571 var conf = old_columns[column_index].split(':');
572 if (conf[0] != column)
573 new_columns.push(old_columns[column_index]);
576 var new_configuration = new_columns.join("|");
577 updateColumnConfiguration(slice_id, new_configuration);
582 function deleteColumn2(column, header) {
584 deleteColumnCells(column,header);
586 deleteColumnFromConfiguration(column);
588 column_table[header]['visible'] = false;
589 document.getElementById('check'+column).checked = false;
592 function deleteColumn(column) {
594 var selectedperiod="";
597 if (inTypeC(column)!=-1)
599 column = column.substring(0,column.length-1);
601 else if (document.getElementById('selectperiod'+column))
603 selectedperiod = document.getElementById('selectperiod'+column).value;
604 header = column+""+selectedperiod;
607 //debugfilter("deleting "+column+","+header);
609 deleteColumnCells(column,header);
611 deleteColumnFromConfiguration(header);
613 column_table[header]['visible'] = false;
615 //document.getElementById('check'+column).checked = false;
628 function updateColumnThreshold(column, minT, maxT) {
630 debugfilter("updating threshold for "+column+" with "+minT+" and "+maxT);
632 var cells = document.getElementsByName(column);
634 for(var j = 0; j < cells.length; j++)
636 var val = parseFloat(cells[j].innerHTML);
638 if (val >= minT && val <= maxT)
639 cells[j].style.color = filtered_color;
641 cells[j].style.color = normal_color;
644 var old_configuration = document.getElementById('column_configuration').value;
645 var slice_id = document.getElementById('slice_id').value;
647 var old_columns = old_configuration.split("|");
648 var new_columns = new Array();
650 for (var column_index = 0; column_index < old_columns.length ; column_index++) {
651 var conf = old_columns[column_index].split(':');
652 if (conf[0] != column)
653 new_columns.push(old_columns[column_index]);
655 new_columns.push(column+":"+minT+","+maxT);
658 var new_configuration = new_columns.join("|");
660 updateColumnConfiguration(slice_id, new_configuration);
664 function updateExcludeList(column, excludeList) {
666 //debugfilter("updating list");
667 debugfilter("updating list for "+column+" with "+excludeList);
669 var cells = document.getElementsByName(column);
671 for(var j = 1; j < cells.length; j++)
673 var val = cells[j].innerHTML;
675 if (excludeList == val)
676 cells[j].style.color = filtered_color;
678 cells[j].style.color = normal_color;
681 var old_configuration = document.getElementById('column_configuration').value;
682 var slice_id = document.getElementById('slice_id').value;
684 var old_columns = old_configuration.split("|");
685 var new_columns = new Array();
687 for (var column_index = 0; column_index < old_columns.length ; column_index++) {
688 var conf = old_columns[column_index].split(':');
689 if (conf[0] != column)
690 new_columns.push(old_columns[column_index]);
692 new_columns.push(column+":"+excludeList);
695 var new_configuration = new_columns.join("|");
697 updateColumnConfiguration(slice_id, new_configuration);
708 function plekit_table_showAll (slicetable_id) {
710 var table=$(slicetable_id);
711 var css='#'+slicetable_id+'>tbody';
712 var rows = $$(css)[0].rows;
714 // scan rows, elaborate 'visible'
715 for (var row_index = 0; row_index < rows.length ; row_index++) {
716 var tr=rows[row_index];
718 plekit_table_row_visible(tr,visible);
721 plekit_table_count_filtered(slicetable_id);
723 tablePaginater.init(slicetable_id);
727 function plekit_table_count_filtered (slicetable_id) {
728 var table=$(slicetable_id);
729 var css='#'+slicetable_id+'>tbody';
730 var rows = $$(css)[0].rows;
734 // scan rows, elaborate 'visible'
735 for (var row_index = 0; row_index < rows.length ; row_index++) {
736 var tr=rows[row_index];
737 var filtered = false;
739 for (var column_index=0; column_index < tr.cells.length; column_index++)
740 if (tr.cells[column_index].style.color == "red")
748 debugfilter(no_filtered+' nodes do not satisfy the requested threshold');
752 function plekit_table_hide_filtered (slicetable_id) {
753 var table=$(slicetable_id);
754 var css='#'+slicetable_id+'>tbody';
755 var rows = $$(css)[0].rows;
757 var reg = /(^|\s)invisibleRow(\s|$)/;
760 if (!document.getElementById('filtercheck').checked)
762 plekit_table_showAll(slicetable_id);
768 // scan rows, elaborate 'visible'
769 for (var row_index = 0; row_index < rows.length ; row_index++) {
770 var tr=rows[row_index];
773 for (var column_index=0; column_index < tr.cells.length; column_index++) {
774 if (tr.cells[column_index].style.color == filtered_color)
780 plekit_table_row_visible(tr,visible);
783 //debugfilter('hidden '+hidden+' nodes');
784 debugfilter(hidden+' nodes do not satisfy the requested threshold (hidden)');
786 tablePaginater.init(slicetable_id);
792 function plekit_table_apply_config(slicetable_id, configuration) {
794 var new_configuration = document.getElementById('new_conf').value;
795 var all_columns = new_configuration.split("|");
797 var min_values = new Array();
798 var max_values = new Array();
801 for (var column_index = 0; column_index < all_columns.length ; column_index++) {
803 var conf = all_columns[column_index].split(':');
805 if (inTypeB(conf[0]) != -1)
807 var threshold = conf[1].split(',');
808 if (threshold.length == 2)
810 min_values.push(parseFloat(threshold[0]));
811 max_values.push(parseFloat(threshold[1]));
814 else if (inTypeC(conf[0]) == -1)
816 var threshold = conf[2].split(',');
817 if (threshold.length == 2)
819 min_values.push(parseInt(threshold[0]));
820 max_values.push(parseInt(threshold[1]));
831 var table=$(slicetable_id);
832 var css='#'+slicetable_id+'>tbody';
833 var rows = $$(css)[0].rows;
838 for (var row_index = 0; row_index < rows.length ; row_index++) {
840 var tr=rows[row_index];
842 var filtered = false;
844 for (var column_index = 0; column_index < all_columns.length ; column_index++)
845 if (min_values[column_index]!=-1)
847 var val = parseFloat(tr.cells[3+column_index].innerHTML);
849 if (val >= min_values[column_index] && val <= max_values[column_index])
851 tr.cells[3+column_index].style.color = filtered_color;
855 tr.cells[3+column_index].style.color = normal_color;
858 if (tr.cells[3+column_index].style.color == filtered_color)
866 debugfilter(no_filtered+' nodes do not satisfy the requested threshold');
868 //tablePaginater.init(slicetable_id);
873 function reset_select () {
874 var table=$(slicetable_id);
875 var css='#'+slicetable_id+'>tbody';
876 var rows = $$(css)[0].rows;
878 var action = document.getElementById('onlyselected');
879 action.checked=false;
881 // scan rows, elaborate 'visible'
882 for (var row_index = 0; row_index < rows.length ; row_index++) {
883 var tr=rows[row_index];
885 document.getElementById("check"+tr.id).checked=false;
889 plekit_table_count_nodes();
895 function plekit_table_select_filter () {
896 var table=$(slicetable_id);
897 var css='#'+slicetable_id+'>tbody';
898 var rows = $$(css)[0].rows;
900 var reg = /(^|\s)invisibleRow(\s|$)/;
902 var action = document.getElementById('onlyselected');
904 plekit_table_reset_filter();
906 // scan rows, elaborate 'visible'
907 for (var row_index = 0; row_index < rows.length ; row_index++) {
908 var tr=rows[row_index];
913 if(tr.className.search(reg) == -1)
914 if(!document.getElementById("check"+tr.id).checked)
918 if(tr.className.search(reg) != -1)
921 plekit_table_row_visible(tr,visible);
924 tablePaginater.init(slicetable_id);
925 plekit_table_count_nodes();
928 function plekit_table_select_filter2 () {
929 var table=$(slicetable_id);
930 var css='#'+slicetable_id+'>tbody';
931 var rows = $$(css)[0].rows;
933 var reg = /(^|\s)invisibleRow(\s|$)/;
935 var action = document.getElementById('onlyselected');
937 // scan rows, elaborate 'visible'
938 for (var row_index = 0; row_index < rows.length ; row_index++) {
939 var tr=rows[row_index];
944 if(tr.className.search(reg) == -1)
945 if(!document.getElementById("check"+tr.id).checked)
949 if(tr.className.search(reg) != -1)
952 plekit_table_row_visible(tr,visible);
955 tablePaginater.init(slicetable_id);
956 plekit_table_count_nodes();
959 function CheckTopNodes(n) {
960 var table=$(slicetable_id);
961 var css='#'+slicetable_id+'>tbody';
962 var rows = $$(css)[0].rows;
963 var reg = /(^|\s)invisibleRow(\s|$)/;
967 for (var row_index = 0; row_index < rows.length ; row_index++) {
968 var tr=rows[row_index];
970 if(tr.className.search(reg) == -1) {
973 document.getElementById("check"+tr.id).checked=true;
978 document.getElementById("check"+tr.id).checked=false;
985 function CheckRandomNodes(n) {
986 var table=$(slicetable_id);
987 var css='#'+slicetable_id+'>tbody';
988 var rows = $$(css)[0].rows;
989 var reg = /(^|\s)invisibleRow(\s|$)/;
991 var r = n/plekit_table_visible_count();
994 for (var row_index = 0; row_index < rows.length ; row_index++) {
995 var tr=rows[row_index];
997 if(tr.className.search(reg) == -1) {
998 if(Math.random() < r) {
999 document.getElementById("check"+tr.id).checked=true;
1009 function plekit_table_visible_count() {
1010 var table=$(slicetable_id);
1011 var css='#'+slicetable_id+'>tbody';
1012 var rows = $$(css)[0].rows;
1013 var reg = /(^|\s)invisibleRow(\s|$)/;
1016 for (var row_index = 0; row_index < rows.length ; row_index++) {
1017 var tr=rows[row_index];
1019 if(tr.className.search(reg) == -1)
1029 function plekit_table_count_nodes() {
1030 var table=$(slicetable_id);
1031 var css='#'+slicetable_id+'>tbody';
1032 var rows = $$(css)[0].rows;
1033 var reg = /(^|\s)invisibleRow(\s|$)/;
1038 for (var row_index = 0; row_index < rows.length ; row_index++) {
1039 var tr=rows[row_index];
1042 var ch = document.getElementById("check"+tr.id);
1044 if(tr.className.search(reg) == -1)
1057 var dd = document.getElementById('node_statistics');
1058 dd.innerHTML = "Total: "+n+" - Shown: "+v+" - Selected: "+s;
1061 function AutoSelect()
1063 var a = document.getElementById('automatic').value;
1064 var n = parseInt(document.getElementById('no_nodes').value);
1070 CheckRandomNodes(n);
1071 else if (a == "top")
1074 plekit_table_select_filter2();
1075 plekit_table_count_nodes();