/*jslint laxbreak:true */ /*jslint laxcomma:true */ /*jslint loopfunc:true */ /*jslint strict:true */ /*jslint browser:true */ /*jslint devel:true */ define([ "underscore" , "jquery" , "backbone" , "views/browser" , "views/list" , "text!../../templates/client/layout.html" , "jquery-layout" ] , function ( _ , $ , Backbone , BrowserView , ListView , tmplClientLayout ) { "use strict"; var Client = Backbone.View.extend({ id: null //, el: $(tmplClientLayout) , tagName: "div" , Server: null , Layout: null , Views: {} , initialize: function (options) { _.bindAll(this , "_initLayout" , "resize" , "show" , "hide" ); var that = this , appendEl = options.appendEl ; that.Server = options.server; delete options.server; delete options.appendEl; Client.__super__.initialize.apply(that, arguments); that.el.id = "__view-cient-" + that.Server.client.attributes.hostname.replace(".", "_"); that.id = that.Server.client.attributes.hostname; that.el.innerHTML = tmplClientLayout; that.el.innerHTML = that.el.innerHTML.replace("this.type", that.Server.client.url()); } , _initLayout: function () { var that = this ; that.Layout = that.$el.layout({ defaults: { closable: false , resizable: true , slidable: true , spacing_open: 5 , spacing_closed: 5 } , north: { minSize: 100 , size: 200 , closable: true , onresize: function (pane, $pane, state, options) { that.Views.Browser.resize(pane, $pane, state, options); } } , center: { minSize: 200 , onresize: function (pane, $pane, state, options) { that.Views.List.resize(pane, $pane, state, options); } } }); var dbId = that.Server.client.collections.databasesInfo.get("dmap_listing").at(0).id , dbCollection = that.Server.client.collections.databases[dbId].get("dmap_listing") ; that.Views.Browser = new BrowserView({ el: that.Layout.panes.north , parentEl: that.$el , collections: { genres: that.Server.client.collections.browser.genres[dbId] , artists: that.Server.client.collections.browser.artists[dbId] , albums: that.Server.client.collections.browser.albums[dbId] } }); that.Views.List = new ListView({ el: that.Layout.panes.center , parentEl: that.$el , collection: dbCollection , type: "client" , client: { hostname: that.Server.client.attributes.hostname , dbId: dbId } }); that.Views.List.on("action:playorder", function __fnEventClientViewPlayOrder (event) { that.trigger.apply(that, ["action:playorder", event]); }); } , resize: function () { var that = this ; setTimeout(function __fnTimeoutClientResizeViews() { that.Views.List.resize(); that.Views.Browser.resize(); }, 25); } , show: function () { var that = this ; if (that.Layout === null) { that._initLayout(); } that.Layout.panes.north.show(); that.Layout.panes.center.show(); that.Views.List.show(); //that.Views.Browser.show(); //this.$el.show(); //console.debug(that.Server.client.collections.databases[that.Server.client.collections.databasesInfo.get("dmap_listing").at(0).id].get("dmap_listing")); } , hide: function () { var that = this ; that.Layout.panes.north.hide(); that.Layout.panes.center.hide(); that.Views.List.hide(); //that.Views.Browser.hide(); //this.$el.hide(); } }); return Client; }); /* that.layoutItems = $(that.layout.panes.center).layout({ defaults: { closable: false , resizable: true , slidable: true , spacing_open: 5 , spacing_closed: 5 } , north: { minSize: 100 , size: 200 , closable: true //, onresize: function (pane, $pane, state, options) { // var viewportHeight = $pane.innerHeight() - App.BrowserView.$el.find(".dataTables_scrollHead").height(); // App.BrowserView.$el.find(".dataTables_scrollBody").height(viewportHeight); // //App.BrowserView.reDraw(); // } } , center: { minSize: 200 //, onresize: function (pane, $pane, state, options) { // var viewportHeight = $pane.innerHeight() - App.ListView.$el.find(".dataTables_scrollHead").height(); // App.ListView.$el.find(".dataTables_scrollBody").height(viewportHeight); // //App.ListView.render(); // } } }); */