Workspace / Serial Port v1.7

This is a workspace for a generic Serial Port console for ChiliPeppr's Hardware Fiddle.

HTML

<script src="http://www.chilipeppr.com/js/require.js"></script>
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<!-- This is the workspace layout for the Serial Port Workspace -->
<div id="com-chilipeppr-ws-serialport">
    <div class="container-fluid">
        <div class="row">
            <div class="col-xs-8 widget padrt">
                <!-- Workspace Hdr -->
                <div id="com-chilipeppr-ws-serialport-hdr" class="well">Workspace - Serial Port
                    <div id="com-chilipeppr-ws-serialport-menu" class="pull-right">            
                        <div class="btn-group">
                            <div class="dropdown">
                                <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
                                <ul class="dropdown-menu dropdown-menu-right" role="menu">
                                    <li id="com-chilipeppr-ws-serialport-menu-billboard" style="width:350px;"></li>
                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
                <!-- Serial In/Out Text Log-->
                <div id="com-chilipeppr-serialport-log" class="zhigh">Load Serial Port Log Here</div>
            </div>
            <div class="col-xs-4 nopadding">
                <!-- Serial Port Selector -->
                <div id="com-chilipeppr-serialport-spselector" class="">Load Serial Port Selector Here</div>
            </div>
        </div>
    </div>
</div>

CSS

#com-chilipeppr-ws-serialport-hdr {
    margin-bottom:10px;
    padding: 10px 15px;
}
.row .widget {
    margin:0;
    padding:0;
}
.panel {
    margin-bottom:10px;
}
.row .padrt {
    padding-right:10px;
}
.nopadding {
    padding:0;
}
.nomargin {
    margin:0;
}
.noheight {
    height:0;
}

JavaScript

// Makes sure we only run once jquery is loaded as well
// as ensuring we don't load javascript libraries multiple times
cprequire(["chilipeppr_ready"], function () {

    // Define standard ChiliPeppr objects
    var ws = {
        id: "com-chilipeppr-ws-serialport",
        url: 'http://jsfiddle.net/chilipeppr/w9YQV/show/light',
        fiddleurl: 'http://jsfiddle.net/chilipeppr/w9YQV/',
        name: "Workspace / Serial Port",
        desc: "This is a workspace for a generic Serial Port console for ChiliPeppr's Hardware Fiddle.",
        foreignSubscribe: {
        },
        foreignPublish: {
        }
    }
            
    // Load top bar elements


    // Workspace Menu with Workspace Billboard
    // http://jsfiddle.net/jlauer/yC8Hv/
    chilipeppr.load(
        "#com-chilipeppr-ws-serialport-menu-billboard",
        "http://fiddle.jshell.net/chilipeppr/astYW/show/light/");
    chilipeppr.load(
        "http://fiddle.jshell.net/chilipeppr/zMbL9/show/light/", 
        function () {
            require(['inline:com-chilipeppr-elem-pubsubviewer'], function (pubsubviewer) {
                    pubsubviewer.attachTo(
                        $('#com-chilipeppr-ws-serialport-menu .dropdown-menu'), 
                        ws, 
                        "Workspace"
                    );
                });
            });
            

    // Serial Port Log Window
    // http://jsfiddle.net/chilipeppr/JB2X7/
    // NEW VERSION http://jsfiddle.net/chilipeppr/rczajbx0/
    chilipeppr.load("#com-chilipeppr-serialport-log",
        "http://fiddle.jshell.net/chilipeppr/rczajbx0/show/light/",

    function () {
        cprequire(
        ["inline:com-chilipeppr-widget-spconsole"],

        function (spc) {
            spc.init(true);
            
            // resize this console on a browser resize
            $(window).on('resize', function (evt) {
                //console.log("serial-port-console. resize evt:", evt);
                if ($.isWindow(evt.target)) {
 ...