client/js/renderer/tempedge.js
author ymh <ymh.work@gmail.com>
Sat, 25 Apr 2015 04:37:06 +0200
changeset 434 0d5998b32a7c
parent 433 e457ec945e50
child 622 02e3c464223f
permissions -rw-r--r--
clean, and finalize lodash migration
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
});