2015-02-20 04:10:52 +00:00
|
|
|
/**
|
2015-03-23 18:48:02 +00:00
|
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the BSD-style license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
*
|
2015-02-20 04:10:52 +00:00
|
|
|
* @providesModule main
|
|
|
|
*/
|
|
|
|
var Channel = require('Channel');
|
|
|
|
|
|
|
|
function toArray(arr) {return Array.prototype.slice.apply(arr);}
|
|
|
|
function $(sel) {return document.querySelector(sel);}
|
|
|
|
function $$(sel) {return toArray(document.querySelectorAll(sel));}
|
|
|
|
|
|
|
|
window.addEventListener('load', function() {
|
|
|
|
function channelLog() {
|
|
|
|
var args = Array.prototype.slice.apply(arguments);
|
|
|
|
var ts = new Date();
|
|
|
|
var el = document.createElement('li');
|
|
|
|
args.unshift(ts.getHours() + ':' +
|
|
|
|
('0' + ts.getMinutes()).substr(0,2) + ':' +
|
|
|
|
('0' + ts.getSeconds()).substr(0,2));
|
|
|
|
el.className = 'console-entry';
|
|
|
|
el.innerHTML = args.join(' ');
|
|
|
|
$('#console').appendChild(el);
|
|
|
|
el.scrollIntoView();
|
|
|
|
}
|
|
|
|
|
|
|
|
global.addEventListener('ChannelInit', function(event) {
|
|
|
|
$('#console').innerHTML = '';
|
|
|
|
channelLog(event.type);
|
|
|
|
});
|
|
|
|
|
|
|
|
global.addEventListener('ChannelLog', function(event) {
|
|
|
|
channelLog.apply(null, event.detail);
|
|
|
|
});
|
|
|
|
|
|
|
|
// Tab pane support
|
|
|
|
function showTab(paneId) {
|
|
|
|
paneId = paneId.replace(/\W/g, '');
|
|
|
|
if (paneId) {
|
|
|
|
$$('#nav-panes > div').forEach(function(pane) {
|
|
|
|
pane.classList.toggle('active', pane.id === paneId);
|
|
|
|
});
|
|
|
|
$$('#nav-tabs li').forEach(function(tab) {
|
|
|
|
tab.classList.toggle('active',
|
|
|
|
tab.getAttribute('data-pane') === paneId);
|
|
|
|
});
|
|
|
|
global.history.replaceState(null, null, '#' + paneId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$('#nav-tabs').onclick = function(e) {
|
|
|
|
showTab(e.target.getAttribute('data-pane'));
|
|
|
|
};
|
|
|
|
|
|
|
|
// Show current pane
|
|
|
|
showTab(location.hash);
|
|
|
|
|
|
|
|
// Connect to server-push channel
|
|
|
|
Channel.connect();
|
|
|
|
});
|