var self = this;
this.process_check();
this.process_help = this.action ? this.action.help : 'Help: Not Defined';
+ this.process_model = this.model;
},
process_check: function() {
var self = this,
grandparent = this.widget_parent && this.widget_parent.widget_parent,
view = this.views[this.views_src[0].view_type],
$process_view = this.$element.find('.oe-process-view');
-
- this.process_model = this.model;
+
if (!(grandparent instanceof openerp.web.WebClient) ||
!(view.view_type === this.views_src[0].view_type
&& view.view_id === this.views_src[0].view_id)) {
$process_view.hide();
return;
}
+
$process_view.click(function() {
- $.when(self.load_process()).then(self.get_process_id());
+ self.initialize_process_view();
});
+
},
-
- process_subflow : function() {
+
+ initialize_process_view: function() {
var self = this;
- new openerp.web.DataSetSearch(this,
- "ir.actions.act_window",this.session.context,[])
- .read_slice(['help'],
- { domain:
- [
- ['res_model','=',this.process_action_model],
- ['name','ilike', this.process_action_name]
- ]
- },
- function(res) {
- if (res.length) {
- self.process_help = res[0]['help'] || 'Help: Not Defined';
+ var is_ready = $.Deferred();
+ $.when(this.fields_get(), this.help(), this.get_process_object()).pipe(function(fields, help, process) {
+ self.process_fields = fields;
+ self.process_help = help;
+ if(process && process.length) {
+ if(process.length > 1) {
+ self.process_selection = process;
+ } else {
+ self.process_id = process[0][0];
}
- $.when(self.load_process()).then(self.render_process_view());
-
- });
- },
-
- load_process: function() {
- var self = this;
- this.$element.html(QWeb.render("ProcessView", this));
- this.$element.find('#edit_process').click(function() {
- self.edit_process_view();
+ }
+ return $.Deferred().resolve();
+ }).done(function() {
+ self.render_process_view();
+ }).done(function() {
+ if(self.process_id) {
+ self.graph_get().done(function(res) {
+ self.draw_process_graph(res);
+ });
+ }
});
+
},
- edit_process_view: function() {
+ graph_get: function() {
var self = this;
- var action_manager = new openerp.web.ActionManager(this);
- var dialog = new openerp.web.Dialog(this, {
- width: 800,
- height: 600,
- buttons : {
- Cancel : function() {
- $(this).dialog('destroy');
- },
- Save : function() {
- var form_view = action_manager.inner_viewmanager.views.form.controller;
-
- form_view.do_save(function() {
- self.process_renderer([[self.process_id]]);
- });
- $(this).dialog('destroy');
- }
- }
- }).start().open();
+ var def = $.Deferred();
+ this.process_id = parseInt(this.process_id, 10);
- action_manager.appendTo(dialog.$element);
- action_manager.do_action({
- res_model : 'process.process',
- res_id: self.process_id,
- views : [[false, 'form']],
- type : 'ir.actions.act_window',
- auto_search : false,
- flags : {
- search_view: false,
- sidebar : false,
- views_switcher : false,
- action_buttons : false,
- pager: false
- }
+ this.process_dataset
+ .call("graph_get",[this.process_id, this.model, false, [80,80,150,100]])
+ .done(function(res) {
+ self.process_dataset
+ .call("search_by_model",[self.model,self.session.context])
+ .done(
+ function(r) {
+ res['related'] = r;
+ def.resolve(res);
+ });
+
});
+ return def.promise();
},
-
- get_process_id: function() {
- var self = this;
- this.process_dataset = new openerp.web.DataSetStatic(this, "process.process", this.session.context);
- this.process_dataset.call("search_by_model",
- [self.process_model,self.session.context],
- function(res) {self.process_renderer(res)});
+
+ fields_get : function() {
+ var self = this,
+ def = $.Deferred(),
+ dataset = new openerp.web.DataSetStatic(this, this.model, this.session.context);
+
+ dataset
+ .call('fields_get',[])
+ .done(function(fields) {
+ def.resolve(fields);
+ }).fail(def.reject);
+ return def.promise();
},
- process_renderer: function(res) {
- var self = this;
- if(!res.length) {
- this.process_model = false;
- this.get_process_id();
+
+ help : function() {
+ var self = this,
+ def = $.Deferred();
+ if(!this.subflow_model) {
+ def.resolve(this.action ? this.action.help : 'Help: Not Defined');
} else {
- if(res.length > 1) {
- this.selection = res;
- $.when(this.load_process()).then(function() {
- var $parent = self.widget_parent.$element;
- $parent.find('#change_process').click(function() {
- self.selection = false;
- self.process_id = $parent.find('#select_process').val();
- $.when(self.load_process()).then(self.render_process_view());
- });
+ var dataset = new openerp.web.DataSetSearch(this, "ir.actions.act_window", this.session.context, []);
+ dataset
+ .read_slice(['help'],
+ {
+ domain: [
+ ['res_model', '=', this.subflow_model],
+ ['name', 'ilike', this.subflow_name]
+ ]
+ }
+ ).done(function(res) {
+ def.resolve(res && res.records.length ? res.records[0].help : 'Help: Not Defined');
});
- } else {
- this.process_id = res[0][0];
- $.when(this.load_process()).then(this.render_process_view());
- }
+
}
+ return def.promise();
},
-
- render_process_view: function() {
- var self = this;
- this.process_id = parseInt(this.process_id, 10);
- this.process_dataset.call("graph_get",
- [self.process_id, self.model, false, [80,80,150,100]],
- function(res) {
- res['title'] = res.resource ? res.resource : res.name;
- self.process_dataset.call("search_by_model",
- [self.model,self.session.context],
- function(r) {
- res['related'] = r;
- });
- self.draw_process_graph(res);
- }
- );
+
+ get_process_object : function() {
+ var self = this,
+ def = $.Deferred();
+ if(this.process_id)
+ return def.resolve().promise();
+ this.process_dataset = new openerp.web.DataSetStatic(this, "process.process", this.session.context);
+ this.process_dataset
+ .call("search_by_model", [self.process_model,self.session.context])
+ .done(function(res) {
+ if (!res.length) {
+ self.process_model = false;
+ self.get_process_object().done(def.resolve);
+ }
+ else {
+ def.resolve(res);
+ }
+ })
+ .fail(def.reject);
+ return def.promise();
},
- draw_process_graph: function(res) {
+
+ render_process_view : function() {
+ this.$element.html(QWeb.render("ProcessView", this));
var self = this;
- var process_graph = new Graph();
-
+ this.$element.find('#edit_process').click(function() {
+ self.edit_process_view();
+ });
+
+ var $parent = this.widget_parent.$element;
+ $parent.find('#change_process').click(function() {
+ self.process_selection = false;
+ self.process_id = $parent.find('#select_process').val();
+ self.initialize_process_view();
+ });
+
+
+ this.$element.find(".toggle_fields").click(function() {
+ $(this).children().toggle();
+ self.$element.find('.process_fields').toggle();
+
+ })
+ },
+
+ draw_process_graph : function(res) {
+ var self = this,
+ process_graph = new Graph();
+
var process_renderer = function(r, n) {
var process_node,
process_node_text,
var bg = "node",
clip_rect = "".concat(n.node.x,",",n.node.y,",150,100");
-// text_position_x = n.node.x + (n.node.y/2)
//Image part
bg = n.node.kind == "subflow" ? "node-subflow" : "node";
r['image'](img_src, n.node.x, n.node.y,150, 100)
.attr({"clip-rect": clip_rect})
- .mousedown(function(){
+ .mousedown(function() {
return false;
});
if(n.node.subflow) {
process_node_text.click(function() {
self.process_id = n.node.subflow[0];
- self.process_action_model = n.node.model;
- self.process_action_name = n.node.name;
- self.process_subflow();
+ self.subflow_model = n.node.model;
+ self.subflow_name = n.node.name;
+ self.initialize_process_view();
});
}
if(n.node.notes.length > 25) {
var new_notes= temp_str = '';
var from = to = 0;
- while (1){
+ while (1) {
from = 25;
temp_str = n.node.notes.substr(to ,25);
if (temp_str.lastIndexOf(" ") < 25 && temp_str.length >= 25) {
}
process_set = r.set().push(process_node);
- process_set.mousedown(function() {
+ process_set.mousedown(function() {
return false;
});
return process_set;
};
-
+
_.each(res['nodes'],function(node, node_id) {
node['res_model'] = self.model,
node['res_id'] = false,
var layouter = new Graph.Layout.Ordered(process_graph);
var render_process_graph = new Graph.Renderer.Raphael('process_canvas', process_graph, $('#process_canvas').width(), $('#process_canvas').height());
},
-
+
jump_to_view: function(model, id) {
var self = this;
var dataset = new openerp.web.DataSetStatic(this, 'ir.values', this.session.context);
action_manager.do_action(result.result);
});
});
- }
+ },
+
+ edit_process_view: function() {
+ var self = this;
+ var action_manager = new openerp.web.ActionManager(this);
+ var dialog = new openerp.web.Dialog(this, {
+ width: 800,
+ height: 600,
+ buttons : {
+ Cancel : function() {
+ $(this).dialog('destroy');
+ },
+ Save : function() {
+ var form_view = action_manager.inner_viewmanager.views.form.controller;
+
+ form_view.do_save(function() {
+ self.initialize_process_view();
+ });
+ $(this).dialog('destroy');
+ }
+ }
+ }).start().open();
+
+ action_manager.appendTo(dialog.$element);
+ action_manager.do_action({
+ res_model : 'process.process',
+ res_id: self.process_id,
+ views : [[false, 'form']],
+ type : 'ir.actions.act_window',
+ auto_search : false,
+ flags : {
+ search_view: false,
+ sidebar : false,
+ views_switcher : false,
+ action_buttons : false,
+ pager: false
+ }
+ });
+ },
});
};