[IMP] Lazy loading of views
bzr revid: fme@openerp.com-20110331132058-w6g87wsxof3kyiqv
This commit is contained in:
parent
911af887b9
commit
f64b7d3b8c
|
@ -395,6 +395,11 @@ body.openerp {
|
|||
padding-left: 10px;
|
||||
}
|
||||
|
||||
/* View Manager */
|
||||
.openerp .views_switchers {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* Form */
|
||||
.openerp .required.error {
|
||||
border: 1px solid #900;
|
||||
|
|
|
@ -41,8 +41,31 @@ openerp.base.ViewManager = openerp.base.Controller.extend({
|
|||
},
|
||||
on_mode_switch: function(view_type) {
|
||||
this.active_view = view_type;
|
||||
var view = this.views[view_type];
|
||||
if (!view.controller) {
|
||||
// Lazy loading of views
|
||||
var controller;
|
||||
switch (view_type) {
|
||||
case 'tree':
|
||||
controller = new openerp.base.ListView(this.session, this.element_id + "_view_tree", this.dataset, view.view_id);
|
||||
break;
|
||||
case 'form':
|
||||
controller = new openerp.base.FormView(this.session, this.element_id + "_view_form", this.dataset, view.view_id);
|
||||
break;
|
||||
case 'calendar':
|
||||
controller = new openerp.base.CalendarView(this.session, this.element_id + "_view_calendar", this.dataset, view.view_id);
|
||||
break;
|
||||
case 'gantt':
|
||||
controller = new openerp.base.GanttView(this.session, this.element_id + "_view_gantt", this.dataset, view.view_id);
|
||||
break;
|
||||
}
|
||||
controller.start();
|
||||
this.views[view_type].controller = controller;
|
||||
}
|
||||
for (var i in this.views) {
|
||||
this.views[i].controller.$element.toggle(i === view_type);
|
||||
if (this.views[i].controller) {
|
||||
this.views[i].controller.$element.toggle(i === view_type);
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
|
@ -86,25 +109,12 @@ openerp.base.ViewManager = openerp.base.Controller.extend({
|
|||
searchview.do_search);
|
||||
}
|
||||
}
|
||||
for(var i = 0; i < action.views.length; i++) {
|
||||
var view_id, controller;
|
||||
view_id = action.views[i][0];
|
||||
if(action.views[i][1] == "tree") {
|
||||
controller = new openerp.base.ListView(this.session, this.element_id + "_view_tree", this.dataset, view_id);
|
||||
controller.start();
|
||||
this.views.tree = { view_id: view_id, controller: controller };
|
||||
this.$element.find(prefix_id + "_button_tree").bind('click',function(){
|
||||
self.on_mode_switch("tree");
|
||||
});
|
||||
} else if(action.views[i][1] == "form") {
|
||||
controller = new openerp.base.FormView(this.session, this.element_id + "_view_form", this.dataset, view_id);
|
||||
controller.start();
|
||||
this.views.form = { view_id: view_id, controller: controller };
|
||||
this.$element.find(prefix_id + "_button_form").bind('click',function(){
|
||||
self.on_mode_switch("form");
|
||||
});
|
||||
}
|
||||
}
|
||||
this.$element.find('.views_switchers button').click(function() {
|
||||
self.on_mode_switch($(this).data('view-type'));
|
||||
});
|
||||
_.each(action.views, function(view) {
|
||||
self.views[view[1]] = { view_id: view[0], controller: null };
|
||||
});
|
||||
// switch to the first one in sequence
|
||||
this.on_mode_switch(action.views[0][1]);
|
||||
},
|
||||
|
|
|
@ -126,12 +126,11 @@
|
|||
</t>
|
||||
<t t-name="ViewManager">
|
||||
<!-- TODO prefix id with the element_id of the controller t-attf-id="#{prefix}_localid" -->
|
||||
<div style="text-align:right;">
|
||||
<!--
|
||||
<input t-foreach="views" t-as="view" t-att-id="" t-att-value="view[1]"/>
|
||||
-->
|
||||
<div class="views_switchers">
|
||||
<t t-foreach="views" t-as="view">
|
||||
<input t-attf-id="#{prefix}_button_#{view[1]}" type="button" t-att-value="view[1]"/>
|
||||
<button type="button" t-att-data-view-type="view[1]">
|
||||
<t t-esc="view[1]"/>
|
||||
</button>
|
||||
</t>
|
||||
</div>
|
||||
<div t-attf-id="#{prefix}_search"></div>
|
||||
|
|
Loading…
Reference in New Issue