'use strict' ;
define (
[
'marionette' ,
'Settings/DownloadClient/SabView' ,
'Settings/DownloadClient/BlackholeView' ,
'Settings/DownloadClient/PneumaticView' ,
'Settings/DownloadClient/NzbgetView' ,
'Mixins/AsModelBoundView' ,
'Mixins/AutoComplete' ,
'bootstrap'
] , function ( Marionette , SabView , BlackholeView , PneumaticView , NzbgetView , AsModelBoundView ) {
var view = Marionette . Layout . extend ( {
template : 'Settings/DownloadClient/LayoutTemplate' ,
regions : {
downloadClient : '#download-client-settings-region'
} ,
ui : {
downloadClientSelect : '.x-download-client' ,
downloadedEpisodesFolder : '.x-path'
} ,
events : {
'change .x-download-client' : 'downloadClientChanged'
} ,
onShow : function ( ) {
this . sabView = new SabView ( { model : this . model } ) ;
this . blackholeView = new BlackholeView ( { model : this . model } ) ;
this . pneumaticView = new PneumaticView ( { model : this . model } ) ;
this . nzbgetView = new NzbgetView ( { model : this . model } ) ;
this . ui . downloadedEpisodesFolder . autoComplete ( '/directories' ) ;
var client = this . model . get ( 'downloadClient' ) ;
this . refreshUIVisibility ( client ) ;
} ,
downloadClientChanged : function ( ) {
var clientId = this . ui . downloadClientSelect . val ( ) ;
this . refreshUIVisibility ( clientId ) ;
} ,
refreshUIVisibility : function ( clientId ) {
if ( ! clientId ) {
clientId = 'sabnzbd' ;
}
switch ( clientId . toString ( ) ) {
case 'sabnzbd' :
this . downloadClient . show ( this . sabView ) ;
break ;
case 'blackhole' :
this . downloadClient . show ( this . blackholeView ) ;
break ;
case 'pneumatic' :
this . downloadClient . show ( this . pneumaticView ) ;
break ;
case 'nzbget' :
this . downloadClient . show ( this . nzbgetView ) ;
break ;
default :
throw 'unknown download client id' + clientId ;
}
}
} ) ;
return AsModelBoundView . call ( view ) ;
} ) ;