Amit Patel (OpenERP) has proposed merging
lp:~openerp-dev/openerp-web/trunk-10clicks-sale-apa into lp:openerp-web.
Requested reviews:
OpenERP R&D Web Team (openerp-dev-web)
For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-10clicks-sale-apa/+merge/132859
--
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-10clicks-sale-apa/+merge/132859
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openerp-web/trunk-10clicks-sale-apa.
=== modified file 'addons/web/static/src/js/view_tree.js'
--- addons/web/static/src/js/view_tree.js 2012-10-03 12:28:36 +0000
+++ addons/web/static/src/js/view_tree.js 2012-11-05 10:30:32 +0000
@@ -32,6 +32,7 @@
this.view_id = view_id;
this.records = {};
+ this.selection ={};
this.options = _.extend({}, this.defaults, options || {});
@@ -63,10 +64,11 @@
}
return fields;
},
- store_record:function(records){
+ store_record:function(records, has_toolbar){
var self = this;
_(records).each(function (record) {
self.records[record.id] = record;
+ if (has_toolbar) self.selection[record.id] = record;
});
},
on_loaded: function (fields_view) {
@@ -91,31 +93,29 @@
'toolbar': has_toolbar
}));
this.$el.addClass(this.fields_view.arch.attrs['class']);
-
this.dataset.read_slice(this.fields_list()).then(function(records) {
- self.store_record(records);
+ self.store_record(records, has_toolbar);
if (!has_toolbar) {
// WARNING: will do a second read on the same ids, but only on
// first load so not very important
self.render_data({'null':records})
- self.getdata(_.pluck(records,"id"));
return;
}
var $select = self.$el.find('select')
.change(function () {
var $option = $(this).find(':selected');
- self.getdata($option.val());
+ //clear records for create new tree view
+ self.records = {}
+ self.load_children(self.selection[$option.val()])
});
+
_(records).each(function (record) {
- self.records[record.id] = record;
$('<option>')
.val(record.id)
.text(record.name)
- .data('children', record[self.children_field])
.appendTo($select);
});
-
if (!_.isEmpty(records)) {
$select.change();
}
@@ -145,7 +145,9 @@
var self = this;
var tr = this.$el.find(".oe-treeview-table tbody tr[id^='treerow_']");
_.each(tr,function(rec){
- self.showcontent($(rec).attr('data-id'),true);
+ var record_id = $(rec).attr('data-id')
+ self.load_children(self.records[record_id])
+ self.showcontent(record_id, true);
});
},
collpase_all: function(){
@@ -196,27 +198,27 @@
var $this = $(this),
record_id = $this.data('id'),
bool = $this.parent().hasClass('oe_open');
+ if (!bool) self.load_children(self.records[record_id])
self.showcontent(record_id, !bool);
});
},
- // get child data of selected value
- getdata: function (id) {
- var self = this;
- var parent_child ={};
- id = _.isArray(id)?id:parseInt(id);
- var ir_model_data = new instance.web.Model(this.model,self.dataset.get_context() || {},[['id','child_of',id]]).query();
- ir_model_data._execute().then(function(records){
- self.store_record(records);
- _.each(records,function(rec){
- if(rec[self.children_field].length === 0)return;
- parent_child[rec.id] = [];
- _.each(rec[self.children_field],function(key){
- parent_child[rec.id].push(self.records[key]);
- });
- })
- self.render_data(parent_child);
- });
+
+ // get child data of selected record
+ load_children : function(record){
+ self = this;
+ //skip AJAX if children are already loaded
+ if ( !self.records[_.first(record[this.children_field])]){
+ var ir_model_data = new instance.web.Model(self.model, self.dataset.get_context() || {}, [['id','in',record[this.children_field]]]).query();
+ ir_model_data._execute().then(function(records){
+ self.store_record(records)
+ var add_children = {};
+ add_children[record.id] = records;
+ self.render_data(add_children)
+ })
+ }
},
+
+
render_data: function(groupby){
var self = this;
_.each(_.keys(groupby),function(key){
@@ -238,7 +240,6 @@
self.$el.find('tbody').html(children_rows);
}
});
- self.collpase_all();
},
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp