From 3feaa84beb11eb2b887fddcce6b82ec9df79aafe Mon Sep 17 00:00:00 2001 From: "Kunal Chavda (OpenERP)" Date: Tue, 4 Oct 2011 11:39:03 +0530 Subject: [PATCH 001/114] [IMP]edit node code at initial level modify by using widget. bzr revid: kch@tinyerp.com-20111004060903-0se42632vpjlk24u --- addons/web/static/src/js/view_editor.js | 51 +++++++++++++++++++------ addons/web/static/src/xml/base.xml | 7 ---- 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js index d0cc7d53eb3..7b68cdc3372 100644 --- a/addons/web/static/src/js/view_editor.js +++ b/addons/web/static/src/js/view_editor.js @@ -1,7 +1,6 @@ openerp.web.view_editor = function(openerp) { var _PROPERTIES = { - 'field' : ['name', 'string', 'required', 'readonly', 'select', 'domain', 'context', 'nolabel', 'completion', - 'colspan', 'widget', 'eval', 'ref', 'on_change', 'attrs', 'groups'], + 'field' : ['required', 'readonly'], 'form' : ['string', 'col', 'link'], 'notebook' : ['colspan', 'position', 'groups'], 'page' : ['string', 'states', 'attrs', 'groups'], @@ -31,6 +30,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ this.dataset = dataset; this.model = dataset.model; this.xml_id = 0; + this.property = openerp.web.ViewEditor.property_widget; }, start: function() { @@ -320,6 +320,17 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ case "side-remove": break; case "side-edit": + var tag, fld_name; + var tr = $(this).closest("tr[id^='viewedit-']").find('a').text(); + var tag_fld = tr.split(" "); + if (tag_fld.length > 3){ + tag = tag_fld[1].replace(/[^a-zA-Z 0-9]+/g,''); + fld_name = tag_fld[2].split("=")[1].replace(/[^a-zA-Z _ 0-9]+/g,''); + }else{ + tag = tag_fld[1].replace(/[^a-zA-Z 0-9]+/g,''); + } + var properties = _PROPERTIES[tag]; + self.on_edit_node(this,properties,fld_name); break; case "side-up": while(1){ @@ -406,7 +417,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ tr.show(); }); }, - on_edit_node:function(self,property,fld_name){ + on_edit_node:function(self,properties,fld_name){ var self = this; var result; this.dialog = new openerp.web.Dialog(this,{ @@ -427,17 +438,35 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ dataset.read_slice([],{domain : [['model','=',self.model]]},function (result) { db = new openerp.web.DataSetSearch(self,'ir.model.fields', null, null); db.read_slice([],{domain : [['model_id','=',result[0].id],['name','=',fld_name]]},function (res) { - var data = []; - _.each(property,function(record){ - var dict = {'key':record,'value':res[0][record]}; - data.push(dict); + _.each(properties,function(record){ + var type_widget = new (self.property.get_any(['undefined' , record, 'field'])) (false, false); + console.log("widget_view",type_widget); }); - console.log("check data+++",data); - /*self.dialog.$element.html(QWeb.render('Edit_Node_View',{ - 'res': res - }));*/ }); }); } }); +openerp.web.ViewEditor.FieldBoolean = openerp.web.form.FieldBoolean.extend({ + init: function(view, node) { + //this._super(view, node); + console.log("view++++",view); + console.log("nodoe+++++",node); + this.template = "FieldBoolean"; + }, + start: function() { + var self = this; + this._super.apply(this, arguments); + } +}); +openerp.web.ViewEditor.property_widget = new openerp.web.Registry({ + 'required' : 'openerp.web.ViewEditor.FieldBoolean', + 'readonly' : 'openerp.web.ViewEditor.FieldBoolean', + 'nolabel' : 'openerp.web.ViewEditor.FieldBoolean', + 'completion' : 'openerp.web.ViewEditor.FieldBoolean', + /*'widget' : '', + 'groups' : '', + 'position': '', + 'icon': '', + 'align': '' */ +}); }; \ No newline at end of file diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 957415c8043..04bd475fd1c 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1325,13 +1325,6 @@ - - - - - -
-
Export From 02bbd4bd5c8b39cd3d5c60f49b79ed96f84a3012 Mon Sep 17 00:00:00 2001 From: "Kunal Chavda (OpenERP)" Date: Wed, 5 Oct 2011 17:32:12 +0530 Subject: [PATCH 002/114] [IMP]Render boolean field with static data using widget. bzr revid: kch@tinyerp.com-20111005120212-tj2jhlxwjmtp91z6 --- addons/web/static/src/js/view_editor.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js index 7b68cdc3372..4378ac4a0a9 100644 --- a/addons/web/static/src/js/view_editor.js +++ b/addons/web/static/src/js/view_editor.js @@ -330,7 +330,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ tag = tag_fld[1].replace(/[^a-zA-Z 0-9]+/g,''); } var properties = _PROPERTIES[tag]; - self.on_edit_node(this,properties,fld_name); + self.on_edit_node(properties,fld_name); break; case "side-up": while(1){ @@ -417,7 +417,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ tr.show(); }); }, - on_edit_node:function(self,properties,fld_name){ + on_edit_node:function(properties,fld_name){ var self = this; var result; this.dialog = new openerp.web.Dialog(this,{ @@ -438,9 +438,11 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ dataset.read_slice([],{domain : [['model','=',self.model]]},function (result) { db = new openerp.web.DataSetSearch(self,'ir.model.fields', null, null); db.read_slice([],{domain : [['model_id','=',result[0].id],['name','=',fld_name]]},function (res) { + // res will use for getting value of fields. + var k = {"attrs":{"modifiers":"{'readonly':true}","name":"name"},"children":[],"tag":"field"}; _.each(properties,function(record){ - var type_widget = new (self.property.get_any(['undefined' , record, 'field'])) (false, false); - console.log("widget_view",type_widget); + var type_widget = new (self.property.get_any(['undefined' , record, 'field'])) (self.dialog, k); + $("div[id='"+self.dialog.element_id+"']").append('
'+record+''+type_widget.render()+'
'); }); }); }); @@ -449,8 +451,6 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ openerp.web.ViewEditor.FieldBoolean = openerp.web.form.FieldBoolean.extend({ init: function(view, node) { //this._super(view, node); - console.log("view++++",view); - console.log("nodoe+++++",node); this.template = "FieldBoolean"; }, start: function() { @@ -458,6 +458,7 @@ openerp.web.ViewEditor.FieldBoolean = openerp.web.form.FieldBoolean.extend({ this._super.apply(this, arguments); } }); + openerp.web.ViewEditor.property_widget = new openerp.web.Registry({ 'required' : 'openerp.web.ViewEditor.FieldBoolean', 'readonly' : 'openerp.web.ViewEditor.FieldBoolean', From c5f5637e0992158734adda1782b725e24546dc6e Mon Sep 17 00:00:00 2001 From: "Kunal Chavda (OpenERP)" Date: Thu, 13 Oct 2011 16:30:39 +0530 Subject: [PATCH 003/114] [IMP]trying to setvalue into edit node data. bzr revid: kch@tinyerp.com-20111013110039-i92u5ghg9kjzxwe6 --- addons/web/static/src/js/view_editor.js | 50 ++++++++++++++++++++----- addons/web/static/src/js/view_form.js | 18 ++++----- addons/web/static/src/xml/base.xml | 6 +-- 3 files changed, 52 insertions(+), 22 deletions(-) diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js index 4378ac4a0a9..87744825207 100644 --- a/addons/web/static/src/js/view_editor.js +++ b/addons/web/static/src/js/view_editor.js @@ -1,6 +1,7 @@ openerp.web.view_editor = function(openerp) { var _PROPERTIES = { - 'field' : ['required', 'readonly'], + 'field' : ['name', 'string', 'required', 'readonly', 'domain', 'context', 'nolabel', 'completion', + 'colspan', 'eval', 'ref', 'on_change', 'attrs'], 'form' : ['string', 'col', 'link'], 'notebook' : ['colspan', 'position', 'groups'], 'page' : ['string', 'states', 'attrs', 'groups'], @@ -22,7 +23,6 @@ var _PROPERTIES = { }; var QWeb = openerp.web.qweb; openerp.web.ViewEditor = openerp.web.Widget.extend({ - init: function(parent, element_id, dataset, view, options) { this._super(parent); this.element_id = element_id @@ -107,7 +107,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ render_name+= ">"; xml_tag+= ">"; }); - obj.main_xml = xml_tag; + obj.main_xml = xml; obj.name = render_name; return obj; }, @@ -287,7 +287,6 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ this.dialog.$element.html(QWeb.render('view_editor', { 'data': one_object['main_object'], })); - $("tr[id^='viewedit-']").click(function() { $("tr[id^='viewedit-']").removeClass('ui-selected'); $(this).addClass('ui-selected'); @@ -439,10 +438,18 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ db = new openerp.web.DataSetSearch(self,'ir.model.fields', null, null); db.read_slice([],{domain : [['model_id','=',result[0].id],['name','=',fld_name]]},function (res) { // res will use for getting value of fields. + var widget = ['readonly','required','nolable','completion','groups','position','icon','align']; var k = {"attrs":{"modifiers":"{'readonly':true}","name":"name"},"children":[],"tag":"field"}; _.each(properties,function(record){ - var type_widget = new (self.property.get_any(['undefined' , record, 'field'])) (self.dialog, k); - $("div[id='"+self.dialog.element_id+"']").append('
'+record+''+type_widget.render()+'
'); + if (_.include(widget,record)){ + var type_widget = new (self.property.get_any(['undefined' , record, 'field'])) (self.dialog, k); + $("div[id='"+self.dialog.element_id+"']").append('
'+record+''+type_widget.render()+'
'); + type_widget.set_value(res[0][record]); + }else{ + var type_widget = new openerp.web.ViewEditor.FieldChar (self.dialog, k); + $("div[id='"+self.dialog.element_id+"']").append('
'+record+''+type_widget.render()+'
'); + type_widget.set_value(res[0][record]); + } }); }); }); @@ -450,12 +457,36 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ }); openerp.web.ViewEditor.FieldBoolean = openerp.web.form.FieldBoolean.extend({ init: function(view, node) { - //this._super(view, node); - this.template = "FieldBoolean"; + this.$element = view.$element; }, start: function() { var self = this; this._super.apply(this, arguments); + }, + set_value: function(value) { + if (value === false || value === undefined) { + // As in GTK client, floats default to 0 + value = 0; + this.dirty = true; + } + this._super.apply(this, [value]); + } +}); +openerp.web.ViewEditor.FieldChar = openerp.web.form.FieldChar.extend({ + init: function(view, node) { + this.$element = view.$element; + }, + start: function() { + var self = this; + this._super.apply(this, arguments); + }, + set_value: function(value) { + if (value === false || value === undefined) { + // As in GTK client, floats default to 0 + value = 0; + this.dirty = true; + } + this._super.apply(this, [value]); } }); @@ -464,8 +495,7 @@ openerp.web.ViewEditor.property_widget = new openerp.web.Registry({ 'readonly' : 'openerp.web.ViewEditor.FieldBoolean', 'nolabel' : 'openerp.web.ViewEditor.FieldBoolean', 'completion' : 'openerp.web.ViewEditor.FieldBoolean', - /*'widget' : '', - 'groups' : '', + /*'groups' : 'openerp.web.ViewEditor.WidgetFrame', 'position': '', 'icon': '', 'align': '' */ diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 11ebad8d093..e184424fbd6 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -14,7 +14,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# /** * @constructs openerp.web.FormView * @extends openerp.web.View - * + * * @param {openerp.web.Session} session the current openerp session * @param {openerp.web.DataSet} dataset the dataset this view will work with * @param {String} view_id the identifier of the OpenERP view object @@ -1042,7 +1042,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f }, update_dom: function() { this._super.apply(this, arguments); - if (this.field.translate) { + /* if (this.field.translate) { this.$element.find('.oe_field_translate').toggle(!!this.view.datarecord.id); } if (!this.disable_utility_classes) { @@ -1051,7 +1051,7 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f if (this.view.show_invalid) { this.$element.toggleClass('invalid', !this.is_valid()); } - } + }*/ }, on_ui_change: function() { this.dirty = this.view.dirty_for_user = true; @@ -2274,7 +2274,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope }).pipe(function() { self.searchview.do_search(); }); - + }); this.searchview.appendTo($("#" + this.element_id + "_search")); }, @@ -2647,13 +2647,13 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ start: function() { this._super(); this.selected_value = null; - + this.render_list(); }, set_value: function(value) { this._super(value); this.selected_value = value; - + this.render_list(); }, render_list: function() { @@ -2661,7 +2661,7 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ var shown = _.map(((this.node.attrs || {}).statusbar_visible || "").split(","), function(x) { return x.trim(); }); shown = _.select(shown, function(x) { return x.length > 0; }); - + if (shown.length == 0) { this.to_show = this.field.selection; } else { @@ -2669,10 +2669,10 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ return _.indexOf(shown, x[0]) !== -1 || x[0] === self.selected_value; }); } - + var content = openerp.web.qweb.render("FieldStatus.content", {widget: this, _:_}); this.$element.html(content); - + var colors = JSON.parse((this.node.attrs || {}).statusbar_colors || "{}"); var color = colors[this.selected_value]; if (color) { diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 04bd475fd1c..b8da6dcab78 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -773,13 +773,13 @@

- - +
Date: Mon, 24 Oct 2011 18:29:12 +0530 Subject: [PATCH 004/114] [IMP]Improved code for edit node by setting its value. bzr revid: kch@tinyerp.com-20111024125912-m9w3v9bnikurtlxf --- addons/web/static/src/js/view_editor.js | 155 +++++++++++++++--------- addons/web/static/src/xml/base.xml | 21 +++- 2 files changed, 117 insertions(+), 59 deletions(-) diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js index 774d1872c29..b20694b7d01 100644 --- a/addons/web/static/src/js/view_editor.js +++ b/addons/web/static/src/js/view_editor.js @@ -1,7 +1,7 @@ openerp.web.view_editor = function(openerp) { var _PROPERTIES = { 'field' : ['name', 'string', 'required', 'readonly', 'domain', 'context', 'nolabel', 'completion', - 'colspan', 'eval', 'ref', 'on_change', 'attrs'], + 'colspan', 'widget', 'eval', 'ref', 'on_change', 'attrs'], 'form' : ['string', 'col', 'link'], 'notebook' : ['colspan', 'position', 'groups'], 'page' : ['string', 'states', 'attrs', 'groups'], @@ -28,7 +28,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ this.element_id = element_id this.parent = parent this.dataset = dataset; - this.model = dataset.model; + this.model = this.dataset.model; this.xml_id = 0; this.property = openerp.web.ViewEditor.property_widget; }, @@ -331,9 +331,10 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ fld_name = tag_fld[2].split("=")[1].replace(/[^a-zA-Z _ 0-9]+/g,''); }else{ tag = tag_fld[1].replace(/[^a-zA-Z 0-9]+/g,''); + fld_name= tag; } var properties = _PROPERTIES[tag]; - self.on_edit_node(properties,fld_name); + self.on_edit_node(properties,fld_name,id_tr); break; case "side-up": while (1) { @@ -398,6 +399,19 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ } }); }, + get_view_object: function(view_xml_id, one_object,result){ + var self = this; + if(result.length==0){ + var check = _.detect(one_object , function(obj){ + return view_xml_id==obj.id; + }); + if(check){result.push(check);}; + _.each(one_object, function(obj){ + self.get_view_object(view_xml_id, obj.child_id, result); + }); + } + return result; + }, on_expand: function(expand_img){ var level = parseInt($(expand_img).closest("tr[id^='viewedit-']").attr('level')); var cur_tr = $(expand_img).closest("tr[id^='viewedit-']"); @@ -421,14 +435,14 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ tr.show(); }); }, - on_edit_node:function(properties,fld_name){ + on_edit_node:function(properties,fld_name,id_tr){ var self = this; var result; - this.dialog = new openerp.web.Dialog(this,{ + this.edit_node_dialog = new openerp.web.Dialog(this,{ modal: true, title: 'Properties', width: 650, - height: 150, + height: 200, buttons: { "Update": function(){ }, @@ -437,72 +451,103 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ } } }); - this.dialog.start().open(); + this.edit_node_dialog.start().open(); + var widget = ['readonly','required','nolabel','completion','widget','groups','position','icon','align','special','type','target']; + var arch_val = self.get_view_object(id_tr,one_object,[]); + self.edit_node_dialog.$element.append('
'); dataset = new openerp.web.DataSetSearch(this,'ir.model', null, null); - dataset.read_slice([],{domain : [['model','=',self.model]]},function (result) { - db = new openerp.web.DataSetSearch(self,'ir.model.fields', null, null); - db.read_slice([],{domain : [['model_id','=',result[0].id],['name','=',fld_name]]},function (res) { - // res will use for getting value of fields. - var widget = ['readonly','required','nolable','completion','groups','position','icon','align']; - var k = {"attrs":{"modifiers":"{'readonly':true}","name":"name"},"children":[],"tag":"field"}; - _.each(properties,function(record){ - if (_.include(widget,record)){ - var type_widget = new (self.property.get_any(['undefined' , record, 'field'])) (self.dialog, k); - $("div[id='"+self.dialog.element_id+"']").append('
'+record+''+type_widget.render()+'
'); - type_widget.set_value(res[0][record]); - }else{ - var type_widget = new openerp.web.ViewEditor.FieldChar (self.dialog, k); - $("div[id='"+self.dialog.element_id+"']").append('
'+record+''+type_widget.render()+'
'); - type_widget.set_value(res[0][record]); - } - }); + dataset.read_slice([],{domain : [['model','=',self.model]]},function (result) { + db = new openerp.web.DataSetSearch(self,'ir.model.fields', null, null); + db.read_slice([],{domain : [['model_id','=',result[0].id],['name','=',fld_name]]},function (res) { + _.each(properties,function(record){ + var id = record; + var rs = res.length ? res[0][record] : null; + if (_.include(widget,record)){ + var type_widget = new (self.property.get_any(['undefined' , record, arch_val[0]['att_list'][0]])) (self.edit_node_dialog, arch_val); + self.edit_node_dialog.$element.find('table[id=rec_table]').append(''+record+':'+type_widget.render()+''); + type_widget.set_value(id,rs); + }else{ + var type_widget = new openerp.web.ViewEditor.FieldChar (self.edit_node_dialog,arch_val); + self.edit_node_dialog.$element.find('table[id=rec_table]').append(''+record+':'+type_widget.render()+''); + type_widget.set_value(id,rs); + } }); }); + }); } }); -openerp.web.ViewEditor.FieldBoolean = openerp.web.form.FieldBoolean.extend({ +openerp.web.ViewEditor.Field = openerp.web.Class.extend({ init: function(view, node) { this.$element = view.$element; + this.node = node; + }, + render: function () { + return QWeb.render(this.template, {widget: this}); }, start: function() { + this._super(); var self = this; - this._super.apply(this, arguments); - }, - set_value: function(value) { - if (value === false || value === undefined) { - // As in GTK client, floats default to 0 - value = 0; - this.dirty = true; - } - this._super.apply(this, [value]); - } -}); -openerp.web.ViewEditor.FieldChar = openerp.web.form.FieldChar.extend({ - init: function(view, node) { - this.$element = view.$element; - }, - start: function() { - var self = this; - this._super.apply(this, arguments); - }, - set_value: function(value) { - if (value === false || value === undefined) { - // As in GTK client, floats default to 0 - value = 0; - this.dirty = true; - } - this._super.apply(this, [value]); } }); +openerp.web.ViewEditor.FieldBoolean = openerp.web.ViewEditor.Field.extend({ + init: function(view, node) { + this._super(view, node); + this.template = "view_boolean"; + }, + start: function() { + var self = this; + this._super.apply(this, arguments); + }, + set_value: function(id,value) { + var view_val = _.detect(this.node[0]['att_list'],function(res) { + return _.include(res,id); + }); + view_val ? this.$element.find("tr[id="+id+"] input").attr('checked', view_val[1]): this.$element.find("tr[id="+id+"] input").attr('checked', value); + } +}); +openerp.web.ViewEditor.FieldChar = openerp.web.ViewEditor.Field.extend({ + init: function(view, node) { + this._super(view, node); + this.template = "view_char"; + }, + start: function() { + var self = this; + this._super.apply(this, arguments); + }, + set_value: function(id,value) { + var view_val = _.detect(this.node[0]['att_list'],function(res) { + return _.include(res,id); + }); + view_val ? this.$element.find("tr[id="+id+"] input").val(view_val[1]): this.$element.find("tr[id="+id+"] input").val(value); + } +}); +openerp.web.ViewEditor.FieldSelect = openerp.web.ViewEditor.Field.extend({ + init: function(view, node) { + this._super(view, node); + this.node = node; + this.template = "view_selection"; + }, + start: function() { + var self = this; + this._super.apply(this, arguments); + }, + set_value: function(id,value) { + //ToDo + } +}); openerp.web.ViewEditor.property_widget = new openerp.web.Registry({ 'required' : 'openerp.web.ViewEditor.FieldBoolean', 'readonly' : 'openerp.web.ViewEditor.FieldBoolean', 'nolabel' : 'openerp.web.ViewEditor.FieldBoolean', 'completion' : 'openerp.web.ViewEditor.FieldBoolean', - /*'groups' : 'openerp.web.ViewEditor.WidgetFrame', - 'position': '', - 'icon': '', - 'align': '' */ + 'widget' : 'openerp.web.ViewEditor.FieldSelect', + 'groups' : 'openerp.web.ViewEditor.FieldSelect', + 'position': 'openerp.web.ViewEditor.FieldSelect', + 'icon': 'openerp.web.ViewEditor.FieldSelect', + 'align': 'openerp.web.ViewEditor.FieldSelect', + 'special': 'openerp.web.ViewEditor.FieldSelect', + 'type': 'openerp.web.ViewEditor.FieldSelect', + 'target': 'openerp.web.ViewEditor.FieldSelect' }); }; \ No newline at end of file diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index cc3a0af8341..cf74e14ebfc 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -778,13 +778,13 @@

- - +
- + + + + + + + + + + + Export From b14b4c956cf2ac0d39a8b87f5967303251bbc5a3 Mon Sep 17 00:00:00 2001 From: "Kunal Chavda (OpenERP)" Date: Tue, 25 Oct 2011 18:43:12 +0530 Subject: [PATCH 005/114] [IMP]Improved code for getting value of selection box x in edit node. bzr revid: kch@tinyerp.com-20111025131312-jgkdm51vblkvag9s --- addons/web/static/src/js/view_editor.js | 177 ++++++++++++++++++++++-- addons/web/static/src/xml/base.xml | 1 - 2 files changed, 168 insertions(+), 10 deletions(-) diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js index b20694b7d01..89afa432c12 100644 --- a/addons/web/static/src/js/view_editor.js +++ b/addons/web/static/src/js/view_editor.js @@ -1,7 +1,7 @@ openerp.web.view_editor = function(openerp) { var _PROPERTIES = { 'field' : ['name', 'string', 'required', 'readonly', 'domain', 'context', 'nolabel', 'completion', - 'colspan', 'widget', 'eval', 'ref', 'on_change', 'attrs'], + 'colspan', 'widget', 'eval', 'ref', 'on_change', 'groups', 'attrs'], 'form' : ['string', 'col', 'link'], 'notebook' : ['colspan', 'position', 'groups'], 'page' : ['string', 'states', 'attrs', 'groups'], @@ -455,6 +455,8 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ var widget = ['readonly','required','nolabel','completion','widget','groups','position','icon','align','special','type','target']; var arch_val = self.get_view_object(id_tr,one_object,[]); self.edit_node_dialog.$element.append('
'); + + var groups_values = self.on_groups(); dataset = new openerp.web.DataSetSearch(this,'ir.model', null, null); dataset.read_slice([],{domain : [['model','=',self.model]]},function (result) { db = new openerp.web.DataSetSearch(self,'ir.model.fields', null, null); @@ -465,7 +467,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ if (_.include(widget,record)){ var type_widget = new (self.property.get_any(['undefined' , record, arch_val[0]['att_list'][0]])) (self.edit_node_dialog, arch_val); self.edit_node_dialog.$element.find('table[id=rec_table]').append(''+record+':'+type_widget.render()+''); - type_widget.set_value(id,rs); + (record=='groups')?type_widget.set_value(id,groups_values):type_widget.set_value(id,rs); }else{ var type_widget = new openerp.web.ViewEditor.FieldChar (self.edit_node_dialog,arch_val); self.edit_node_dialog.$element.find('table[id=rec_table]').append(''+record+':'+type_widget.render()+''); @@ -474,10 +476,33 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ }); }); }); + }, + //for getting groups + on_groups: function(){ + var self = this; + var group_ids = []; + var group_names = {}; + var groups = []; + var resgrp_database = new openerp.web.DataSetSearch(self,'res.groups', null, null); + resgrp_database.read_slice([],{}, function (res_grp) { + _.each(res_grp,function(res){ + var key = res.id; + group_names[key]=res.name; + group_ids.push(res.id); + }); + var irmodel_database = new openerp.web.DataSetSearch(self,'ir.model.data', null, null); + irmodel_database.read_slice([],{domain:[['res_id', 'in', group_ids],['model','=','res.groups']]},function(model_grp){ + _.each(model_grp,function(res_group){ + groups.push([res_group.name,group_names[res_group.res_id]]); + }); + }); + }); + return groups; } }); openerp.web.ViewEditor.Field = openerp.web.Class.extend({ init: function(view, node) { + var self = this; this.$element = view.$element; this.node = node; }, @@ -536,18 +561,152 @@ openerp.web.ViewEditor.FieldSelect = openerp.web.ViewEditor.Field.extend({ //ToDo } }); +openerp.web.ViewEditor.WidgetProperty = openerp.web.ViewEditor.Field.extend({ + init: function(view, node) { + this._super(view, node); + this.registry = openerp.web.form.widgets; + this.template = "view_selection"; + }, + start: function() { + var self = this; + this._super.apply(this, arguments); + }, + set_value: function(id,value) { + var self = this; + value = _.keys(this.registry.map); + _.each(value, function(item) { + self.$element.find("tr[id="+id+"] select").append($("