Skip to content

Instantly share code, notes, and snippets.

@arpitnarechania
Last active February 5, 2017 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arpitnarechania/24d954108f3331abe9745265230a3dc5 to your computer and use it in GitHub Desktop.
Save arpitnarechania/24d954108f3331abe9745265230a3dc5 to your computer and use it in GitHub Desktop.
Basic Shapes - Line

Generating a line using D3.js

<!DOCTYPE>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Basic Shapes - Line</title>
<!-- JavaScript Libraries //-->
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<!-- CSS Style //-->
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="form" style="display:inline-block;float:left;">
<div class="formElement">
<span >Width</span>
<input id="width" type="number">
</div>
<div class="formElement">
<span >Height</span>
<input id="height" type="number">
</div>
<div class="formElement">
<span >X1</span>
<input id="x1" type="number">
</div>
<div class="formElement">
<span >Y1</span>
<input id="y1" type="number">
</div>
<div class="formElement">
<span >X2</span>
<input id="x2" type="number">
</div>
<div class="formElement">
<span >Y2</span>
<input id="y2" type="number">
</div>
<div class="formElement">
<span >Stroke Color</span>
<input id="strokeColor" type="text">
</div>
<div class="formElement">
<span >Stroke Width</span>
<input id="strokeWidth" type="number">
</div>
</div>
<div id="line" style="display:inline-block;float:right;"></div>
</body>
<script type="text/javascript" src="main.js"></script>
<script>
var config = {
margin : {top: 50, right: 50, bottom: 50, left: 50},
x1 : 50,
y1 : 50,
x2 : 250,
y2 : 100,
height: 170,
width:250,
stroke_color : "black",
stroke_width : 2,
dom_element : "#line"
};
$("#width").on("input",function(){
config.width = parseInt($(this).val());
renderLine(config,false);
});
$("#height").on("input",function(){
config.height = parseInt($(this).val());
renderLine(config,false);
});
$("#x1").on("input",function(){
config.x1 = parseInt($(this).val());
renderLine(config,false);
});
$("#y1").on("input",function(){
config.y1 = parseInt($(this).val());
renderLine(config,false);
});
$("#x2").on("input",function(){
config.x2 = parseInt($(this).val());
renderLine(config,false);
});
$("#y2").on("input",function(){
config.y2 = parseInt($(this).val());
renderLine(config,false);
});
$("#strokeColor").on("input",function(){
config.stroke_color = $(this).val();
renderLine(config,false);
});
$("#strokeWidth").on("input",function(){
config.stroke_width = parseInt($(this).val());
renderLine(config,false);
});
renderLine(config,true);
</script>
</html>
function renderLine(config,first_time){
if(first_time){
var svg = d3.select(config.dom_element).append("svg")
.style("width", config.width + config.margin.left + config.margin.right)
.style("height", config.height + config.margin.top + config.margin.bottom);
svg
.append("line")
.attr("x1",config.x1)
.attr("y1",config.y1)
.attr("x2",config.x2)
.attr("y2",config.y2)
.style("stroke",config.stroke_color)
.style("stroke-width",config.stroke_width)
$("#x1").val(config.x1);
$("#y1").val(config.y1);
$("#x2").val(config.x2);
$("#y2").val(config.y2);
$("#width").val(config.width);
$("#height").val(config.height);
$("#strokeColor").val(config.stroke_color);
$("#strokeWidth").val(config.stroke_width);
}else{
var dom_element = d3.select("svg")
.style("width", config.width + config.margin.left + config.margin.right)
.style("height", config.height + config.margin.top + config.margin.bottom);
dom_element.select("line")
.attr("x1",config.x1)
.attr("y1",config.y1)
.attr("x2",config.x2)
.attr("y2",config.y2)
.style("stroke",config.stroke_color)
.style("stroke-width",config.stroke_width);
}
}
body{
width: 600px;
}
input {
width:50px;
}
.formElement{
padding:8px;
}
span{
display: inline-block;
width: 150px;
}
svg{
border: 1px solid black;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment