'use strict' ;
define (
[
'marionette' ,
'Episode/Summary/View' ,
'Episode/Search/Layout' ,
'Release/Collection' ,
'Shared/SpinnerView'
] , function ( Marionette , SummaryView , SearchLayout , ReleaseCollection , SpinnerView ) {
return Marionette . Layout . extend ( {
template : 'Episode/LayoutTemplate' ,
regions : {
summary : '#episode-summary' ,
activity : '#episode-activity' ,
search : '#episode-search'
} ,
ui : {
summary : '.x-episode-summary' ,
activity : '.x-episode-activity' ,
search : '.x-episode-search'
} ,
events : {
'click .x-episode-summary' : 'showSummary' ,
'click .x-episode-activity' : 'showActivity' ,
'click .x-episode-search' : 'showSearch'
} ,
onShow : function ( ) {
this . showSummary ( ) ;
this . _releaseSearchActivated = false ;
} ,
showSummary : function ( e ) {
if ( e ) {
e . preventDefault ( ) ;
}
this . ui . summary . tab ( 'show' ) ;
this . summary . show ( new SummaryView ( { model : this . model } ) ) ;
} ,
showActivity : function ( e ) {
if ( e ) {
e . preventDefault ( ) ;
}
this . ui . activity . tab ( 'show' ) ;
} ,
showSearch : function ( e ) {
if ( e ) {
e . preventDefault ( ) ;
}
if ( this . _releaseSearchActivated ) {
return ;
}
var self = this ;
this . ui . search . tab ( 'show' ) ;
this . search . show ( new SpinnerView ( ) ) ;
var releases = new ReleaseCollection ( ) ;
var promise = releases . fetchEpisodeReleases ( this . model . id ) ;
promise . done ( function ( ) {
if ( ! self . isClosed ) {
self . search . show ( new SearchLayout ( { collection : releases } ) ) ;
}
} ) ;
}
} ) ;
} ) ;