[imp] improved sidebar, now hide it by default in list views.

bzr revid: nicolas.vanhoren@openerp.com-20110518151710-qq2gwssi75g51uhk
This commit is contained in:
niv-openerp
2011-05-18 17:17:10 +02:00
parent 800493bf30
commit a55e66ccbb
4 changed files with 43 additions and 29 deletions
+3
View File
@@ -71,6 +71,9 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
} else {
this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded);
}
if (this.view_manager && this.view_manager.sidebar) {
this.view_manager.sidebar.refresh(true);
}
},
do_hide: function () {
this.$element.hide();
+3
View File
@@ -251,6 +251,9 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
this.do_reload();
this.hidden = false;
}
if (this.view_manager && this.view_manager.sidebar) {
this.view_manager.sidebar.refresh(true);
}
},
do_hide: function () {
this.$element.hide();
+19 -5
View File
@@ -295,17 +295,31 @@ openerp.base.Sidebar = openerp.base.BaseWidget.extend({
var section = {elements:toolbar[type[0]], label:type[1]};
self.sections.push(section);
});
this.refresh();
this.refresh(true);
},
refresh: function() {
this.$element.html(QWeb.render("ViewManager.sidebar.internal", _.extend({_:_}, this)));
refresh: function(new_view) {
var view = this.view_manager.active_view;
the_condition = this.sections.length > 0 && _.detect(this.sections,
function(x) {return x.elements.length > 0;}) != undefined
&& (!new_view || view != 'list');
if (!the_condition) {
this.$element.addClass('closed-sidebar');
this.$element.removeClass('open-sidebar');
} else {
this.$element.addClass('open-sidebar');
this.$element.removeClass('closed-sidebar');
}
this.$element.html(QWeb.render("ViewManager.sidebar.internal",this));
var self = this;
this.$element.find(".toggle-sidebar").click(function(e) {
self.$element.toggleClass('open-sidebar closed-sidebar');
e.stopPropagation();
e.preventDefault();
});
this.$element.find("a").click(function(e) {
this.$element.find("a.oe_sidebar_action_a").click(function(e) {
var $this = jQuery(this);
var i = $this.attr("data-i");
var j = $this.attr("data-j");
@@ -320,7 +334,7 @@ openerp.base.Sidebar = openerp.base.BaseWidget.extend({
},
start: function() {
this._super();
this.refresh();
this.refresh(false);
}
});
+18 -24
View File
@@ -557,37 +557,31 @@
<input t-att-id="element_id"/>
</t>
<t t-name="ViewManager.sidebar">
<div t-att-id="element_id" class="sidebar-main-div open-sidebar">
<div t-att-id="element_id" class="sidebar-main-div closed-sidebar">
</div>
</t>
<t t-name="ViewManager.sidebar.internal">
<t t-js="d">
d.the_condition = d.sections.length &gt; 0 &amp;&amp; d._.detect(d.sections, function(x) {
return x.elements.length &gt; 0;
}) != undefined
</t>
<t t-if="the_condition">
<a class="toggle-sidebar"></a>
<div t-att-id="element_id" class="sidebar-sub-div">
<div class="sidebar-displaying-div">
<t t-set="i" t-value="1-1"/> <!-- al do stupid things -->
<t t-foreach="sections" t-as="section">
<t t-if="section.elements.length &gt; 0">
<h2><t t-esc="section.label"/></h2>
<ul>
<t t-set="j" t-value="1-1"/>
<t t-foreach="section.elements" t-as="element">
<li><a t-att-data-i="i" t-att-data-j="j" href="#"><t t-esc="element.name"/></a></li>
<t t-set="j" t-value="j+1"/>
</t>
</ul>
<a class="toggle-sidebar"></a>
<div t-att-id="element_id" class="sidebar-sub-div">
<div class="sidebar-displaying-div">
<t t-set="i" t-value="1-1"/> <!-- al do stupid things -->
<t t-foreach="sections" t-as="section">
<t t-if="section.elements.length &gt; 0">
<h2><t t-esc="section.label"/></h2>
<ul>
<t t-set="j" t-value="1-1"/>
<t t-foreach="section.elements" t-as="element">
<li><a class="oe_sidebar_action_a" t-att-data-i="i" t-att-data-j="j" href="#">
<t t-esc="element.name"/></a></li>
<t t-set="j" t-value="j+1"/>
</t>
<t t-set="i" t-value="i+1"/>
</ul>
</t>
</div>
<t t-set="i" t-value="i+1"/>
</t>
</div>
</t>
</div>
</t>
<t t-name="DialogWarning">
<div id="dialog-message" t-att-title="title">