diff --git a/src/screen.js b/src/screen.js index 4c81430c03..2cab4969bc 100644 --- a/src/screen.js +++ b/src/screen.js @@ -21,7 +21,7 @@ this.search_entry = jQuery(''); this.search_entry.keypress(function(e) { if (e.which == 13) { - this.screen.search_filter(this.search_entry.val()); + this.do_search(); return false; } }.bind(this)); @@ -41,10 +41,30 @@ }); this.but_next.click(this.search_next.bind(this)); this.filter_box.append(this.but_next); + this.content_box = jQuery('
', { 'class': 'content-box' }); - this.el.append(this.content_box); + + if (!jQuery.isEmptyObject(this.tab_domain)) { + this.tab = jQuery('
', { + 'class': 'tab-domain' + }).append(jQuery('
').append(jQuery('
    '))); + this.tab.tabs(); + this.tab_domain.forEach(function(tab_domain, i) { + var name = tab_domain[0]; + this.tab.tabs('add', '#' + i, name); + }.bind(this)); + this.tab.find('#0').append(this.content_box); + this.tab.tabs('select', '#0'); + this.tab.tabs({ + 'activate': this.switch_page.bind(this) + }); + this.el.append(this.tab); + } else { + this.tab = null; + this.el.append(this.content_box); + } }, search_prev: function() { this.screen.search_prev(this.search_entry.val()); @@ -52,14 +72,38 @@ search_next: function() { this.screen.search_next(this.search_entry.val()); }, + switch_page: function(event, ui) { + ui.newPanel.append(ui.oldPanel.children().detach()); + this.do_search(); + }, + get_tab_domain: function() { + if (!this.tab) { + return []; + } + return this.tab_domain[this.tab.tabs('option', 'active')][1]; + }, + do_search: function() { + this.screen.search_filter(this.search_entry.val()); + }, set_screen: function(screen) { this.screen = screen; }, show_filter: function() { - this.filter_box.css('display', 'block'); + this.filter_box.show(); + if (this.tab) { + this.tab.show(); + this.content_box.detach(); + this.tab.find('#' + this.tab.tabs('option', 'active')) + .append(this.content_box); + } }, hide_filter: function() { - this.filter_box.css('display', 'none'); + this.filter_box.hide(); + if (this.tab) { + this.tab.hide(); + this.content_box.detach(); + this.el.append(this.content_box); + } }, set: function(widget) { this.content_box.children().detach(); @@ -172,6 +216,12 @@ domain.push(this.attributes.domain); } else domain = this.attributes.domain || []; + + var tab_domain = this.screen_container.get_tab_domain(); + if (!jQuery.isEmptyObject(tab_domain)) { + domain = ['AND', domain, tab_domain]; + } + var grp_prm = this.model.find(domain, this.offset, this.limit, this.attributes.order, this.context); var count_prm = this.model.execute('search_count', [domain],