-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
150 lines (123 loc) · 2.96 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
// first we need to create a stage
var stage = new Konva.Stage({
container: 'konva-holder', // id of container <div>
width: window.innerWidth,
height: 500,
stroke: 'black',
strokeWidth: 8
});
stage.getContainer().style.border = '3px solid black'
// then create layer
var layer = new Konva.Layer();
// create our shape
var circle = new Konva.Circle({
x: stage.width() / 2,
y: stage.height() / 2,
radius: 70,
fill: 'red',
stroke: 'black',
strokeWidth: 4,
draggable: true
});
var text = new Konva.Text({
text: "Hello, World!",
x: stage.width() / 2,
y: stage.height() / 2,
fontSize: 36,
fill: 'navy',
draggable: true
});
// add the shape to the layer
layer.add(circle);
layer.add(text);
// add the layer to the stage
stage.add(layer);
// IMAGE
// create an image object
var imageObj = new Image();
imageObj.src = "goat.jpg";
var image = new Konva.Image({
x: 50,
y: 50,
image: imageObj,
width: 100,
height: 100
});
// create a new Konva.Group object
var group = new Konva.Group({
x: 50,
y: 50,
draggable: true
});
// add the image to the group
group.add(image);
// add the group to the layer
layer.add(group);
// TRANSFORMER
// create a transformer
var transformer = new Konva.Transformer();
layer.add(transformer);
function addClickEventForTransformer() {
// remove all existing click events
layer.getChildren().forEach(function(node) {
node.off('click');
});
layer.off('click');
// add a click event to all shapes
layer.getChildren().forEach(function(node) {
node.on('click', function() {
// check if the transformer is on the same shape
if (transformer.nodes()[0] === this) {
// hide the transformer
transformer.hide();
} else {
// update the transformer with the new shape
transformer.nodes([this]);
// show the transformer
transformer.show();
}
// force the layer to draw
layer.draw();
});
});
// add a click event to the background
layer.on('click', function(e) {
// check if the click was on a shape
if(e.target === layer){
//// hide the transformer when the background is clicked
transformer.hide();
// force the layer to draw
layer.draw();
}
});
}
addClickEventForTransformer()
// IMAGE UPLOAD
function handleFileSelect() {
var input = document.getElementById("fileInput");
var file = input.files[0];
var reader = new FileReader();
reader.onload = function(event) {
var imageObj = new Image();
imageObj.src = event.target.result;
imageObj.onload = function() {
var image = new Konva.Image({
x: 50,
y: 50,
image: imageObj,
width: 300,
height: 300
});
var group = new Konva.Group({
x: 50,
y: 50,
draggable: true
});
group.add(image);
layer.add(group);
layer.draw();
addClickEventForTransformer()
};
};
reader.readAsDataURL(file);
}