summaryrefslogtreecommitdiffstats
path: root/panes/vmlogs.html
blob: d575717e746ef7117db3ee3563d6fe6e7c96781e (plain)
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
<!--
	
	VM Log dialog
	Copyright (C) 2010-2015 Ian Moore (imoore76 at yahoo dot com)

	$Id: vmlogs.html 595 2015-04-17 09:50:36Z imoore76 $
-->
<table id='vboxVMLogContainer' class='vboxInvisible' style='width:100%;height:100%'>
	<tr style='vertical-align:bottom'>
		<td style='height: 1%;' id='vboxVMLogsTabsList'></td>
	</tr>
	<tr id='vboxVMLogsTabsRow' style='vertical-align:top'>
		<td id='vboxVMLogTabsContainer'></td>
	</tr>
</table>
<script type='text/javascript'>

function vboxShowLogsInit(vm) {

	$('#vboxVMLogsTabsList').empty();
	$('#vboxVMLogTabsContainer').empty();
	
	$('<div />').attr({'id':'vboxVMLogTabs','style':'margin: 0px; padding: 0px;'}).appendTo($('#vboxVMLogTabsContainer'));
	
	var logs = $('#vboxVMLogsDialog').data('logs');

	if(!logs || !logs.length) {
		$('#vboxVMLogTabs').html(trans('<p>No log files found. Press the <b>Refresh</b> button to rescan the log folder <nobr><b>%1</b></nobr>.</p>','UIVMLogViewer').replace('%1',$('#vboxVMLogsDialog').data('logpath')));
		return;
	}

	// Pattern for regexp replacement
	var preg = new RegExp('.*'+$('#vboxPane').data('vboxConfig').DSEP.replace('\\','\\\\'));

	var ul = $('<ul />').attr({'id':'vboxVMLogsUL'});
	for(var i = 0; i < logs.length; i++) {

		// Replace path with just file name
		logs[i] = logs[i].replace(preg,'');

		// Tab link
		$('<li />').html('<a href="#vboxVMLog'+i+'"><span>'+logs[i]+'</span></a>').appendTo(ul);				

		// Tab content
		$('<div />').css({'padding':'4px','margin':'0px'}).attr({'id':'vboxVMLog'+i,'class':'vboxVMLog vboxDialogContent'}).data('logIndex',i).one('show',function(){

			$(this).html('<img src="images/spinner.gif" />');
			
			$.when({'logIndex':$(this).data('logIndex')}, vboxAjaxRequest('machineGetLogFile',{'vm':vm.id,'log':$(this).data('logIndex')})).done(function(x,d){
				
				// -8 for padding set above + parent's padding
				var pHeight = $('#vboxVMLogTabs').innerHeight() - 10;
				
				var frm = $('<form />');
				$(frm).height(pHeight);
				$('<textarea />').attr({'id':'vboxLogText'+x.logIndex,'spellcheck':'false','wrap':'off','readonly':'true'}).height(pHeight).val(d.responseData).appendTo(frm);
				$('#vboxVMLog'+x.logIndex).html('').append(frm);
				$('#vboxLogText'+x.logIndex).attr('scrollTop',$('#vboxLogText'+x.logIndex).attr('scrollHeight'));
				
			});

			
			
		}).appendTo($('#vboxVMLogTabs'));
			
		
	}
	$('#vboxVMLogTabs').prepend(ul);
	
	$('#vboxVMLogTabs').tabs({'activate':function(e,i){
		$('#vboxVMLogTabs').children('div:eq('+$('#vboxVMLogTabs').tabs('option','active')+')').trigger('show');
	}});
	
	// Move tabs to table
	$('#vboxVMLogsUL').css({'border-bottom':'0px','margin-bottom':'0px','padding-bottom':'0px'}).detach().appendTo($('#vboxVMLogsTabsList').addClass($('#vboxVMLogTabs').css({'border-top':'0px','margin-top':'0px','padding-top':'0px'}).removeClass('ui-corner-all').attr('class')));
	
	// Set height
	$('#vboxVMLogTabs').css({'display':'none'});
	
	// -6 to account for padding and leave a small buffer
	$('#vboxVMLogTabs').css({'padding':'0px 2px 2px 2px','margin':'0px','display':''}).height($('#vboxVMLogTabsContainer').css({'padding':'0px','margin':'0px'}).innerHeight()-6);
	
	// Resize dialog resizes these elemtns
	$('#vboxVMLogContainer').parent().on("dialogresizestop",function(e){

		// Set height
		$('#vboxVMLogTabs').css({'display':'none'});
		
		var pHeight = $('#vboxVMLogTabsContainer').innerHeight();
		
		// -4 to account for padding
		// -12 to account for vboxVMLogTabs 2px padding and pane's 4px padding (8 + 4)
		$('#vboxVMLogTabs').css({'display':''}).height(pHeight-4).find('form').height(pHeight-12).find('textarea').height(pHeight-12);
		
		
		
	});
	
	$('#vboxVMLogTabs').children('div:eq(0)').trigger('show');
	
	
	
	
}
</script>