/
objectMediator.js
82 lines (69 loc) · 2.35 KB
/
objectMediator.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
// 以下の仲介役
ObjectMediator = function() {};
ObjectMediator.prototype.setUp = function() {};
ObjectMediator.prototype.onObjectDragStart = function(id){
socket.send({'action': ACTION_TYPE.REQUEST_LOCK, 'id': id})
};
ObjectMediator.prototype.onObjectDragEnd = function(id, attr){
socket.send({"action": ACTION_TYPE.REQUEST_EDIT,
"id" : id,
"attr" : attr});
};
ObjectMediator.prototype.setUp = function() {
var collection = new ObjectCollection();
socket = new io.Socket('motoki.local',{port:8000}),
raphael = Raphael(document.getElementById('main_boad'), 500, 500);
return;
var collection = new ObjectCollection();
socket = new io.Socket('motoki.local',{port:8000}),
raphael = Raphael(document.getElementById('svg_campus'), 500, 500);
socket.connect();
socket.on('message', function(msg)
{
if (msg.action == ACTION_TYPE.CREATE) {
createObject(msg.id, msg.type);
return;
}
var obj = collection.find(msg.id);
switch (msg.action) {
case ACTION_TYPE.LOCK:
obj.setStatus(OBJECT_STATUS.LOCK);
break;
case ACTION_TYPE.EDIT:
obj.setStatus(OBJECT_STATUS.NONE);
// typeによって処理?
// attrって渡し方がよくない気がする。pathとかattrとかいろいろあるし
// 何がある?
switch (obj.type){
case OBJECT_TYPE.CIRCLE:
obj.object.animate(msg.attr, 300);
break;
case OBJECT_TYPE.PATH:
//obj.object.attr({path:pathToString(msg.attr.path)});
obj.object.animate({path:pathToString(msg.attr.path)},300);
break;
}
break;
}
});
$('#creae_button').bind('click', function() {
socket.send({"action":ACTION_TYPE.REQUEST_CREATE,
"type" :$('#object_type').val()});
});
var createObject = function (id, type)
{
var objectName;
switch (type) {
case OBJECT_TYPE.CIRCLE:
objectName = 'Circle';
break;
case OBJECT_TYPE.PATH:
objectName = 'Path';
break;
default:
throw('unknown type ' + type);
break;
}
collection.add(ObjectMaker.factory(objectName, raphael, id, mediator));
};
};