[IMP] Create initiall 'create', 'edit', 'close' from m2o auto creation.
bzr revid: sma@tinyerp.com-20110505070146-2be5r6tj7tavv3hl
This commit is contained in:
@@ -836,5 +836,32 @@ body.openerp {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.create_m2o {
|
||||
background-color: #4C4C4C;
|
||||
height: 1.5em;
|
||||
left: 0;
|
||||
overflow: hidden;
|
||||
padding-bottom: 0.05em;
|
||||
padding-top: 0.05em;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.a_m2o {
|
||||
background-color: white;
|
||||
border: 0.05em solid gray;
|
||||
cursor: pointer;
|
||||
font-family: arial;
|
||||
font-size: 0.8em;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
margin: 10px;
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-top: 0.1em;
|
||||
text-decoration: none;
|
||||
width: 4em;
|
||||
}
|
||||
/* ------------- End autocomplete ------- */
|
||||
|
||||
|
||||
@@ -89,12 +89,12 @@ openerp.base.DataSet = openerp.base.Controller.extend( /** @lends openerp.base.
|
||||
context: this.context
|
||||
}, callback);
|
||||
},
|
||||
create: function(data, callback) {
|
||||
create: function(data, callback, error_callback) {
|
||||
return this.rpc('/base/dataset/create', {
|
||||
model: this.model,
|
||||
data: data,
|
||||
context: this.context
|
||||
}, callback);
|
||||
}, callback, error_callback);
|
||||
},
|
||||
write: function (id, data, callback) {
|
||||
return this.rpc('/base/dataset/save', {
|
||||
|
||||
@@ -817,6 +817,12 @@ openerp.base.form.FieldMany2OneDatasSet = openerp.base.DataSetStatic.extend({
|
||||
},
|
||||
});
|
||||
|
||||
openerp.base.form.FieldMany2OneViewManager = openerp.base.ViewManager.extend({
|
||||
init: function(session, element_id, dataset, views) {
|
||||
this._super(session, element_id, dataset, views);
|
||||
}
|
||||
});
|
||||
|
||||
openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
|
||||
init: function(view, node) {
|
||||
this._super(view, node);
|
||||
@@ -826,7 +832,9 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
|
||||
start: function() {
|
||||
this.$element = $('#' + this.element_id);
|
||||
this.dataset = new openerp.base.form.FieldMany2OneDatasSet(this.session, this.field.relation);
|
||||
new openerp.base.m2o(this.$element, this.field.relation, this.dataset, this.session)
|
||||
var views = [ [false,"list"], [false,"form"] ];
|
||||
this.viewmanager = new openerp.base.form.FieldMany2OneViewManager(this.view.session, this.element_id, this.dataset, views);
|
||||
new openerp.base.m2o(this.viewmanager, this.$element, this.field.relation, this.dataset, this.session)
|
||||
this.$element.find('input').change(this.on_ui_change);
|
||||
},
|
||||
set_value: function(value) {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
openerp.base.m2o = function(openerp) {
|
||||
|
||||
openerp.base.m2o = openerp.base.Controller.extend({
|
||||
init: function(element_id, model, dataset, session) {
|
||||
init: function(view_manager, element_id, model, dataset, session) {
|
||||
this._super(element_id, model, dataset, session);
|
||||
|
||||
this.view_manager = view_manager
|
||||
this.session = session;
|
||||
this.element = element_id.find('input');
|
||||
this.relation = model;
|
||||
@@ -34,7 +35,7 @@ openerp.base.m2o = openerp.base.Controller.extend({
|
||||
if(!this.relation) {
|
||||
return;
|
||||
}
|
||||
var self = this
|
||||
var self = this;
|
||||
this.dataset.name_search(this.element.val(), function(response) {
|
||||
var res = response.result[0];
|
||||
self.element.val(res[1]);
|
||||
@@ -133,8 +134,6 @@ openerp.base.m2o = openerp.base.Controller.extend({
|
||||
$resultsHolder.empty().append($fancyTable);
|
||||
this.updateSelectedResult();
|
||||
$resultsHolder.show();
|
||||
} else {
|
||||
$resultsHolder.hide();
|
||||
}
|
||||
return true;
|
||||
},
|
||||
@@ -199,9 +198,11 @@ openerp.base.m2o = openerp.base.Controller.extend({
|
||||
event_list.start();
|
||||
event_list.do_reload();
|
||||
}
|
||||
if ($selectedRow.find('td').attr('id') == 'create') {
|
||||
|
||||
if ($selectedRow.find('td').attr('id') == 'create') {
|
||||
return this.PseudoDialogue();
|
||||
}
|
||||
|
||||
this.setCompletionText($selectedRow, true);
|
||||
this.clearResults();
|
||||
break;
|
||||
@@ -270,10 +271,6 @@ openerp.base.m2o = openerp.base.Controller.extend({
|
||||
|
||||
setCompletionText: function ($selectedRow, flag) {
|
||||
var $cell = $selectedRow.find('td');
|
||||
if ($cell.attr('id')) {
|
||||
this.element.val('');
|
||||
return;
|
||||
}
|
||||
var autoCompleteText = $cell.find('span').text();
|
||||
autoCompleteText = flag ? autoCompleteText : this.lastSearch + '[' + autoCompleteText.substring(this.lastSearch.length) + ']'
|
||||
this.element.val(autoCompleteText);
|
||||
@@ -289,5 +286,80 @@ openerp.base.m2o = openerp.base.Controller.extend({
|
||||
this.numResultRows = 0;
|
||||
this.lastSearch = null;
|
||||
},
|
||||
|
||||
PseudoDialogue: function(){
|
||||
var parent_element = jQuery("#autoCompleteResults_" + this.name);
|
||||
var $DiaTable = jQuery('<table>', {
|
||||
"name": "create_m2o" + this.name,
|
||||
"id": "create_m2o" + this.name});
|
||||
var $tbl = jQuery('<tbody>').appendTo($DiaTable);
|
||||
var onClick = jQuery.proxy(this, 'getOnclick');
|
||||
|
||||
jQuery('<tr>').append(
|
||||
jQuery('<td>').append(
|
||||
jQuery('<span>', {
|
||||
'style':'text-transform:none; white-space: nowrap',
|
||||
'title': 'Name',
|
||||
'text': 'Name :'}).after(
|
||||
jQuery('<input>', {
|
||||
'id': 'm2o_' + this.name,
|
||||
'type': 'text',
|
||||
'val':this.element.val()})))).after(
|
||||
jQuery('<tr>', {'class':'create_m2o'}).append(
|
||||
jQuery('<td>').append(
|
||||
jQuery('<a>',{
|
||||
'id':'create',
|
||||
'text':'Create',
|
||||
'href':'javascript: void(0)',
|
||||
'click': onClick,
|
||||
'class':'a_m2o'}, 'EDIT')).append(
|
||||
jQuery('<a>',{
|
||||
'id':'edit',
|
||||
'href':'javascript: void(0)',
|
||||
'click':onClick,
|
||||
'text':'Edit',
|
||||
'class':'a_m2o'})).append(
|
||||
jQuery('<a>',{
|
||||
'id':'close',
|
||||
'text':'Close',
|
||||
'href':'javascript: void(0)',
|
||||
'click':onClick,
|
||||
'class':'a_m2o'})))).appendTo($tbl);
|
||||
|
||||
parent_element.empty().append($DiaTable);
|
||||
parent_element.show();
|
||||
},
|
||||
getOnclick : function(evt) {
|
||||
if(evt.currentTarget.id == 'create') {
|
||||
var self = this
|
||||
this.dataset.create({'name': this.element.val()},
|
||||
function(r){}, function(r){self.on_edit(r)});
|
||||
}
|
||||
|
||||
if(evt.currentTarget.id == 'edit') {
|
||||
this.on_edit();
|
||||
}
|
||||
|
||||
var parent_element = jQuery("#autoCompleteResults_" + this.name);
|
||||
parent_element.empty();
|
||||
parent_element.hide();
|
||||
},
|
||||
|
||||
on_edit: function(r) {
|
||||
var element_id = _.uniqueId("act_window_dialog");
|
||||
var dialog = jQuery('<div>',
|
||||
{'id': element_id
|
||||
}).dialog({title: 'test',
|
||||
modal: true,
|
||||
minWidth: 800,
|
||||
buttons: {
|
||||
Cancel: function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}
|
||||
});
|
||||
var event_form = new openerp.base.FormView(this.view_manager, this.session, element_id, this.dataset, false);
|
||||
event_form.start();
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user