[IMP] show Fields.Changed Mechanism.
bzr revid: vda@tinyerp.com-20110929110145-z5fgyg84acx3nuyl
This commit is contained in:
@@ -55,4 +55,8 @@ a.cta-a strong {
|
||||
padding:5px 10px;
|
||||
min-height:56px;
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
td.process_fields,button.toggle_fields span:last-child {
|
||||
display: none;
|
||||
}
|
||||
@@ -7,141 +7,156 @@ openerp.web_process = function (openerp) {
|
||||
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());
|
||||
|
||||
}
|
||||
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);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
load_process: function() {
|
||||
|
||||
graph_get: function() {
|
||||
var self = this;
|
||||
var def = $.Deferred();
|
||||
this.process_id = parseInt(this.process_id, 10);
|
||||
|
||||
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();
|
||||
},
|
||||
|
||||
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();
|
||||
},
|
||||
|
||||
help : function() {
|
||||
var self = this,
|
||||
def = $.Deferred();
|
||||
if(!this.subflow_model) {
|
||||
def.resolve(this.action ? this.action.help : 'Help: Not Defined');
|
||||
} else {
|
||||
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');
|
||||
});
|
||||
|
||||
}
|
||||
return def.promise();
|
||||
},
|
||||
|
||||
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();
|
||||
},
|
||||
|
||||
render_process_view : function() {
|
||||
this.$element.html(QWeb.render("ProcessView", this));
|
||||
var self = this;
|
||||
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();
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
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.process_renderer([[self.process_id]]);
|
||||
});
|
||||
$(this).dialog('destroy');
|
||||
}
|
||||
}
|
||||
}).start().open();
|
||||
draw_process_graph : function(res) {
|
||||
var self = this,
|
||||
process_graph = new Graph();
|
||||
|
||||
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
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
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)});
|
||||
},
|
||||
process_renderer: function(res) {
|
||||
var self = this;
|
||||
if(!res.length) {
|
||||
this.process_model = false;
|
||||
this.get_process_id();
|
||||
} 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());
|
||||
});
|
||||
});
|
||||
} else {
|
||||
this.process_id = res[0][0];
|
||||
$.when(this.load_process()).then(this.render_process_view());
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
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);
|
||||
}
|
||||
);
|
||||
},
|
||||
draw_process_graph: function(res) {
|
||||
var self = this;
|
||||
var process_graph = new Graph();
|
||||
|
||||
var process_renderer = function(r, n) {
|
||||
var process_node,
|
||||
process_node_text,
|
||||
@@ -154,7 +169,6 @@ openerp.web_process = function (openerp) {
|
||||
|
||||
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";
|
||||
@@ -163,7 +177,7 @@ openerp.web_process = function (openerp) {
|
||||
|
||||
r['image'](img_src, n.node.x, n.node.y,150, 100)
|
||||
.attr({"clip-rect": clip_rect})
|
||||
.mousedown(function(){
|
||||
.mousedown(function() {
|
||||
return false;
|
||||
});
|
||||
|
||||
@@ -176,9 +190,9 @@ openerp.web_process = function (openerp) {
|
||||
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();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -187,7 +201,7 @@ openerp.web_process = function (openerp) {
|
||||
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) {
|
||||
@@ -214,12 +228,12 @@ openerp.web_process = function (openerp) {
|
||||
}
|
||||
|
||||
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,
|
||||
@@ -238,7 +252,7 @@ openerp.web_process = function (openerp) {
|
||||
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);
|
||||
@@ -256,7 +270,45 @@ openerp.web_process = function (openerp) {
|
||||
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
|
||||
}
|
||||
});
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -44,14 +44,14 @@
|
||||
<p><t t-esc="process_help"/></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr t-if="selection">
|
||||
<tr t-if="process_selection">
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend>
|
||||
Select Process
|
||||
</legend>
|
||||
<select id="select_process">
|
||||
<t t-foreach="selection" t-as="prc">
|
||||
<t t-foreach="process_selection" t-as="prc">
|
||||
<option t-att-value="prc[0]">
|
||||
<t t-esc="prc[1]"/>
|
||||
</option>
|
||||
@@ -69,7 +69,37 @@
|
||||
<tr t-if="process_id">
|
||||
<td>
|
||||
<button id="edit_process">Edit Process</button>
|
||||
|
||||
<button class="toggle_fields">
|
||||
<span>Show Fields</span>
|
||||
<span>Hide Fields</span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr t-if="process_id">
|
||||
<td class="process_fields">
|
||||
<table cellspacing="0" cellpadding="0" width="100%">
|
||||
<t t-foreach="process_fields" t-as="field">
|
||||
<tr>
|
||||
<td>
|
||||
<t t-esc="field"/>
|
||||
</td>
|
||||
<td>
|
||||
<table cellspacing="0" cellpadding="0" width="100%">
|
||||
<t t-foreach="process_fields[field]" t-as="fld">
|
||||
<tr>
|
||||
<td>
|
||||
<t t-esc="fld"/>:
|
||||
</td>
|
||||
<td>
|
||||
<t t-esc="process_fields[field][fld]"/>
|
||||
</td>
|
||||
</tr>
|
||||
</t>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</t>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
Reference in New Issue
Block a user