diff -r 67f3a24a7c01 -r fa8035885814 client/js/renderer/tempedge.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/js/renderer/tempedge.js Mon May 05 17:43:37 2014 +0200 @@ -0,0 +1,99 @@ +"use strict"; + +define(['jquery', 'underscore', 'requtils', 'renderer/baserepresentation'], function ($, _, requtils, BaseRepresentation) { + + var Utils = requtils.getUtils(); + + /* TempEdge Class Begin */ + + //var TempEdge = Renderer.TempEdge = Utils.inherit(Renderer._BaseRepresentation); + var TempEdge = Utils.inherit(BaseRepresentation); + + _(TempEdge.prototype).extend({ + _init: function() { + this.renderer.edge_layer.activate(); + this.type = "Temp-edge"; + + var _color = (this.project.get("users").get(this.renkan.current_user) || Utils._USER_PLACEHOLDER(this.renkan)).get("color"); + this.line = new paper.Path(); + this.line.strokeColor = _color; + this.line.dashArray = [4, 2]; + this.line.strokeWidth = this.options.selected_edge_stroke_width; + this.line.add([0,0],[0,0]); + this.line.__representation = this; + this.arrow = new paper.Path(); + this.arrow.fillColor = _color; + this.arrow.add( + [ 0, 0 ], + [ this.options.edge_arrow_length, this.options.edge_arrow_width / 2 ], + [ 0, this.options.edge_arrow_width ] + ); + this.arrow.__representation = this; + this.arrow_angle = 0; + }, + redraw: function() { + var _p0 = this.from_representation.paper_coords, + _p1 = this.end_pos, + _a = _p1.subtract(_p0).angle, + _c = _p0.add(_p1).divide(2); + this.line.segments[0].point = _p0; + this.line.segments[1].point = _p1; + this.arrow.rotate(_a - this.arrow_angle); + this.arrow.position = _c; + this.arrow_angle = _a; + }, + paperShift: function(_delta) { + if (!this.renderer.isEditable()) { + this.renderer.removeRepresentation(_this); + paper.view.draw(); + return; + } + this.end_pos = this.end_pos.add(_delta); + var _hitResult = paper.project.hitTest(this.end_pos); + this.renderer.findTarget(_hitResult); + this.redraw(); + }, + mouseup: function(_event, _isTouch) { + var _hitResult = paper.project.hitTest(_event.point), + _model = this.from_representation.model, + _endDrag = true; + if (_hitResult && typeof _hitResult.item.__representation !== "undefined") { + var _target = _hitResult.item.__representation; + if (_target.type.substr(0,4) === "Node") { + var _destmodel = _target.model || _target.source_representation.model; + if (_model !== _destmodel) { + var _data = { + id: Utils.getUID('edge'), + created_by: this.renkan.current_user, + from: _model, + to: _destmodel + }; + if (this.renderer.isEditable()) { + this.project.addEdge(_data); + } + } + } + + if (_model === _target.model || (_target.source_representation && _target.source_representation.model === _model)) { + _endDrag = false; + this.renderer.is_dragging = true; + } + } + if (_endDrag) { + this.renderer.click_target = null; + this.renderer.is_dragging = false; + this.renderer.removeRepresentation(this); + paper.view.draw(); + } + }, + destroy: function() { + this.arrow.remove(); + this.line.remove(); + } + }); + + /* TempEdge Class End */ + + return TempEdge; + +})