blob: 8e29546a926da4af2250b49a37b57f5bbdda27aa [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
rootUi = new (function() {
this.savedScrollTop_ = 0;
this.onDomReady_ = function() {
$('#js_loading_banner').hide();
$('#tabs').tabs({activate: this.onTabChange_.bind(this)});
$('#tabs').css('visibility', 'visible');
webservice.onServerUnreachableOrTimeout =
this.onServerUnreachableOrTimeout.bind(this);
if (window.DISABLE_NATIVE_TRACING) {
$('#tabs').tabs('disable', '#tabs-nheap');
$('#tabs').tabs('disable', '#tabs-settings');
}
// Initialize the status bar.
$('#status_messages').mouseenter(function() {
$('#status_bar').addClass('expanded');
$('#status_messages').scrollTop($('#status_messages').height());
});
$('#status_messages').mouseleave(function() {
$('#status_bar').removeClass('expanded');
});
$('#progress_bar').progressbar({value: 1});
};
this.showTab = function(tabId) {
var index = $('#tabs-' + tabId).index();
if (index > 0)
$('#tabs').tabs('option', 'active', index - 1);
};
this.onTabChange_ = function(_, ui) {
switch(ui.newPanel.attr('id').replace('tabs-', '')) {
case 'ps':
return processes.redraw();
case 'prof':
return profiler.redraw();
case 'mm':
return mmap.redraw();
case 'nheap':
return nheap.redraw();
case 'settings':
return settings.reload();
case 'storage':
return storage.reload();
}
};
this.showDialog = function(content, title) {
var dialog = $('#message_dialog');
title = title || '';
if (dialog.length == 0) {
dialog = $('<div id="message_dialog"/>');
$('body').append(dialog);
}
if (typeof(content) == 'string')
dialog.empty().text(content);
else
dialog.empty().append(content); // Assume is a jQuery DOM object.
dialog.dialog({modal: true, title: title, height:'auto', width:'auto'});
};
this.hideDialog = function() {
$('#message_dialog').dialog('close');
};
this.setProgress = function(value) {
$('#progress_bar').progressbar('option', 'value', value);
$('#progress_bar-label').text(value + '%' );
};
this.setStatusMessage = function(content) {
$('#status_messages').text(content);
};
this.onServerUnreachableOrTimeout = function() {
timers.stopAll();
this.showDialog('The www service is unreachable. ' +
'It probably crashed, Check the terminal output.');
};
// Sad hack required to work around a Google Table bug (goo.gl/TXr3vL).
this.saveScrollPosition = function() {
this.savedScrollTop_ = $('#wrapper').scrollTop();
};
this.restoreScrollPosition = function() {
$('#wrapper').scrollTop(this.savedScrollTop_);
};
$(document).ready(this.onDomReady_.bind(this));
})();