From f75ac6d8f2d7964ef18a071b4caf4ed4a020a07c Mon Sep 17 00:00:00 2001 From: "Bhumi Thakkar (Open ERP)" Date: Tue, 7 Jun 2011 12:08:30 +0530 Subject: [PATCH 001/176] [IMP] Initial commit for tree view. bzr revid: bth@tinyerp.com-20110607063830-1jxny52yhjd42w5y --- addons/base/static/src/xml/base.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index afbd4f81d91..cd939571e94 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -228,6 +228,8 @@ + +
From c4fe70d92cebbfc7d31dc6cc769e3c9b5a8a39a8 Mon Sep 17 00:00:00 2001 From: "Bhumi Thakkar (Open ERP)" Date: Tue, 7 Jun 2011 12:40:34 +0530 Subject: [PATCH 002/176] [IMP] Loaded data and displayed in tree structure. bzr revid: bth@tinyerp.com-20110607071034-lfr5nlt5aiduk6z6 --- addons/base/controllers/main.py | 17 ++++ addons/base/static/src/js/tree.js | 115 +++++++++++++++++++++++----- addons/base/static/src/xml/base.xml | 56 ++++++++++++++ 3 files changed, 170 insertions(+), 18 deletions(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 36ea829a2f9..0cd5db39b35 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -756,3 +756,20 @@ class Action(openerpweb.Controller): if action: value = clean_action(action[0], req.session) return {'result': value} +class TreeView(View): + _cp_path = "/base/treeview" + + @openerpweb.jsonrequest + def load(self, req, model, view_id, toolbar=False): + fields_view = self.fields_view_get(req, model, view_id, 'tree', toolbar=toolbar) + return {'field_parent': fields_view} + + def fields_view_get(self, request, model, view_id, view_type="tree", + transform=True, toolbar=False, submenu=False): + """ Sets @editable on the view's arch if it isn't already set and + ``set_editable`` is present in the request context + """ + view = super(TreeView, self).fields_view_get( + request, model, view_id, view_type, transform, toolbar, submenu) + + return view \ No newline at end of file diff --git a/addons/base/static/src/js/tree.js b/addons/base/static/src/js/tree.js index e333c295473..5670a7e74d1 100644 --- a/addons/base/static/src/js/tree.js +++ b/addons/base/static/src/js/tree.js @@ -1,26 +1,105 @@ -/*--------------------------------------------------------- - * OpenERP base library - *---------------------------------------------------------*/ - openerp.base.tree = function(openerp) { - openerp.base.views.add('tree', 'openerp.base.TreeView'); -openerp.base.TreeView = openerp.base.Controller.extend({ -/** - * Genuine tree view (the one displayed as a tree, not the list) - */ +openerp.base.TreeView = openerp.base.View.extend({ + init: function(view_manager, session, element_id, dataset, view_id, options) { + this._super(session, element_id); + this.view_manager = view_manager || new openerp.base.NullViewManager(); + this.dataset = dataset; + this.model = dataset.model; + this.view_id = view_id; + + this.columns = []; + + this.options = _.extend({}, this.defaults, options || {}); + this.flags = this.view_manager.action.flags; + }, start: function () { this._super(); - this.$element.append('Tree view'); + return this.rpc("/base/treeview/load", { + model: this.model, + view_id: this.view_id, + toolbar: this.view_manager ? !!this.view_manager.sidebar : false + }, this.on_loaded); }, - do_show: function () { - this.$element.show(); + on_loaded: function (data) { + var self = this; + this.dataset.read_slice([], 0, false, function (response) { + self.$element.html(QWeb.render('TreeView', {'field_data':response})); + id=self.dataset.ids[0]; + self.dataset.domain=[['parent_id','=',parseInt(id,10)]]; + self.dataset.read_slice([], 0, false, function (response) { + $('#parent_id').change(self.getch(($('#parent_id').attr('value')),0)); + self.$element.append(QWeb.render('TreeView_Secondry', {'child_data':response})); + $('#child_id').find('div').click(function(){ + self.getch(this.id,1) + }); + }); + }); }, - do_hide: function () { - this.$element.hide(); + getch: function(id,flag) { + + var self=this; + if(flag==0){ + $('#parent_id').change(function(){ + self.on_change($('#parent_id').attr('value'),0); + }); + } + else if(flag==1){ + self.on_change(id,1); + }else{ + self.on_change(id,2); + } + }, + on_change:function(parentid,flag){ + var self=this; + if(parentid>0){ + this.dataset.domain=[['parent_id','=',parseInt(parentid,10)]]; + this.dataset.read_slice([],0,false, function (response) { + if(flag==0){ + $('#child_id').remove(); + self.$element.append(QWeb.render('TreeView_Secondry', {'child_data':response})); + }else if(flag==1){ + jQuery('#'+parentid).append(QWeb.render('TreeView_Children', {'childdata':response})) + $('#'+parentid).find('#subchild').find('#subchild').remove(); + $('#'+parentid).find('#subchild').slice(1,3).remove(); + }else if(flag==2){ + $("#subchild #"+parentid).find('#subchild').remove(); + $("#subchild #"+parentid).find('#childsubchild').remove(); + $("#subchild #"+parentid).append(QWeb.render('TreeView_SubChildren', {'subchilddata':response})) + } + $('#child_id').find('div').click(function(){ + self.getch(this.id,1) + }); + $('#child_id div #subchild').find('div').click(function(){ + self.getch(this.id,2) + }); + }); + } + }, + reload_view: function (grouped) { + var self = this; + this.dataset.offset = 0; + this.dataset.limit = false; + return this.rpc('/base/treeview/load', { + model: this.model, + view_id: this.view_id, + toolbar: !!this.flags.sidebar + }, function (field_view_get) { + self.on_loaded(field_view_get, grouped); + }); + }, + do_search: function (domains, contexts, groupbys) { + var self = this; + return this.rpc('/base/session/eval_domain_and_context', { + domains: domains, + contexts: contexts, + group_by_seq: groupbys + }, function (results) { + self.dataset.context = results.context; + self.dataset.domain = results.domain; + self.reload_view(!!results.group_by).then( + $.proxy(self, 'reload_content')); + }); } }); - -}; - -// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: +} \ No newline at end of file diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index cd939571e94..1d46df2eda5 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -229,7 +229,63 @@
+ + +
+ +
+ +
+ + + + +
+
+
+ + +
+ +
+ +
+ + + + +
+
+
+
+ +
+ +
+ + + + + +
+
+
+
From 4b15c43c4336f597819e3f446b1cce93e77a9e8f Mon Sep 17 00:00:00 2001 From: "Bhumi Thakkar (Open ERP)" Date: Tue, 7 Jun 2011 18:44:19 +0530 Subject: [PATCH 003/176] [FIX] Stopped multiple request during collapse (still collapse is in progress). bzr revid: bth@tinyerp.com-20110607131419-wxbpvdqvop2wonvo --- addons/base/static/src/img/collapse.gif | Bin 0 -> 80 bytes addons/base/static/src/img/expand.gif | Bin 0 -> 81 bytes addons/base/static/src/js/tree.js | 46 ++++++++++++++++++++---- addons/base/static/src/xml/base.xml | 21 ++++++----- 4 files changed, 49 insertions(+), 18 deletions(-) create mode 100755 addons/base/static/src/img/collapse.gif create mode 100755 addons/base/static/src/img/expand.gif diff --git a/addons/base/static/src/img/collapse.gif b/addons/base/static/src/img/collapse.gif new file mode 100755 index 0000000000000000000000000000000000000000..759e72ebcfe18bc1bc714b6451c301b12a1f27d5 GIT binary patch literal 80 zcmZ?wbhEHb6krfwSjfZx1Zin$|G_}
@@ -127,7 +127,7 @@
- + @@ -244,7 +244,7 @@
- +
@@ -262,11 +262,11 @@
-
+ -
+