emujs
Version:
A responsiveness testing tool on browsers
122 lines (101 loc) • 2.46 kB
JavaScript
var emu = (function($){ // jshint ignore:line
'use strict';
var ret, active, _active, convert, deviceSize;
// import "assets/list.js"
// import "assets/utils.js"
// import "assets/json2.js"
// import "assets/msg.js"
// import "assets/printscr.js"
// USER INTERFACE
// import "assets/ctrl.js"
// import "assets/view.js"
// import "assets/btm.js"
// convert string to size
convert = function(sizePair){
var parsed = sizePair.split('x');
return {
width : parseInt(parsed[0], 10),
height: parseInt(parsed[1], 10)
};
};
// detect device size
// base on Bootstrap 3 media queries
deviceSize = function(size){
if(size.width >= 1200){
return 'large';
}
if(size.width >= 922){
return 'medium';
}
if(size.width >= 768){
return 'small';
}
else{
return 'extra small';
}
};
active = (function(list){
_active = utils.first(list);
return function ret(id){
_active = id;
view.resize(convert(_list[_active]));
ctrl.build(_list, _active);
};
})(_list);
if(utils.isTop){ // detect iframe
ret = function(id){
if(id){
active(id);
btm.log('Simulating ' + _active.replace(/\_/g, ' ') + '... <u>' + deviceSize(convert(_list[_active])) + '</u> device');
}
else{
$('<div/>', {
id : 'emu'
}).appendTo('body');
ctrl(_list);
view();
btm();
$('<button/>').addClass('emu').text('emu').appendTo(document.body).click(function(){
$('#emu').fadeToggle('fast', function(){
});
});
// install message boxes
msg.open('screenshot');
msg.pull('screenshot', function(data){
btm.image(_active.replace(/\_/g, ' ') ,data.src, data.size);
});
msg.open('log');
msg.pull('log', function(data){
btm.log(data);
});
}
};
$(document).ready(function(){
// view.resize(_list[_active]);
active(_active);
$('#emu').hide();
});
$(window).resize(function(){
view.rescale();
});
}
else{
ret = function(){
if(utils.url.param.has('screenshot')){
$(window).load(function(){
printscr(document.body);
});
}
else{
$(window).load(function(){
msg.push('log', 'Simulation done. Device is ready.');
});
}
};
}
// add or re-set a device
ret.add = function(name, screenSolution){
_list[name] = screenSolution;
};
return ret;
})(jQuery);