client/js/renderer/tempedge.js
author rougeronj
Wed, 03 Jun 2015 17:27:46 +0200
changeset 471 e0c7be5dc02c
parent 434 0d5998b32a7c
child 622 02e3c464223f
permissions -rw-r--r--
Add a router to handle fragment identifier Set up a listener of the router in the scene to update it Start Backbone.history (eventlistener of the router) when all the project is loaded Include router.js to all the test file
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
     1
284
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) {
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
     4
    'use strict';
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
     5
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     6
    var Utils = requtils.getUtils();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     7
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     8
    /* TempEdge Class Begin */
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     9
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    10
    //var TempEdge = Renderer.TempEdge = Utils.inherit(Renderer._BaseRepresentation);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    11
    var TempEdge = Utils.inherit(BaseRepresentation);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    12
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    13
    _(TempEdge.prototype).extend({
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    14
        _init: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    15
            this.renderer.edge_layer.activate();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    16
            this.type = "Temp-edge";
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    17
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    18
            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
    19
            this.line = new paper.Path();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    20
            this.line.strokeColor = _color;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    21
            this.line.dashArray = [4, 2];
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    22
            this.line.strokeWidth = this.options.selected_edge_stroke_width;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    23
            this.line.add([0,0],[0,0]);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    24
            this.line.__representation = this;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    25
            this.arrow = new paper.Path();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    26
            this.arrow.fillColor = _color;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    27
            this.arrow.add(
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    28
                    [ 0, 0 ],
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    29
                    [ this.options.edge_arrow_length, this.options.edge_arrow_width / 2 ],
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    30
                    [ 0, this.options.edge_arrow_width ]
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    31
            );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    32
            this.arrow.__representation = this;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    33
            this.arrow_angle = 0;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    34
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    35
        redraw: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    36
            var _p0 = this.from_representation.paper_coords,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    37
            _p1 = this.end_pos,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    38
            _a = _p1.subtract(_p0).angle,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    39
            _c = _p0.add(_p1).divide(2);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    40
            this.line.segments[0].point = _p0;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    41
            this.line.segments[1].point = _p1;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    42
            this.arrow.rotate(_a - this.arrow_angle);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    43
            this.arrow.position = _c;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    44
            this.arrow_angle = _a;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    45
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    46
        paperShift: function(_delta) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    47
            if (!this.renderer.isEditable()) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    48
                this.renderer.removeRepresentation(_this);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    49
                paper.view.draw();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    50
                return;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    51
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    52
            this.end_pos = this.end_pos.add(_delta);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    53
            var _hitResult = paper.project.hitTest(this.end_pos);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    54
            this.renderer.findTarget(_hitResult);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    55
            this.redraw();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    56
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    57
        mouseup: function(_event, _isTouch) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    58
            var _hitResult = paper.project.hitTest(_event.point),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    59
            _model = this.from_representation.model,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    60
            _endDrag = true;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    61
            if (_hitResult && typeof _hitResult.item.__representation !== "undefined") {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    62
                var _target = _hitResult.item.__representation;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    63
                if (_target.type.substr(0,4) === "Node") {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    64
                    var _destmodel = _target.model || _target.source_representation.model;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    65
                    if (_model !== _destmodel) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    66
                        var _data = {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    67
                                id: Utils.getUID('edge'),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    68
                                created_by: this.renkan.current_user,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    69
                                from: _model,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    70
                                to: _destmodel
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    71
                        };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    72
                        if (this.renderer.isEditable()) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    73
                            this.project.addEdge(_data);
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
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    78
                if (_model === _target.model || (_target.source_representation && _target.source_representation.model === _model)) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    79
                    _endDrag = false;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    80
                    this.renderer.is_dragging = true;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    81
                }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    82
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    83
            if (_endDrag) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    84
                this.renderer.click_target = null;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    85
                this.renderer.is_dragging = false;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    86
                this.renderer.removeRepresentation(this);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    87
                paper.view.draw();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    88
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    89
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    90
        destroy: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    91
            this.arrow.remove();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    92
            this.line.remove();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    93
        }
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 293
diff changeset
    94
    }).value();
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    95
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    96
    /* TempEdge Class End */
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
    97
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    98
    return TempEdge;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    99
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
   100
});