From 052f3132daa2ecd7a1ba4823d1464e3f0d1c74dd Mon Sep 17 00:00:00 2001 From: "Bhumi Thakkar (Open ERP)" Date: Wed, 22 Jun 2011 15:44:41 +0530 Subject: [PATCH] [IMP]Onclick of category display product details in listview bzr revid: bth@tinyerp.com-20110622101441-04b7t83qgrgps50f --- addons/base/controllers/main.py | 5 ++- addons/base/static/src/js/tree.js | 62 ++++++++++++++++++++++++++++++- 2 files changed, 64 insertions(+), 3 deletions(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 0b3094e98c7..c1a0b59b1a2 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -748,5 +748,8 @@ class TreeView(View): @openerpweb.jsonrequest def load(self, req, model, view_id, toolbar=False): + Model = req.session.model(model) + fields = Model.fields_get() fields_view = self.fields_view_get(req, model, view_id, 'tree', toolbar=toolbar) - return {'field_parent': fields_view} \ No newline at end of file + return {'field_parent': fields_view, 'fields' : fields} + diff --git a/addons/base/static/src/js/tree.js b/addons/base/static/src/js/tree.js index 102b6825cd3..2fd4be93c22 100644 --- a/addons/base/static/src/js/tree.js +++ b/addons/base/static/src/js/tree.js @@ -29,6 +29,8 @@ openerp.base.TreeView = openerp.base.View.extend({ on_loaded: function (data) { var self = this; + this.fields_view = data.field_parent; + this.fields = data.fields; this.dataset.read_slice([], 0, false, function (response) { self.$element.html(QWeb.render('TreeView', {'field_data' : response})); id=self.dataset.ids[0]; @@ -101,7 +103,12 @@ openerp.base.TreeView = openerp.base.View.extend({ $(this).css({ color : '#000000' }); }); - $('tr').find('td').children(':first-child').click( function() { + $('tr[id ^= treerow_]').find('td').children(':first-child').click( function() { + if ($(this).is('span')) { + id = $(this).parent().parent().attr('id'); + newid = id.split('_')[1]; + self.getlist(newid); + } divflag=0; if ($('#'+(this.id)).length == 1) { rowid = (this.id).split('_'); @@ -129,11 +136,62 @@ openerp.base.TreeView = openerp.base.View.extend({ } } }); - $('tr[id ^= treerow_]').find('td').children(':last-child').click(function(){ + + $('tr[id^=treerow_]').find('td').children(':last-child').click(function(){ + id = $(this).parent().parent().attr('id'); + newid = id.split('_')[1]; + self.getlist(newid); }); }); }, + getlist: function(newid){ + var self = this; + this.dataset = new openerp.base.DataSetStatic(self.session, self.fields.relation); + this.dataset.on_unlink.add_last(function(ids) { + // TODO niv check form view + var view = self.viewmanager.views[self.viewmanager.active_view].controller; + view.reload_content(); + // TODO niv make real suppression (list or direct) + }); + self.dataset.model = 'product.product'; + self.dataset.domain = [['categ_id', 'child_of', parseInt(newid,10)]]; + + var modes; + modes = !!modes ? modes.split(",") : ["tree", "form"]; + var views = []; + _.each(modes, function(mode) { + var view = [false, mode == "tree" ? "list" : mode]; + if (self.fields.views && self.fields.views[mode]) { + view.push(self.fields.views[mode]); + } + views.push(view); + }); + + this.viewmanager = new openerp.base.ViewManager(self.session, self.element_id, self.dataset, views); + this.viewmanager.on_controller_inited.add_last( function(view_type, controller) { + if (view_type == "list") { + // TODO niv + } else if (view_type == "form") { + // TODO niv + } + }); + this.viewmanager.start(); + + var action = { + "res_model": this.viewmanager.model, + "domain": this.viewmanager.dataset.domain, + "views":views, + "type":"ir.actions.act_window", + "auto_search":true, + "view_type":"list", + "view_mode":"list" + } + + this.viewmanageraction = new openerp.base.ViewManagerAction(self.session, self.element_id, action); + this.viewmanageraction.start(); + }, + // show & hide the contents showcontent: function (id, flag, childid) { var self = this;