summaryrefslogtreecommitdiff
path: root/addons/base/static/src/js
diff options
context:
space:
mode:
authorsma (Tiny) <sma@tinyerp.com>2011-05-05 12:31:46 +0530
committersma (Tiny) <sma@tinyerp.com>2011-05-05 12:31:46 +0530
commit8e7459c3b501cb2efbf046a2f02a8868be1bfec1 (patch)
tree12daceae6fe37b450bbc4faba6b035a6b15fdf04 /addons/base/static/src/js
parent917634ed8de0549fb194f6da892b7df62d03f32f (diff)
[IMP] Create initiall 'create', 'edit', 'close' from m2o auto creation.
bzr revid: sma@tinyerp.com-20110505070146-2be5r6tj7tavv3hl
Diffstat (limited to 'addons/base/static/src/js')
-rw-r--r--addons/base/static/src/js/data.js4
-rw-r--r--addons/base/static/src/js/form.js10
-rw-r--r--addons/base/static/src/js/m2o.js92
3 files changed, 93 insertions, 13 deletions
diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js
index b9dc86d1f00..107ba65e468 100644
--- a/addons/base/static/src/js/data.js
+++ b/addons/base/static/src/js/data.js
@@ -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', {
diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js
index 3a2db9e4e53..bf3c806140a 100644
--- a/addons/base/static/src/js/form.js
+++ b/addons/base/static/src/js/form.js
@@ -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) {
diff --git a/addons/base/static/src/js/m2o.js b/addons/base/static/src/js/m2o.js
index d12ddf05ad5..f59e76471b5 100644
--- a/addons/base/static/src/js/m2o.js
+++ b/addons/base/static/src/js/m2o.js
@@ -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();
+ },
})
-} \ No newline at end of file
+}