From a158707ad8753d3882a571f2aed1c3b8d5a1c4dc Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Fri, 7 Sep 2012 00:41:23 +0200 Subject: [MERGE] process view (manual merge, moved the code from web_process) bzr revid: al@openerp.com-20120906224123-walwe4rc3x4wycsc --- addons/process/static/src/js/process.js | 249 ++++++++++++++++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100644 addons/process/static/src/js/process.js (limited to 'addons/process/static/src/js/process.js') diff --git a/addons/process/static/src/js/process.js b/addons/process/static/src/js/process.js new file mode 100644 index 00000000000..bbf9080de95 --- /dev/null +++ b/addons/process/static/src/js/process.js @@ -0,0 +1,249 @@ +openerp.process = function (instance) { +var QWeb = instance.web.qweb, + _t = instance.web._t; +instance.web.ViewManager.include({ + start: function() { + var self = this; + var _super = this._super(); + this.process_help = this.action ? this.action.help : ''; + self.process_help = $(this.process_help).text(); + if(this.action) { + this.process_model = this.action.res_model; + } else { + this.process_model = this.dataset.model; + } + this.$el.on('click', '.oe_process', function(ev) { self.initialize_process_view(ev);}); + return _super; + }, + initialize_process_view: function(ev) { + var self = this; + this.record_id = false; + if(this.active_view == 'form') { + this.record_id = this.views[this.active_view].controller.datarecord.id; + } + this.process_get_object().pipe(function(process) { + if(process && process.length) { + if(process.length > 1) { + self.process_selection = process; + } else { + self.process_id = process[0][0], + self.process_title = process[0][1]; + } + } + return $.Deferred().resolve(); + }).pipe(function() { + var def = $.Deferred(); + if(self.process_id) { + $.when(self.process_graph_get()).done(function(res) { + self.process_notes = res.notes; + self.process_title = res.name; + self.process_subflows = _(res.nodes).chain() + .filter(function (node) { return node['subflow'] !== false; }) + .uniq(false, function (node) { return node['subflow'][0]; }).value(); + self.process_related = res.related; + def.resolve(res); + }); + } else def.resolve(); + return def.promise(); + }).done(function(res) { + $.when(self.process_render_view()).done(function() { + if(res) { + self.process_draw_graph(res); + } + }); + }); + }, + process_graph_get: function() { + var self = this; + var def = $.Deferred(); + this.process_id = parseInt(this.process_id, 10); + this.process_dataset + .call("graph_get",[self.process_id, self.model || self.dataset.model, self.record_id, [80,80,150,100], self.session.user_context]) + .done(function(res) { + self.process_dataset + .call("search_by_model",[self.model || self.dataset.model, self.session.user_context]) + .done( + function(r) { + res['related'] = r; + def.resolve(res); + }); + }); + return def.promise(); + }, + process_get_object : function() { + var self = this, + def = $.Deferred(); + if(this.process_id) + return def.resolve().promise(); + this.process_dataset = new instance.web.DataSet(self, "process.process", self.session.user_context); + this.process_dataset + .call("search_by_model", [self.process_model,self.session.user_context]) + .done(function(res) { + if (!res.length) { + self.process_model = false; + self.process_get_object().done(def.resolve); + } + else { + def.resolve(res); + } + }) + .fail(def.reject); + return def.promise(); + }, + process_render_view : function() { + var self = this; + this.$el.html(QWeb.render("process.ProcessView", this)); + this.$el.addClass('oe_view_process').css({'background-color':'#F0EEEE'}); + this.$el.find('#edit_process').click(function() { + self.process_edit_view(); + }); + var $parent = this.getParent().$el; + $parent.find('#change_process').click(function() { + self.process_selection = false, + self.process_id = $parent.find('#select_process').val(), + self.process_title = $.trim($parent.find('#select_process option:selected').text()); + self.initialize_process_view(); + }); + this.$el.find(".process_subflow").click(function() { + self.process_id = this.id; + self.initialize_process_view(); + }); + }, + process_draw_graph : function(result) { + var self = this; + var res_nodes = result['nodes']; + var res_edges = result['transitions']; + var id_to_node = {}; + var canvas = $('div.process_canvas').empty().get(0); + var style = { + edge_color: "#A0A0A0", + edge_label_font_size: 10, + edge_width: 2, + edge_spacing: 40, + edge_loop_radius: 200, + + node_label_color: "#333", + node_label_font_size: 12, + node_outline_color: "#333", + node_outline_width: 1, + node_outline_color: "#F5F5F5", + node_outline_width: 0, + node_selected_width: 0, + node_size_x: 150, + node_size_y: 100, + + gray: "#DCDCDC", + white: "#FFF", + viewport_margin: 50 + }; + var r = new Raphael(canvas,'100%','100%'); + var graph = new CuteGraph(r,style,canvas.parentNode); + var render_process = function(r,nodes){ + //For Image + var image_node = nodes.kind == "subflow" ? "node-subflow" : "node"; + image_node = nodes.gray ? image_node + "-gray" : image_node; + image_node = nodes.active ? 'node-current': image_node; + var img_src = '/web_process/static/src/img/'+ image_node + '.png'; + var image = r['image'](img_src, nodes.x-25, nodes.y,150, 100).attr({"cursor": "default"}) .mousedown(function() { return false; }); + //For Node + var process_node = r['rect'](nodes.x, nodes.y, 150, 150).attr({stroke: "none"}); + // Node text + if(nodes.name.length > 18){ + var text = nodes.name.substr(0,16) + '...' + } + var node_text = r.text(nodes.x+60, nodes.y+10,(text || nodes.name.substr(0,18))).attr({"fill": "#fff","font-weight": "bold", "cursor": "default","title":nodes.name}); + //Node Description + var new_notes = nodes.notes; + if(nodes.notes.length > 25) { + var to; + var temp_str = new_notes = ''; + var from = to = 0; + while (1) { + from = 25; + temp_str = nodes.notes.substr(to, 25); + if (temp_str.lastIndexOf(" ") < 25 && temp_str.length >= 25) { + from = temp_str.lastIndexOf(" "); + } + new_notes += "\n" + nodes.notes.substr(to, from); + if (new_notes.length > 80){ + break; + } + to += from; + } + } + if(nodes.res) + new_notes = nodes.res.name + '\n' + new_notes; + if(nodes.notes.length > 60){ + var notes = new_notes.substring(0,60) +'..'; + } + r.text(nodes.x+60, nodes.y+30, (notes || new_notes)).attr({"title":nodes.notes,"cursor": "default"}); + if(nodes.menu) { + r['image']('/web/static/src/img/icons/gtk-jump-to.png', nodes.x+100, nodes.y+75, 16, 16) + .attr({"cursor": "pointer", "title": nodes.menu.name}) + .click(function() { + self.process_jump_to_view(nodes.res_model, nodes.menu.id); + }); + } + var process_set =r.set().push(process_node); + process_set.mousedown(function() { + return false; + }); + return process_set; + } + _.each(res_nodes, function(node,id) { + node['res_model'] = self.model, + node['res_id'] = false, + node['color'] = 'gray' + var n = new CuteNode( + graph, + node.x + 50, //FIXME the +50 should be in the layout algorithm + node.y + 50, + CuteGraph.wordwrap("", 14)); + n.id = id; + id_to_node[id] = n; + return render_process(r,node); + }); + _.each(res_edges, function(edge) { + var e = new CuteEdge( + graph, + CuteGraph.wordwrap(" ",0), + id_to_node[edge.source], + id_to_node[edge.target] || id_to_node[edge.source]); + e.id = edge.id; + }); + }, + process_jump_to_view: function(model,id) { + var self = this; + var dataset = new instance.web.DataSet(this, 'ir.values', this.session.user_context); + var action_manager = new instance.web.ActionManager(self); + dataset.call('get', + ['action', 'tree_but_open',[['ir.ui.menu', id]], dataset.context], + function(res) { + var action = res[0][res[0].length - 1]; + self.rpc("/web/action/load", { + action_id: action.id, + context: dataset.context + }, function(result) { + action_manager.replace(self.$el); + action_manager.do_action(result.result); + }) + }); + }, + process_edit_view: function() { + var self = this; + var pop = new instance.web.form.FormOpenPopup(self); + pop.show_element( + self.process_dataset.model, + self.process_id, + self.context || self.dataset.context, + { + title: _t('Process') + }); + var form_controller = pop.view_form; + pop.on_write_completed.add_last(function() { + self.initialize_process_view(); + }); + } +}); +}; +// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: -- cgit v1.2.3 From f35f86745e5c652421261e7eccf312d14e61d471 Mon Sep 17 00:00:00 2001 From: Vishmita Date: Thu, 13 Sep 2012 15:09:21 +0530 Subject: [FIX]change image path of node. bzr revid: vja@tinyerp.com-20120913093921-hv1jgfahc1cn2ef7 --- addons/process/static/src/js/process.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/process/static/src/js/process.js') diff --git a/addons/process/static/src/js/process.js b/addons/process/static/src/js/process.js index bbf9080de95..57c6f196012 100644 --- a/addons/process/static/src/js/process.js +++ b/addons/process/static/src/js/process.js @@ -143,7 +143,7 @@ instance.web.ViewManager.include({ var image_node = nodes.kind == "subflow" ? "node-subflow" : "node"; image_node = nodes.gray ? image_node + "-gray" : image_node; image_node = nodes.active ? 'node-current': image_node; - var img_src = '/web_process/static/src/img/'+ image_node + '.png'; + var img_src = '/process/static/src/img/'+ image_node + '.png'; var image = r['image'](img_src, nodes.x-25, nodes.y,150, 100).attr({"cursor": "default"}) .mousedown(function() { return false; }); //For Node var process_node = r['rect'](nodes.x, nodes.y, 150, 150).attr({stroke: "none"}); -- cgit v1.2.3 From 3eb5cfb61b6bbb84043f4fa6b3fdefb0fbb320c7 Mon Sep 17 00:00:00 2001 From: "Vidhin Mehta (OpenERP)" Date: Wed, 3 Oct 2012 16:52:27 +0530 Subject: [IMP]remove call_backs from call method. bzr revid: vme@tinyerp.com-20121003112227-vu2crilmvnk2me8j --- addons/process/static/src/js/process.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'addons/process/static/src/js/process.js') diff --git a/addons/process/static/src/js/process.js b/addons/process/static/src/js/process.js index 57c6f196012..2b543484f2e 100644 --- a/addons/process/static/src/js/process.js +++ b/addons/process/static/src/js/process.js @@ -217,8 +217,7 @@ instance.web.ViewManager.include({ var dataset = new instance.web.DataSet(this, 'ir.values', this.session.user_context); var action_manager = new instance.web.ActionManager(self); dataset.call('get', - ['action', 'tree_but_open',[['ir.ui.menu', id]], dataset.context], - function(res) { + ['action', 'tree_but_open',[['ir.ui.menu', id]], dataset.context]).then(function(res) { var action = res[0][res[0].length - 1]; self.rpc("/web/action/load", { action_id: action.id, -- cgit v1.2.3 From 1fe81f3a962cf1600a9aecbb22d7be9162c3a311 Mon Sep 17 00:00:00 2001 From: ggh-openerp Date: Wed, 3 Oct 2012 18:04:12 +0530 Subject: [IMP] In rpc method remove callback and modify related code bzr revid: ggh@tinyerp.com-20121003123412-22o4t380ipsmns2e --- addons/process/static/src/js/process.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/process/static/src/js/process.js') diff --git a/addons/process/static/src/js/process.js b/addons/process/static/src/js/process.js index 57c6f196012..b13e92df33c 100644 --- a/addons/process/static/src/js/process.js +++ b/addons/process/static/src/js/process.js @@ -223,7 +223,7 @@ instance.web.ViewManager.include({ self.rpc("/web/action/load", { action_id: action.id, context: dataset.context - }, function(result) { + }).then(function(result) { action_manager.replace(self.$el); action_manager.do_action(result.result); }) -- cgit v1.2.3 From 3967c43dda46dcb74d878698850fb6ebed5e302f Mon Sep 17 00:00:00 2001 From: "vta vta@openerp.com" <> Date: Mon, 8 Oct 2012 12:45:31 +0200 Subject: [FIX] Fixed process.js, unuseful code. bzr revid: vta@openerp.com-20121008104531-5bfhwx6yoxwicnmw --- addons/process/static/src/js/process.js | 1 - 1 file changed, 1 deletion(-) (limited to 'addons/process/static/src/js/process.js') diff --git a/addons/process/static/src/js/process.js b/addons/process/static/src/js/process.js index 57c6f196012..c6b9bbd9ef1 100644 --- a/addons/process/static/src/js/process.js +++ b/addons/process/static/src/js/process.js @@ -6,7 +6,6 @@ instance.web.ViewManager.include({ var self = this; var _super = this._super(); this.process_help = this.action ? this.action.help : ''; - self.process_help = $(this.process_help).text(); if(this.action) { this.process_model = this.action.res_model; } else { -- cgit v1.2.3 From 1f062c54ab1298f8fa272420d28fb2af8917fc9b Mon Sep 17 00:00:00 2001 From: "vta vta@openerp.com" <> Date: Mon, 8 Oct 2012 14:04:27 +0200 Subject: [FIX] Remove add_last for on_write_completed. bzr revid: vta@openerp.com-20121008120427-1cxemqo6onwc91up --- addons/process/static/src/js/process.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'addons/process/static/src/js/process.js') diff --git a/addons/process/static/src/js/process.js b/addons/process/static/src/js/process.js index c6b9bbd9ef1..c80ce3316ed 100644 --- a/addons/process/static/src/js/process.js +++ b/addons/process/static/src/js/process.js @@ -239,8 +239,7 @@ instance.web.ViewManager.include({ title: _t('Process') }); var form_controller = pop.view_form; - pop.on_write_completed.add_last(function() { - self.initialize_process_view(); + pop.on('on_write_complete', self, self.initialize_process_view); }); } }); -- cgit v1.2.3 From e87aec12f9fb5124ee8e1dcceecd540254f3698e Mon Sep 17 00:00:00 2001 From: "vta vta@openerp.com" <> Date: Mon, 8 Oct 2012 14:43:02 +0200 Subject: [FIX] Typo in previous commit. bzr revid: vta@openerp.com-20121008124302-8t8h11ry9erxvqvk --- addons/process/static/src/js/process.js | 1 - 1 file changed, 1 deletion(-) (limited to 'addons/process/static/src/js/process.js') diff --git a/addons/process/static/src/js/process.js b/addons/process/static/src/js/process.js index c80ce3316ed..c593c1569fc 100644 --- a/addons/process/static/src/js/process.js +++ b/addons/process/static/src/js/process.js @@ -240,7 +240,6 @@ instance.web.ViewManager.include({ }); var form_controller = pop.view_form; pop.on('on_write_complete', self, self.initialize_process_view); - }); } }); }; -- cgit v1.2.3 From bbbc6a304dca2b58aef7e47e2bba9e155de160f9 Mon Sep 17 00:00:00 2001 From: "vta vta@openerp.com" <> Date: Wed, 10 Oct 2012 12:12:00 +0200 Subject: [FIX] Fixed event name on_write_complete. bzr revid: vta@openerp.com-20121010101200-1lwcqae44bb88ffa --- addons/process/static/src/js/process.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/process/static/src/js/process.js') diff --git a/addons/process/static/src/js/process.js b/addons/process/static/src/js/process.js index c593c1569fc..386a9653c02 100644 --- a/addons/process/static/src/js/process.js +++ b/addons/process/static/src/js/process.js @@ -239,7 +239,7 @@ instance.web.ViewManager.include({ title: _t('Process') }); var form_controller = pop.view_form; - pop.on('on_write_complete', self, self.initialize_process_view); + pop.on('write_completed', self, self.initialize_process_view); } }); }; -- cgit v1.2.3 From df6a4055d3f8e8cf47ba28446f36850a5624189c Mon Sep 17 00:00:00 2001 From: Vishmita Date: Mon, 15 Oct 2012 15:39:44 +0530 Subject: [FIX]Link to doc dessappear on process view lp bug: https://launchpad.net/bugs/1062904 fixed bzr revid: vja@tinyerp.com-20121015100944-w8wo8wti6our5wye --- addons/process/static/src/js/process.js | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'addons/process/static/src/js/process.js') diff --git a/addons/process/static/src/js/process.js b/addons/process/static/src/js/process.js index c214dbb0fdf..c2ec4486507 100644 --- a/addons/process/static/src/js/process.js +++ b/addons/process/static/src/js/process.js @@ -176,6 +176,12 @@ instance.web.ViewManager.include({ var notes = new_notes.substring(0,60) +'..'; } r.text(nodes.x+60, nodes.y+30, (notes || new_notes)).attr({"title":nodes.notes,"cursor": "default"}); + var DOC_URL = "http://doc.openerp.com/v6.1/index.php"; + r['image']('/web/static/src/img/icons/gtk-info.png', nodes.x, nodes.y+75, 16, 16) + .attr({"cursor": "pointer", "title": "Help"}) + .click(function() { + window.open(nodes.url || DOC_URL + "?model=" + nodes.model); + }); if(nodes.menu) { r['image']('/web/static/src/img/icons/gtk-jump-to.png', nodes.x+100, nodes.y+75, 16, 16) .attr({"cursor": "pointer", "title": nodes.menu.name}) -- cgit v1.2.3 From 40c3a1d748cb5cd27518e6881a83f7d38eb47380 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Tue, 23 Oct 2012 03:03:03 +0200 Subject: [FIX] process model link to doc.openerp.com bzr revid: al@openerp.com-20121023010303-u0opl3aluqtogqeb --- addons/process/static/src/js/process.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'addons/process/static/src/js/process.js') diff --git a/addons/process/static/src/js/process.js b/addons/process/static/src/js/process.js index c2ec4486507..2405f6d2aa5 100644 --- a/addons/process/static/src/js/process.js +++ b/addons/process/static/src/js/process.js @@ -176,11 +176,10 @@ instance.web.ViewManager.include({ var notes = new_notes.substring(0,60) +'..'; } r.text(nodes.x+60, nodes.y+30, (notes || new_notes)).attr({"title":nodes.notes,"cursor": "default"}); - var DOC_URL = "http://doc.openerp.com/v6.1/index.php"; r['image']('/web/static/src/img/icons/gtk-info.png', nodes.x, nodes.y+75, 16, 16) .attr({"cursor": "pointer", "title": "Help"}) .click(function() { - window.open(nodes.url || DOC_URL + "?model=" + nodes.model); + window.open(nodes.url || "http://doc.openerp.com/v6.1/index.php?model=" + nodes.model); }); if(nodes.menu) { r['image']('/web/static/src/img/icons/gtk-jump-to.png', nodes.x+100, nodes.y+75, 16, 16) -- cgit v1.2.3 From a2715888c16f519d531a5aa77f0034791e330758 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 31 Oct 2012 11:31:48 +0100 Subject: [IMP] jQuery deferred API changes refactoring. Changed 'then's in 'done'/'fail' and 'pipe's in 'then' bzr revid: fme@openerp.com-20121031103148-r1slfpl2kcnajjd3 --- addons/process/static/src/js/process.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'addons/process/static/src/js/process.js') diff --git a/addons/process/static/src/js/process.js b/addons/process/static/src/js/process.js index 2405f6d2aa5..73ca4396ce6 100644 --- a/addons/process/static/src/js/process.js +++ b/addons/process/static/src/js/process.js @@ -20,7 +20,7 @@ instance.web.ViewManager.include({ if(this.active_view == 'form') { this.record_id = this.views[this.active_view].controller.datarecord.id; } - this.process_get_object().pipe(function(process) { + this.process_get_object().then(function(process) { if(process && process.length) { if(process.length > 1) { self.process_selection = process; @@ -30,7 +30,7 @@ instance.web.ViewManager.include({ } } return $.Deferred().resolve(); - }).pipe(function() { + }).then(function() { var def = $.Deferred(); if(self.process_id) { $.when(self.process_graph_get()).done(function(res) { @@ -221,12 +221,12 @@ instance.web.ViewManager.include({ var dataset = new instance.web.DataSet(this, 'ir.values', this.session.user_context); var action_manager = new instance.web.ActionManager(self); dataset.call('get', - ['action', 'tree_but_open',[['ir.ui.menu', id]], dataset.context]).then(function(res) { + ['action', 'tree_but_open',[['ir.ui.menu', id]], dataset.context]).done(function(res) { var action = res[0][res[0].length - 1]; self.rpc("/web/action/load", { action_id: action.id, context: dataset.context - }).then(function(result) { + }).done(function(result) { action_manager.replace(self.$el); action_manager.do_action(result.result); }) -- cgit v1.2.3