6dbddd9866ef4107f19acb525fdae361153bf4fd
[redakcja.git] / project / static / js / views / panel_container.js
1 /*globals View render_template panels*/
2
3 var PanelContainerView = View.extend({
4   _className: 'PanelContainerView',
5   element: null,
6   model: null,
7   template: 'panel-container-view-template',
8   contentView: null,
9   
10   init: function(element, model, template) {
11     this._super(element, model, template);
12
13     $('.panel-main-toolbar select', this.element.get(0)).bind('change.panel-container-view', this.selectChanged.bind(this));
14     $('.panel-main-toolbar .refresh', this.element.get(0))
15       .bind('click.panel-container-view', this.refreshButtonClicked.bind(this))
16       .attr('disabled', 'disabled');
17   },
18   
19   selectChanged: function(event) {
20     var value = $('select', this.element.get(0)).val();
21     var klass = panels[value];
22
23     if (this.contentView) {
24       this.contentView.dispose();
25       this.contentView = null;
26     }
27
28     if( value != 'empty') {
29     this.contentView = new klass($('.content-view', 
30       this.element.get(0)), this.model.contentModels[value], this);
31     $('.panel-main-toolbar .refresh', this.element.get(0)).attr('disabled', null);    
32     }
33   },
34   
35   refreshButtonClicked: function(event) {
36     if (this.contentView) {
37       console.log('refreshButtonClicked');
38       this.contentView.reload();
39     }
40   },
41   
42   dispose: function() {
43     $('.panel-main-toolbar .refresh', this.element.get(0)).unbind('click.panel-container-view');
44     $('.panel-main-toolbar select', this.element.get(0)).unbind('change.panel-container-view');
45     this._super();
46   }
47 });
48