client/js/main.js
changeset 23 70c8af9b44ec
parent 21 b43dd87f7ffa
child 24 121a24be9da4
equal deleted inserted replaced
22:948283342245 23:70c8af9b44ec
    31 
    31 
    32 Rkns.$ = jQuery;
    32 Rkns.$ = jQuery;
    33 
    33 
    34 Rkns._ = _;
    34 Rkns._ = _;
    35 
    35 
    36 Rkns.RemoteModels = {};
       
    37 
       
    38 Rkns.RemoteModels._Base = function(_project, _opts) {
       
    39     if (typeof _project !== "undefined") {
       
    40         this._project = _project;
       
    41         this._callbackQueue = [];
       
    42         this._loaded = false;
       
    43     }
       
    44 }
       
    45 
       
    46 Rkns.RemoteModels._Base.prototype.fullSave
       
    47     = Rkns.RemoteModels._Base.prototype.addUser
       
    48     = Rkns.RemoteModels._Base.prototype.addNode
       
    49     = Rkns.RemoteModels._Base.prototype.addEdge
       
    50     = Rkns.RemoteModels._Base.prototype.updateNode
       
    51     = Rkns.RemoteModels._Base.prototype.updateEdge
       
    52     = Rkns.RemoteModels._Base.prototype.removeNode
       
    53     = Rkns.RemoteModels._Base.prototype.removeEdge
       
    54     = function() {}
       
    55 
       
    56 Rkns.RemoteModels._Base.prototype.deferCallback = function(_callback) {
       
    57     var _this = this;
       
    58     Rkns._.defer(function() {
       
    59         _callback.call(_this);
       
    60     });
       
    61 }
       
    62 
       
    63 Rkns.RemoteModels._Base.prototype.handleCallbacks = function() {
       
    64     this._loaded = true;
       
    65     while (this._callbackQueue.length) {
       
    66         this.deferCallback(this._callbackQueue.splice(0,1)[0]);
       
    67     }
       
    68 }
       
    69 
       
    70 Rkns.RemoteModels._Base.prototype.onLoad = function(_callback) {
       
    71     if (this._loaded) {
       
    72         this.deferCallback(_callback);
       
    73     } else {
       
    74         this._callbackQueue.push(_callback);
       
    75     }
       
    76 }
       
    77 
       
    78 Rkns.RemoteModels._Base.prototype.save = function() {}
       
    79 
       
    80 Rkns.Bins = {}
    36 Rkns.Bins = {}
    81 
    37 
    82 Rkns.Bins._Base = function(_renkan, _opts) {
    38 Rkns.Bins._Base = function(_renkan, _opts) {
    83     if (typeof _renkan !== "undefined") {
    39     if (typeof _renkan !== "undefined") {
    84         this.renkan = _renkan;
    40         this.renkan = _renkan;
   108         _opts.container = "renkan";
    64         _opts.container = "renkan";
   109     }
    65     }
   110     if (typeof _opts.search !== "object" || !_opts.search) {
    66     if (typeof _opts.search !== "object" || !_opts.search) {
   111         _opts.search = [];
    67         _opts.search = [];
   112     }
    68     }
   113     this.project = new Rkns.ViewModel.Project();
    69     this.project = new Rkns.Models.Project();
   114     this.project.l10n = Rkns.i18n[_opts.language];
    70     this.l10n = Rkns.i18n[_opts.language];
   115     if (typeof _opts.user === "object") {
    71     if (typeof _opts.user_id !== "undefined") {
   116         this.current_user = this.project.addUser(_opts.user)
    72         this.current_user = _opts.user_id;
   117     }
    73     }
   118     this.$ = Rkns.$("#" + _opts.container);
    74     this.$ = Rkns.$("#" + _opts.container);
   119     this.$.html(this.template());
    75     this.$.html(this.template());
   120     this.remotemodel = this.project.remotemodel = new Rkns.RemoteModels[_opts.remotemodel](this.project, _opts);
    76     this.renderer = new Rkns.Renderer.Scene(this);
   121     this.renderer = this.project.renderer = new Rkns.Renderer.Scene(this.project, _opts);
       
   122     this.renderer.renkan = this;
       
   123     this.tabs = [];
    77     this.tabs = [];
   124     this.selected_bin_item = undefined;
    78     this.selected_bin_item = undefined;
   125     this.mousedown = false;
    79     this.mousedown = false;
   126     var _this = this;
    80     var _this = this;
   127     this.$.mouseup(function() {
    81     this.$.mouseup(function() {
   171                 return false;
   125                 return false;
   172             }
   126             }
   173         });
   127         });
   174     Rkns.$(window).resize(function() {
   128     Rkns.$(window).resize(function() {
   175         _this.resizeBins();
   129         _this.resizeBins();
   176     })
       
   177     
       
   178     this.project.remotemodel.onLoad(function() {
       
   179         if (typeof _this.project.current_user === "undefined") {
       
   180             _this.project.current_user = _this.project.users[0];
       
   181         }
       
   182         _this.project.renderer.draw();
       
   183     });
   130     });
   184 }
   131 }
   185 
   132 
   186 Rkns.Renkan.prototype.template = Rkns._.template(
   133 Rkns.Renkan.prototype.template = Rkns._.template(
   187     '<div class="Rk-Bins">'
   134     '<div class="Rk-Bins">'