JSFiddle - React, Tailwind, and code Playground

by robtown

HTML

<script src="http://www.robtown.com/road/js/synchdivscroll.js"></script>
<script src="http://www.robtown.com/road/js/getCulverts.js"></script>
<script src="http://www.robtown.com/road/js/addMapFeatures.js"></script>
<script src="http://www.robtown.com/road/js/writeMessages.js"></script>
<script src="http://www.robtown.com/road/images/canvasBG1.jpg"></script>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script src="http://www.html5canvastutorials.com/libraries/kinetic-v3.9.7.js"></script>
    <script type="text/javascript" src="js/getCulverts.js"></script>
    <script type="text/javascript" src="js/addMapFeatures.js"></script>
     <script type="text/javascript" src="js/writeMessages.js"></script>

<script>
//window.addEventListener('resize',resize,false);

 window.onload =  function() {
          var windowWidth = 2000;
          
        var stage = new Kinetic.Stage({
          container: "canvas1",
          
          width: windowWidth,
          height: 300
        });
           var stage2 = new Kinetic.Stage({
          container: "canvas2",          
          width: windowWidth,
          height: 300
        });
        var dragBarLayer = new Kinetic.Layer(); 
        var dragBarLayer2 = new Kinetic.Layer(); 
        var culvertLayer = new Kinetic.Layer();
        var streetLayer = new Kinetic.Layer();
        var boxLayer = new Kinetic.Layer();
        var messageLayer = new Kinetic.Layer();
        var rectX = stage.getWidth() / 2 - 50;
        var rectY = stage.getHeight() / 2 - 25;

         var street = new Kinetic.Rect({
          x: 0,
          y: 90,
          width: windowWidth,
          height: 30,
          fill: "#999",
          
          draggable: false
        });
        var box = new Kinetic.Rect({
          x: rectX,
          y: rectY,
          width: 100,
          height: 50,
         ...

CSS

@charset "utf-8";
html body {
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
    background-color: #69F;
}

#wrapper {
    width: 960px;
    margin-top: 60px;
}
#canvas #canvas1 {
    background-color: #FFFFFF;
    display: block;
}
#canvas1 {
    background-image: url(http://www.robtown.com/road/images/canvas1BG.jpg);
    background-repeat: repeat-x;
    background-position: left;
    padding: 0px;
    margin: 0px;
    width: 2000px;
}
#canvas2{
    background-image: url(http://www.robtown.com/road/images/canvas1BG.jpg);
    background-repeat: repeat-x;
    background-position: left;
    padding: 0px;
    margin: 0px;
    width: 2000px;
}
.container {
    height: auto;
    width: 960px;
    overflow: hidden;
    margin-right: auto;
    margin-left: auto;
    background-color: #FFF;
    padding: 0px;
    margin-top: 0px;
    margin-bottom: 0px;
}
.container .header {
    background-color: #CCC;
    height: 30px;
    width: 960px;
    margin: 0px;
    padding: 0px;
}
.container .header #menu {
    display: block;
    margin-top: auto;
    margin-bottom: auto;
    margin-left: 12px;
    padding-top: 6px;
    padding-right: 4px;
    padding-bottom: 4px;
    padding-left: 4px;
}
.container .header #menu li {
    display: inline;
    padding-left: 20px;
    font-family: Arial, Helvetica, sans-serif;
    color: #FFF;
    font-weight: bold;
    font-size: 16px;
    padding-top: 4px;
    margin-top: 4px;
}
.container .content #canvasSeperator {
    background-color: #999;
    margin: 0px;
    padding: 0px;
    height: 25px;
    width: 960px;
}
.container .content {
    height: auto;
    width: 960px;
}
.container #footer {
    background-color: #CCC;
    margin: 0px;
    padding: 0px;
    height: 20px;
    width: 960px;
}
.container .content #canvas1Div {
    height: 300px;
    width: 960px;
    overflow: auto;
}
.container .content #canvas2Div {
    height: 300px;
    width: 960px;
    overflow: auto;
}

JavaScript

window.onload =  function() {
          var windowWidth = 2000;
          
        var stage = new Kinetic.Stage({
          container: "canvas1",
          
          width: windowWidth,
          height: 300
        });
           var stage2 = new Kinetic.Stage({
          container: "canvas2",          
          width: windowWidth,
          height: 300
        });
        var dragBarLayer = new Kinetic.Layer(); 
        var dragBarLayer2 = new Kinetic.Layer(); 
        var culvertLayer = new Kinetic.Layer();
        var streetLayer = new Kinetic.Layer();
        var boxLayer = new Kinetic.Layer();
        var messageLayer = new Kinetic.Layer();
        var rectX = stage.getWidth() / 2 - 50;
        var rectY = stage.getHeight() / 2 - 25;

         var street = new Kinetic.Rect({
          x: 0,
          y: 90,
          width: windowWidth,
          height: 30,
          fill: "#999",
          
          draggable: false
        });
        var box = new Kinetic.Rect({
          x: rectX,
          y: rectY,
          width: 100,
          height: 50,
          fill: "#00D2FF",
          stroke: "black",
          strokeWidth: 4,
          draggable: true
        });
        //
        
            var dragBox = new Kinetic.Rect({
                          x: 0,
                          y: 0,
                          width: 25,
                          height: 300,
                          fill: "yellow",
                          alpha: .5,
                          strokeWidth: 0,
                          dragConstraint: "horizontal",
                          draggable: true
                          });
    dragBox.on("mousedown", function(){
        var mousePos=dragBox.getPosition();
        writeMessage(messageLayer,mousePos.x);
               });

        dragBox.on("mouseup", function() {
            writeMessage(messageLayer, "");
            //dragBox2.y=dragBox.y;
            stage2.draw();
        });
               ...