client/js/renderer/tempedge.js
author cavaliet
Mon, 05 May 2014 17:43:37 +0200
changeset 284 fa8035885814
child 293 fba23fde14ba
permissions -rw-r--r--
build renderer with require js
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     1
"use strict";
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     2
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     3
define(['jquery', 'underscore', 'requtils', 'renderer/baserepresentation'], function ($, _, requtils, BaseRepresentation) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     4
    
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     5
    var Utils = requtils.getUtils();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     6
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     7
    /* TempEdge Class Begin */
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     8
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     9
    //var TempEdge = Renderer.TempEdge = Utils.inherit(Renderer._BaseRepresentation);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    10
    var TempEdge = Utils.inherit(BaseRepresentation);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    11
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    12
    _(TempEdge.prototype).extend({
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    13
        _init: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    14
            this.renderer.edge_layer.activate();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    15
            this.type = "Temp-edge";
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    16
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    17
            var _color = (this.project.get("users").get(this.renkan.current_user) || Utils._USER_PLACEHOLDER(this.renkan)).get("color");
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    18
            this.line = new paper.Path();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    19
            this.line.strokeColor = _color;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    20
            this.line.dashArray = [4, 2];
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    21
            this.line.strokeWidth = this.options.selected_edge_stroke_width;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    22
            this.line.add([0,0],[0,0]);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    23
            this.line.__representation = this;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    24
            this.arrow = new paper.Path();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    25
            this.arrow.fillColor = _color;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    26
            this.arrow.add(
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    27
                    [ 0, 0 ],
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    28
                    [ this.options.edge_arrow_length, this.options.edge_arrow_width / 2 ],
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    29
                    [ 0, this.options.edge_arrow_width ]
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    30
            );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    31
            this.arrow.__representation = this;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    32
            this.arrow_angle = 0;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    33
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    34
        redraw: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    35
            var _p0 = this.from_representation.paper_coords,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    36
            _p1 = this.end_pos,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    37
            _a = _p1.subtract(_p0).angle,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    38
            _c = _p0.add(_p1).divide(2);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    39
            this.line.segments[0].point = _p0;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    40
            this.line.segments[1].point = _p1;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    41
            this.arrow.rotate(_a - this.arrow_angle);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    42
            this.arrow.position = _c;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    43
            this.arrow_angle = _a;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    44
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    45
        paperShift: function(_delta) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    46
            if (!this.renderer.isEditable()) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    47
                this.renderer.removeRepresentation(_this);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    48
                paper.view.draw();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    49
                return;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    50
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    51
            this.end_pos = this.end_pos.add(_delta);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    52
            var _hitResult = paper.project.hitTest(this.end_pos);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    53
            this.renderer.findTarget(_hitResult);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    54
            this.redraw();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    55
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    56
        mouseup: function(_event, _isTouch) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    57
            var _hitResult = paper.project.hitTest(_event.point),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    58
            _model = this.from_representation.model,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    59
            _endDrag = true;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    60
            if (_hitResult && typeof _hitResult.item.__representation !== "undefined") {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    61
                var _target = _hitResult.item.__representation;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    62
                if (_target.type.substr(0,4) === "Node") {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    63
                    var _destmodel = _target.model || _target.source_representation.model;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    64
                    if (_model !== _destmodel) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    65
                        var _data = {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    66
                                id: Utils.getUID('edge'),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    67
                                created_by: this.renkan.current_user,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    68
                                from: _model,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    69
                                to: _destmodel
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    70
                        };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    71
                        if (this.renderer.isEditable()) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    72
                            this.project.addEdge(_data);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    73
                        }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    74
                    }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    75
                }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    76
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    77
                if (_model === _target.model || (_target.source_representation && _target.source_representation.model === _model)) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    78
                    _endDrag = false;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    79
                    this.renderer.is_dragging = true;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    80
                }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    81
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    82
            if (_endDrag) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    83
                this.renderer.click_target = null;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    84
                this.renderer.is_dragging = false;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    85
                this.renderer.removeRepresentation(this);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    86
                paper.view.draw();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    87
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    88
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    89
        destroy: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    90
            this.arrow.remove();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    91
            this.line.remove();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    92
        }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    93
    });
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    94
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    95
    /* TempEdge Class End */
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    96
    
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    97
    return TempEdge;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    98
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    99
})