Merge branch 'view-refactor' of stigma:platforma into zuber-view-refactor
[redakcja.git] / project / static / js / views / button_toolbar.js
1 /*globals View render_template scriptletCenter*/
2 var ButtonToolbarView = View.extend({
3   _className: 'ButtonToolbarView',
4   template: null,
5   buttons: null,
6   
7   init: function(element, model, parent, template) {
8     this._super(element, model, null);
9     this.parent = parent;
10     this.template = 'button-toolbar-view-template';
11     
12     this.model.addObserver(this, 'buttons', this.modelButtonsChanged.bind(this));
13     this.buttons = this.model.get('buttons');
14     this.model.load();
15     this.render();
16   },
17   
18   modelButtonsChanged: function(property, value) {
19     this.set('buttons', value);
20     this.render();
21   },
22   
23   render: function() {
24     $('.buttontoolbarview-tab', this.element).unbind('click.buttontoolbarview');
25     $('.buttontoolbarview-button', this.element).unbind('click.buttontoolbarview');
26     var self = this;
27     
28     this.element.html(render_template(this.template, this));
29     
30     $('.buttontoolbarview-tab', this.element).bind('click.buttontoolbarview', function() {
31       var groupIndex = $(this).attr('ui:groupindex');
32       $('.buttontoolbarview-group', self.element).each(function() {
33         if ($(this).attr('ui:groupindex') == groupIndex) {
34           $(this).show();
35         } else {
36           $(this).hide();
37         }
38       });
39       $(self.element).trigger('resize');
40     });
41     
42     $('.buttontoolbarview-button', this.element).bind('click.buttontoolbarview', function(event) {
43       var groupIndex = parseInt($(this).attr('ui:groupindex'), 10);
44       var buttonIndex = parseInt($(this).attr('ui:buttonindex'), 10);
45       var button = self.get('buttons')[groupIndex].buttons[buttonIndex];
46       var scriptletId = button.scriptlet_id;
47       var params = eval('(' + button.params + ')'); // To nie powinno być potrzebne
48       console.log('Executing', scriptletId, 'with params', params);
49       scriptletCenter.scriptlets[scriptletId](self.parent, params);
50     });
51     
52     $(this.element).trigger('resize');
53   },
54   
55   dispose: function() {
56     $('.buttontoolbarview-tab', this.element).unbind('click.buttontoolbarview');
57     $('.buttontoolbarview-button', this.element).unbind('click.buttontoolbarview');
58     this._super();
59   }
60 });
61