client/js/models.js
changeset 281 9ff388c9bc8d
parent 271 b2cc6f238b0d
child 282 12ee99b182cd
equal deleted inserted replaced
280:1be105c235c5 281:9ff388c9bc8d
     1 (function() {
     1 (function() {
     2     "use strict";
     2     "use strict";
     3     var root = this;
     3     var root = this;
     4         
     4     
     5     var Backbone = root.Backbone;
     5     var Backbone = root.Backbone;
     6     
     6     
     7     var Models = root.Rkns.Models = {};
     7     var Models = root.Rkns.Models = {};
     8     
     8     
     9     
     9     
   134                 color: this.get("color"),
   134                 color: this.get("color"),
   135                 created_by: this.get("created_by") ? this.get("created_by").get("_id") : null
   135                 created_by: this.get("created_by") ? this.get("created_by").get("_id") : null
   136             };
   136             };
   137         }
   137         }
   138     });
   138     });
       
   139     
       
   140     // View
       
   141     var View = Models.View = RenkanModel.extend({
       
   142         type: "view",
       
   143         relations: [
       
   144             {
       
   145                 type: Backbone.HasOne,
       
   146                 key: "created_by",
       
   147                 relatedModel: User
       
   148             }
       
   149         ],
       
   150     });
   139         
   151         
   140     // PROJECT
   152     // PROJECT
   141     var Project = Models.Project = RenkanModel.extend({
   153     var Project = Models.Project = RenkanModel.extend({
   142         type: "project",
   154         type: "project",
   143         relations: [
   155         relations: [
   161           },
   173           },
   162           {
   174           {
   163             type: Backbone.HasMany,
   175             type: Backbone.HasMany,
   164             key: "edges",
   176             key: "edges",
   165             relatedModel: Edge,
   177             relatedModel: Edge,
       
   178             reverseRelation: {
       
   179                 key: 'project',
       
   180                 includeInJSON: '_id'
       
   181             }
       
   182           },
       
   183           {
       
   184             type: Backbone.HasMany,
       
   185             key: "views",
       
   186             relatedModel: View,
   166             reverseRelation: {
   187             reverseRelation: {
   167                 key: 'project',
   188                 key: 'project',
   168                 includeInJSON: '_id'
   189                 includeInJSON: '_id'
   169             }
   190             }
   170           }
   191           }
   184         addEdge: function(_props, _options) {
   205         addEdge: function(_props, _options) {
   185             _props.project = this;
   206             _props.project = this;
   186             var _edge = Edge.findOrCreate(_props);
   207             var _edge = Edge.findOrCreate(_props);
   187             this.get("edges").push(_edge, _options);
   208             this.get("edges").push(_edge, _options);
   188             return _edge;
   209             return _edge;
       
   210         },
       
   211         addView: function(_props, _options) {
       
   212             _props.project = this;
       
   213             // TODO: check if need to replace with create only
       
   214             var _view = View.findOrCreate(_props);
       
   215             // TODO: Should we remember only one view?
       
   216             this.get("views").push(_view, _options);
       
   217             return _view;
   189         },
   218         },
   190         removeNode: function(_model) {
   219         removeNode: function(_model) {
   191             this.get("nodes").remove(_model);
   220             this.get("nodes").remove(_model);
   192         },
   221         },
   193         removeEdge: function(_model) {
   222         removeEdge: function(_model) {