67 } |
67 } |
68 } |
68 } |
69 |
69 |
70 Rkns.Serializers._Base.prototype.save = function() {} |
70 Rkns.Serializers._Base.prototype.save = function() {} |
71 |
71 |
72 Rkns.Renderers = {}; |
|
73 |
|
74 Rkns.Renderers._Base = function(_project) { |
|
75 if (typeof _project !== "undefined") { |
|
76 this._project = _project; |
|
77 } |
|
78 } |
|
79 |
|
80 Rkns.Project = function(_opts) { |
72 Rkns.Project = function(_opts) { |
81 if (typeof _opts.serializer == "undefined") { |
73 if (typeof _opts.serializer == "undefined") { |
82 _opts.serializer = "BasicJson"; |
74 _opts.serializer = "BasicJson"; |
83 } |
|
84 if (typeof _opts.renderer == "undefined") { |
|
85 _opts.renderer = "Paper"; |
|
86 } |
75 } |
87 if (typeof _opts.language == "undefined" || typeof Rkns.i18n[_opts.language] == "undefined") { |
76 if (typeof _opts.language == "undefined" || typeof Rkns.i18n[_opts.language] == "undefined") { |
88 _opts.language = "en"; |
77 _opts.language = "en"; |
89 } |
78 } |
90 this.l10n = Rkns.i18n[_opts.language]; |
79 this.l10n = Rkns.i18n[_opts.language]; |
94 this.edges = new Rkns.Model.List(); |
83 this.edges = new Rkns.Model.List(); |
95 if (typeof this._opts.user === "object") { |
84 if (typeof this._opts.user === "object") { |
96 this.current_user = this.addUser(this._opts.user) |
85 this.current_user = this.addUser(this._opts.user) |
97 } |
86 } |
98 this.serializer = new Rkns.Serializers[_opts.serializer](this); |
87 this.serializer = new Rkns.Serializers[_opts.serializer](this); |
99 this.renderer = new Rkns.Renderers[_opts.renderer](this); |
88 this.renderer = new Rkns.Renderer.Scene(this); |
100 var _this = this; |
89 var _this = this; |
101 this.serializer.onLoad(function() { |
90 this.serializer.onLoad(function() { |
102 if (typeof _this.current_user === "undefined") { |
91 if (typeof _this.current_user === "undefined") { |
103 _this.current_user = _proj.users[0]; |
92 _this.current_user = _proj.users[0]; |
104 } |
93 } |
141 Rkns.Project.prototype.updateElement = function(_element, _props, _render_save) { |
130 Rkns.Project.prototype.updateElement = function(_element, _props, _render_save) { |
142 Rkns._(_props).each(function(_v, _k) { |
131 Rkns._(_props).each(function(_v, _k) { |
143 _element[_k] = _v; |
132 _element[_k] = _v; |
144 }); |
133 }); |
145 if (typeof _render_save !== "undefined" && (_render_save&Rkns._RENDER)) { |
134 if (typeof _render_save !== "undefined" && (_render_save&Rkns._RENDER)) { |
146 console.log("Shall redraw"); |
|
147 if (typeof _element.__controller !== "undefined") { |
135 if (typeof _element.__controller !== "undefined") { |
148 _element.__controller.redraw(); |
136 _element.__controller.redraw(); |
149 } else { |
137 } else { |
150 this._renderer.redraw(); |
138 this._renderer.redraw(); |
151 } |
139 } |
152 } |
140 } |
153 if (typeof _render_save !== "undefined" && (_render_save&Rkns._SAVE)) { |
141 if (typeof _render_save !== "undefined" && (_render_save&Rkns._SAVE)) { |
154 this.serializer.save(); |
142 this.serializer.save(); |
155 } |
143 } |
|
144 } |
|
145 |
|
146 Rkns.Project.prototype.removeNode = function(_node, _render_save) { |
|
147 this.nodes.removeId(_node.id); |
|
148 if (typeof _node.__controller !== "undefined") { |
|
149 console.log("Controllers", this.renderer.controllers.length); |
|
150 this.renderer.removeController(_node.__controller); |
|
151 console.log("Controllers", this.renderer.controllers.length); |
|
152 } |
|
153 console.log(this.edges.length); |
|
154 var _this = this; |
|
155 this.edges = this.edges.filter(function(_edge) { |
|
156 var _keep = _edge.from !== _node && _edge.to !== _node; |
|
157 if (!_keep && typeof _edge.__controller !== "undefined") { |
|
158 _this.renderer.removeController(_edge.__controller); |
|
159 } |
|
160 return _keep; |
|
161 }); |
|
162 if (typeof _render_save !== "undefined" && (_render_save&Rkns._RENDER)) { |
|
163 this.renderer.redraw(); |
|
164 } |
|
165 if (typeof _render_save !== "undefined" && (_render_save&Rkns._SAVE)) { |
|
166 this.serializer.save(); |
|
167 } |
|
168 return _node; |
156 } |
169 } |
157 |
170 |
158 /* Utility functions */ |
171 /* Utility functions */ |
159 |
172 |
160 Rkns.Utils = { |
173 Rkns.Utils = { |