server/src/main/webapp/js/models.js
changeset 45 37c9a17c3284
parent 22 948283342245
equal deleted inserted replaced
43:90f6937c417e 45:37c9a17c3284
    19 	var RenkanModel = Backbone.RelationalModel.extend({
    19 	var RenkanModel = Backbone.RelationalModel.extend({
    20 		idAttribute : "_id",
    20 		idAttribute : "_id",
    21 		constructor: function(options) {
    21 		constructor: function(options) {
    22 			
    22 			
    23 			if (typeof options !== "undefined") {
    23 			if (typeof options !== "undefined") {
    24 	            options._id = options.id || Models.getUID(this);
    24 	            options._id = options._id || options.id || Models.getUID(this);
    25 	            options.title = options.title || "(untitled " + this.type + ")";
    25 	            options.title = options.title || "(untitled " + this.type + ")";
    26 	            options.description = options.description || "";
    26 	            options.description = options.description || "";
    27 	            options.uri = options.uri || "";
    27 	            options.uri = options.uri || "";
    28 	            
    28 	            
    29 	            if(typeof this.prepare === "function") {
    29 	            if(typeof this.prepare === "function") {
    63 	var Node = Models.Node = root.Rkns.Models.Node = RenkanModel.extend({
    63 	var Node = Models.Node = root.Rkns.Models.Node = RenkanModel.extend({
    64 		type: "node",
    64 		type: "node",
    65 		relations: [{
    65 		relations: [{
    66 			type: Backbone.HasOne,
    66 			type: Backbone.HasOne,
    67 			key: "created_by",
    67 			key: "created_by",
    68 			relatedModel: User
    68 			relatedModel: User,
       
    69 			reverseRelation : {
       
    70 				includeInJSON: '_id'
       
    71 			}
    69 		}],
    72 		}],
    70 		prepare: function(options) {
    73 		prepare: function(options) {
    71 			project = options.project;
    74 			project = options.project;
       
    75 			delete options["project"];
    72 			this.addReference(options, "created_by", project.get("users"), options.created_by, project.current_user);
    76 			this.addReference(options, "created_by", project.get("users"), options.created_by, project.current_user);
    73 			options.description = options.description || "";			
    77 			options.description = options.description || "";			
    74 			return options;
    78 			return options;
    75 		}
    79 		}
    76 	
    80 	
    81 		type: "edge",
    85 		type: "edge",
    82 		relations: [
    86 		relations: [
    83 		  {
    87 		  {
    84 			type: Backbone.HasOne,
    88 			type: Backbone.HasOne,
    85 			key: "created_by",
    89 			key: "created_by",
    86 			relatedModel: User
    90 			relatedModel: User,
       
    91 			reverseRelation : {
       
    92 				includeInJSON: '_id'
       
    93 			}
    87 		  },
    94 		  },
    88 		  {
    95 		  {
    89 		    type: Backbone.HasOne,
    96 		    type: Backbone.HasOne,
    90 			key: "from",
    97 			key: "from",
    91 			relatedModel: Node
    98 			relatedModel: Node
    96 			relatedModel: Node
   103 			relatedModel: Node
    97 		  },
   104 		  },
    98 		],
   105 		],
    99 		prepare: function(options) {
   106 		prepare: function(options) {
   100 			project = options.project;
   107 			project = options.project;
       
   108 			delete options.project;
   101 			this.addReference(options, "created_by", options.created_by, project.get("users"), project.current_user);
   109 			this.addReference(options, "created_by", options.created_by, project.get("users"), project.current_user);
   102 			this.addReference(options, "from", options.from, project.get("nodes"));
   110 			this.addReference(options, "from", options.from, project.get("nodes"));
   103 			this.addReference(options, "to", options.to, project.get("nodes"));
   111 			this.addReference(options, "to", options.to, project.get("nodes"));
   104 			return options;
   112 			return options;
   105 		}
   113 		}
   106 	});
   114 	});
   107 		
   115 		
   108 	// PROJECT
   116 	// PROJECT
   109 	var Project = Models.Project = root.Rkns.Models.Project = RenkanModel.extend({
   117 	var Project = Models.Project = root.Rkns.Models.Project = RenkanModel.extend({
   110 		type: "project",
   118 		type: "project",
       
   119 		current_user : null,
   111 		relations: [
   120 		relations: [
   112 		  {
   121 		  {
   113 		    type: Backbone.HasMany,
   122 		    type: Backbone.HasMany,
   114 		    key: "users",
   123 		    key: "users",
   115 		    relatedModel: User,
   124 		    relatedModel: User,
   138 		  }
   147 		  }
   139 		],
   148 		],
   140 		addNode: function(_props) {
   149 		addNode: function(_props) {
   141 			_props.project = this;
   150 			_props.project = this;
   142 			this.get("nodes").push(_props);
   151 			this.get("nodes").push(_props);
       
   152 		},
       
   153 		addUser: function(_props) {
       
   154 			this.get("users").push(_props);
   143 		}
   155 		}
   144 	});
   156 	});
   145 
   157 
   146 	
   158 	
   147 }).call(this);
   159 }).call(this);