Got dragging working
This commit is contained in:
parent
af9a0f4bfa
commit
e0e7568667
@ -4,7 +4,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
output: true,
|
output: true,
|
||||||
execute: function({}, block){
|
execute: function({}, block){
|
||||||
block.find("input[name='input']").val();
|
return block.find("input[name='input']").val();
|
||||||
},
|
},
|
||||||
pageBlock: {
|
pageBlock: {
|
||||||
html: "<input type='text' name='input'></input>",
|
html: "<input type='text' name='input'></input>",
|
||||||
|
5
client/src/diagram.js
Normal file
5
client/src/diagram.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
module.exports = {
|
||||||
|
name: "",
|
||||||
|
state: [],
|
||||||
|
snapshots: []
|
||||||
|
};
|
@ -1 +0,0 @@
|
|||||||
module.exports = {};
|
|
@ -1,2 +1,6 @@
|
|||||||
require("./styles.scss");
|
require("./styles.scss");
|
||||||
require("./pageInteraction");
|
require("./pageInteraction");
|
||||||
|
|
||||||
|
//for lazy debugging, remove when done
|
||||||
|
window.diagram = require("./diagram.js");
|
||||||
|
window.$ = require("jquery");
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
<div class="block">
|
<div class="block" data-type="{{block.type}}" id="{{instance.id}}">
|
||||||
<div class="inputs">
|
<div class="inputs">
|
||||||
{{#each inputs as |desc name|}}
|
{{#each block.inputs as |desc name|}}
|
||||||
<div id="{{name}}">{{desc}}</div>
|
<div id="{{name}}">{{desc}}</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<div>
|
<div>
|
||||||
<div class="title">{{name}}</div>
|
<div class="title">{{block.name}}</div>
|
||||||
{{{pageBlock.html}}}
|
{{{block.pageBlock.html}}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{#if output}}
|
{{#if block.output}}
|
||||||
<div class="output">
|
<div class="output">
|
||||||
Output
|
Output
|
||||||
</div>
|
</div>
|
||||||
|
@ -0,0 +1,77 @@
|
|||||||
|
var blocks = require("../blocks");
|
||||||
|
var diagram = require("../diagram.js");
|
||||||
|
var $ = require("jquery");
|
||||||
|
var uuid = require("node-uuid");
|
||||||
|
|
||||||
|
function blockPositionChange(event){
|
||||||
|
for(var block of diagram.state.filter((block)=>(block.dragging))){
|
||||||
|
block.position.x = event.pageX - $("#workspace").position().left - block.offset.x;
|
||||||
|
block.position.y = event.pageY - $("#workspace").position().top - block.offset.y;
|
||||||
|
|
||||||
|
$("#workspace>.block#" + block.id).css({
|
||||||
|
left: block.position.x,
|
||||||
|
top: block.position.y,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#blocks").on("mousedown", ".block>.main,.block>.inputs", function(event){
|
||||||
|
var newBlock = {
|
||||||
|
id: uuid.v4(),
|
||||||
|
position: {
|
||||||
|
x: 0,
|
||||||
|
y: 0
|
||||||
|
},
|
||||||
|
dragging: true,
|
||||||
|
offset: {
|
||||||
|
x: event.pageX - $(this).parent().offset().left,
|
||||||
|
y: event.pageY - $(this).parent().offset().top
|
||||||
|
},
|
||||||
|
type: $(this).parent().data("type")
|
||||||
|
}
|
||||||
|
diagram.state.push(newBlock);
|
||||||
|
var newBlockElement = $(
|
||||||
|
require("./block.hbs")({
|
||||||
|
block: blocks[newBlock.type],
|
||||||
|
instance: newBlock
|
||||||
|
})
|
||||||
|
).appendTo("#workspace");
|
||||||
|
blockPositionChange(event);
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#workspace").on("mousedown", ".block>.main,.block>.inputs", function(event){
|
||||||
|
if(event.which == 1){ //check left mouse button
|
||||||
|
var block = diagram.state.filter((block)=>(block.id == $(this).parent().attr("id")))[0];
|
||||||
|
block.dragging = true;
|
||||||
|
block.offset.x = event.pageX - $(this).parent().offset().left;
|
||||||
|
block.offset.y = event.pageY - $(this).parent().offset().top;
|
||||||
|
blockPositionChange(event);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#workspace").on("mouseup", ".block>.main,.block>.inputs", function(event){
|
||||||
|
diagram.state.filter((block)=>(block.id == $(this).parent().attr("id")))[0].dragging = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$(document).on("mousemove", function(event){
|
||||||
|
event.preventDefault();
|
||||||
|
blockPositionChange(event);
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#workspace").on("mousedown", ".block", function(event){
|
||||||
|
if(event.which == 3){ //right mouse button, delete
|
||||||
|
event.preventDefault();
|
||||||
|
for(var i in diagram.state){
|
||||||
|
if(diagram.state[i].id == $(this).attr("id")){
|
||||||
|
diagram.state.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$(this).remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on("contextmenu", function(event){
|
||||||
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
|
});
|
@ -1 +1,2 @@
|
|||||||
require("./setupBlocks.js");
|
require("./setupBlocks.js");
|
||||||
|
require("./dragDrop.js");
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
var $ = require("jquery");
|
var $ = require("jquery");
|
||||||
var blocks = require("../blocks");
|
var blocks = require("../blocks");
|
||||||
for(var block of Object.keys(blocks)){
|
for(var block of Object.keys(blocks)){
|
||||||
$("#blocks").append(require("./block.hbs")(blocks[block]));
|
blocks[block].type = block;
|
||||||
|
$("#blocks").append(require("./block.hbs")({
|
||||||
|
block: blocks[block]
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ body{
|
|||||||
border: 1px solid black;
|
border: 1px solid black;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
background-color: white;
|
||||||
.inputs{
|
.inputs{
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
|
@ -24,8 +24,10 @@
|
|||||||
"html-webpack-plugin": "^2.28.0",
|
"html-webpack-plugin": "^2.28.0",
|
||||||
"jquery": "^3.1.1",
|
"jquery": "^3.1.1",
|
||||||
"node-sass": "^4.5.0",
|
"node-sass": "^4.5.0",
|
||||||
|
"node-uuid": "^1.4.7",
|
||||||
"sass-loader": "^6.0.1",
|
"sass-loader": "^6.0.1",
|
||||||
"style-loader": "^0.13.1",
|
"style-loader": "^0.13.1",
|
||||||
|
"uuid": "^3.0.1",
|
||||||
"webpack": "^2.2.1",
|
"webpack": "^2.2.1",
|
||||||
"webpack-dev-server": "^2.3.0"
|
"webpack-dev-server": "^2.3.0"
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user