client/js/renderer/edgeeditor.js
author rougeronj
Wed, 03 Jun 2015 17:27:46 +0200
changeset 471 e0c7be5dc02c
parent 447 e246651b6626
child 461 48235ed6b07d
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:
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     1
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     2
define(['jquery', 'underscore', 'requtils', 'renderer/baseeditor'], function ($, _, requtils, BaseEditor) {
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
     3
    'use strict';
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
     4
284
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
    /* EdgeEditor Begin */
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     8
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     9
    //var EdgeEditor = Renderer.EdgeEditor = Utils.inherit(Renderer._BaseEditor);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    10
    var EdgeEditor = Utils.inherit(BaseEditor);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    11
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    12
    _(EdgeEditor.prototype).extend({
434
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    13
        _init: function() {
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    14
          BaseEditor.prototype._init.apply(this);
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    15
          this.template = this.options.templates['templates/edgeeditor.html'];
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    16
          this.readOnlyTemplate = this.options.templates['templates/edgeeditor_readonly.html'];
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    17
        },
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    18
        draw: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    19
            var _model = this.source_representation.model,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    20
            _from_model = _model.get("from"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    21
            _to_model = _model.get("to"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    22
            _created_by = _model.get("created_by") || Utils._USER_PLACEHOLDER(this.renkan),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    23
            _template = (this.renderer.isEditable() ? this.template : this.readOnlyTemplate);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    24
            this.editor_$
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 419
diff changeset
    25
              .html(_template({
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    26
                edge: {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    27
                    has_creator: !!_model.get("created_by"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    28
                    title: _model.get("title"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    29
                    uri: _model.get("uri"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    30
                    short_uri:  Utils.shortenText((_model.get("uri") || "").replace(/^(https?:\/\/)?(www\.)?/,'').replace(/\/$/,''),40),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    31
                    description: _model.get("description"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    32
                    color: _model.get("color") || _created_by.get("color"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    33
                    from_title: _from_model.get("title"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    34
                    to_title: _to_model.get("title"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    35
                    from_color: _from_model.get("color") || (_from_model.get("created_by") || Utils._USER_PLACEHOLDER(this.renkan)).get("color"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    36
                    to_color: _to_model.get("color") || (_to_model.get("created_by") || Utils._USER_PLACEHOLDER(this.renkan)).get("color"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    37
                    created_by_color: _created_by.get("color"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    38
                    created_by_title: _created_by.get("title")
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    39
                },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    40
                renkan: this.renkan,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    41
                shortenText: Utils.shortenText,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    42
                options: this.options
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    43
            }));
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    44
            this.redraw();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    45
            var _this = this,
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    46
            closeEditor = function() {
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
            };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    50
            this.editor_$.find(".Rk-CloseX").click(closeEditor);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    51
            this.editor_$.find(".Rk-Edit-Goto").click(function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    52
                if (!_model.get("uri")) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    53
                    return false;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    54
                }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    55
            });
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    56
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    57
            if (this.renderer.isEditable()) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    58
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 419
diff changeset
    59
                var onFieldChange = _.throttle(function() {
434
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    60
                    _.defer(function() {
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    61
                        if (_this.renderer.isEditable()) {
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    62
                            var _data = {
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 419
diff changeset
    63
                                title: _this.editor_$.find(".Rk-Edit-Title").val()
434
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    64
                            };
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    65
                            if (_this.options.show_edge_editor_uri) {
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    66
                                _data.uri = _this.editor_$.find(".Rk-Edit-URI").val();
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    67
                            }
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    68
                            _this.editor_$.find(".Rk-Edit-Goto").attr("href",_data.uri || "#");
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    69
                            _model.set(_data);
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    70
                            paper.view.draw();
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    71
                        } else {
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    72
                            closeEditor();
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    73
                        }
434
0d5998b32a7c clean, and finalize lodash migration
ymh <ymh.work@gmail.com>
parents: 433
diff changeset
    74
                    });
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 419
diff changeset
    75
                },500);
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    76
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    77
                this.editor_$.on("keyup", function(_e) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    78
                    if (_e.keyCode === 27) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    79
                        closeEditor();
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
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    83
                this.editor_$.find("input").on("keyup change paste", onFieldChange);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    84
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    85
                this.editor_$.find(".Rk-Edit-Vocabulary").change(function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    86
                    var e = $(this),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    87
                    v = e.val();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    88
                    if (v) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    89
                        _this.editor_$.find(".Rk-Edit-Title").val(e.find(":selected").text());
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    90
                        _this.editor_$.find(".Rk-Edit-URI").val(v);
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    91
                        onFieldChange();
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
                this.editor_$.find(".Rk-Edit-Direction").click(function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    95
                    if (_this.renderer.isEditable()) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    96
                        _model.set({
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    97
                            from: _model.get("to"),
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    98
                            to: _model.get("from")
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    99
                        });
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   100
                        _this.draw();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   101
                    } else {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   102
                        closeEditor();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   103
                    }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   104
                });
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   105
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   106
                var _picker = _this.editor_$.find(".Rk-Edit-ColorPicker");
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   107
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   108
                this.editor_$.find(".Rk-Edit-ColorPicker-Wrapper").hover(
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   109
                        function(_e) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   110
                            _e.preventDefault();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   111
                            _picker.show();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   112
                        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   113
                        function(_e) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   114
                            _e.preventDefault();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   115
                            _picker.hide();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   116
                        }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   117
                );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   118
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   119
                _picker.find("li").hover(
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   120
                        function(_e) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   121
                            _e.preventDefault();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   122
                            _this.editor_$.find(".Rk-Edit-Color").css("background", $(this).attr("data-color"));
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   123
                        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   124
                        function(_e) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   125
                            _e.preventDefault();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   126
                            _this.editor_$.find(".Rk-Edit-Color").css("background", _model.get("color") || (_model.get("created_by") || Utils._USER_PLACEHOLDER(_this.renkan)).get("color"));
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   127
                        }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   128
                ).click(function(_e) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   129
                    _e.preventDefault();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   130
                    if (_this.renderer.isEditable()) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   131
                        _model.set("color", $(this).attr("data-color"));
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   132
                        _picker.hide();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   133
                        paper.view.draw();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   134
                    } else {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   135
                        closeEditor();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   136
                    }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   137
                });
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   138
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   139
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   140
        redraw: function() {
447
e246651b6626 replace tabs by spaces
rougeronj
parents: 445
diff changeset
   141
            if (this.options.popup_editor){
e246651b6626 replace tabs by spaces
rougeronj
parents: 445
diff changeset
   142
                var _coords = this.source_representation.paper_coords;
e246651b6626 replace tabs by spaces
rougeronj
parents: 445
diff changeset
   143
                Utils.drawEditBox(this.options, _coords, this.editor_block, 5, this.editor_$);
e246651b6626 replace tabs by spaces
rougeronj
parents: 445
diff changeset
   144
            }
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   145
            this.editor_$.show();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   146
            paper.view.draw();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   147
        }
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 419
diff changeset
   148
    }).value();
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   149
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   150
    /* EdgeEditor End */
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
   151
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   152
    return EdgeEditor;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
   153
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
   154
});