client/js/renderer/baserepresentation.js
author ymh <ymh.work@gmail.com>
Mon, 27 Apr 2015 17:22:46 +0200
changeset 435 e529b633c339
parent 434 0d5998b32a7c
permissions -rw-r--r--
Add shape management, correction on shape manip[ulation on the client, correct 404 error on space creation, increment version
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
define(['jquery', 'underscore'], function ($, _) {
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
     3
    'use strict';
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     4
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     5
    /* Rkns.Renderer._BaseRepresentation Class */
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     6
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     7
    /* In Renkan, a "Representation" is a sort of ViewModel (in the MVVM paradigm) and bridges the gap between
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     8
     * models (written with Backbone.js) and the view (written with Paper.js)
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     9
     * Renkan's representations all inherit from Rkns.Renderer._BaseRepresentation '*/
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    10
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    11
    var _BaseRepresentation = function(_renderer, _model) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    12
        if (typeof _renderer !== "undefined") {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    13
            this.renderer = _renderer;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    14
            this.renkan = _renderer.renkan;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    15
            this.project = _renderer.renkan.project;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    16
            this.options = _renderer.renkan.options;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    17
            this.model = _model;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    18
            if (this.model) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    19
                var _this = this;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    20
                this._changeBinding = function() {
435
e529b633c339 Add shape management, correction on shape manip[ulation on the client, correct 404 error on space creation, increment version
ymh <ymh.work@gmail.com>
parents: 434
diff changeset
    21
                    _this.redraw({change: true});
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    22
                };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    23
                this._removeBinding = function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    24
                    _renderer.removeRepresentation(_this);
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 396
diff changeset
    25
                    _.defer(function() {
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    26
                        _renderer.redraw();
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 396
diff changeset
    27
                    });
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    28
                };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    29
                this._selectBinding = function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    30
                    _this.select();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    31
                };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    32
                this._unselectBinding = function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    33
                    _this.unselect();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    34
                };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    35
                this.model.on("change", this._changeBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    36
                this.model.on("remove", this._removeBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    37
                this.model.on("select", this._selectBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    38
                this.model.on("unselect", this._unselectBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    39
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    40
        }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    41
    };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    42
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    43
    /* Rkns.Renderer._BaseRepresentation Methods */
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    44
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    45
    _(_BaseRepresentation.prototype).extend({
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    46
        _super: function(_func) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    47
            return _BaseRepresentation.prototype[_func].apply(this, Array.prototype.slice.call(arguments, 1));
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    48
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    49
        redraw: function() {},
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    50
        moveTo: function() {},
396
b51c25ef4292 add timeout to buttons
ymh <ymh.work@gmail.com>
parents: 293
diff changeset
    51
        show: function() { return "BaseRepresentation.show"; },
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    52
        hide: function() {},
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    53
        select: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    54
            if (this.model) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    55
                this.model.trigger("selected");
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    56
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    57
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    58
        unselect: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    59
            if (this.model) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    60
                this.model.trigger("unselected");
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    61
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    62
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    63
        highlight: function() {},
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    64
        unhighlight: function() {},
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    65
        mousedown: function() {},
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    66
        mouseup: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    67
            if (this.model) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    68
                this.model.trigger("clicked");
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    69
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    70
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    71
        destroy: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    72
            if (this.model) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    73
                this.model.off("change", this._changeBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    74
                this.model.off("remove", this._removeBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    75
                this.model.off("select", this._selectBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    76
                this.model.off("unselect", this._unselectBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    77
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    78
        }
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 396
diff changeset
    79
    }).value();
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    80
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    81
    /* End of Rkns.Renderer._BaseRepresentation Class */
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
    82
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    83
    return _BaseRepresentation;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    84
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    85
});