diff options
| author | Yogesh (OpenERP) <ysa@tinyerp.com> | 2011-11-09 13:22:06 +0530 |
|---|---|---|
| committer | Yogesh (OpenERP) <ysa@tinyerp.com> | 2011-11-09 13:22:06 +0530 |
| commit | 5e3a533f39f7783c4b3d29c0453601c2f0c48a75 (patch) | |
| tree | 3f8b8ba5be2fb08e362a455caa4e0441e89758c1 /addons/web/static/src | |
| parent | beb3aa9fbb43b430c45c066f11f1c406e6c66ecd (diff) | |
[IMP] vieweditor :- improve code in edit widget class.
bzr revid: ysa@tinyerp.com-20111109075206-s2k6s8t9n8ik1qu3
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/view_editor.js | 124 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 9 |
2 files changed, 71 insertions, 62 deletions
diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js index b2b6b07324c..78efb3055a4 100644 --- a/addons/web/static/src/js/view_editor.js +++ b/addons/web/static/src/js/view_editor.js @@ -557,14 +557,14 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ } else { type_widget = new openerp.web.ViewEditor.FieldChar (self.edit_node_dialog,arch_val, id); } - self.edit_widget.push(type_widget); - self.edit_node_dialog.$element.find('table[id=rec_table]').append('<tr><td align="right">'+id+':</td><td>'+type_widget.render()+'</td></tr>'); - var view_val = _.detect(arch_val[0]['att_list'],function(res) { + var value = _.detect(arch_val[0]['att_list'],function(res) { return _.include(res, id); }); - var value = null; - id == 'groups'? type_widget.set_value(self.groups, view_val): type_widget.set_value(value, view_val); + if (id == 'groups') type_widget.value = self.groups; + self.edit_node_dialog.$element.find('table[id=rec_table]').append('<tr><td align="right">'+id+':</td><td>'+type_widget.render()+'</td></tr>'); type_widget.start(); + type_widget.set_value(value) + self.edit_widget.push(type_widget); }); }); }, @@ -593,7 +593,7 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ .read_slice([],{domain:[['res_id', 'in', group_ids],['model','=','res.groups']]}) .done(function(model_grp) { _.each(model_grp,function(res_group){ - groups.push([res_group.name,group_names[res_group.res_id]]); + groups.push([res_group.module + "." + res_group.name,group_names[res_group.res_id]]); }); self.groups = groups; def.resolve(); @@ -608,6 +608,7 @@ openerp.web.ViewEditor.Field = openerp.web.Class.extend({ this.node = node; this.dirty = false; this.name = id; + this.value = undefined; }, on_ui_change: function() { this.dirty = true; @@ -624,9 +625,9 @@ openerp.web.ViewEditor.FieldBoolean = openerp.web.ViewEditor.Field.extend({ self.on_ui_change(); }); }, - set_value: function(value,view_val) { - if (view_val) { - this.$element.find("input[id=" + this.name+ "]").attr('checked', view_val[1]); + set_value: function(value) { + if (value) { + this.$element.find("input[id=" + this.name+ "]").attr('checked', value[1]); } }, get_value: function() { @@ -645,8 +646,8 @@ openerp.web.ViewEditor.FieldChar = openerp.web.ViewEditor.Field.extend({ self.on_ui_change(); }); }, - set_value: function(value,view_val) { - view_val ? this.$element.find("input[id=" + this.name + "]").val(view_val[1]): this.$element.find("tr[id=" + this.name + "] input").val(); + set_value: function(value) { + value ? this.$element.find("input[id=" + this.name + "]").val(value[1]): this.$element.find("tr[id=" + this.name + "] input").val(); }, get_value: function() { if (!this.dirty) { @@ -664,16 +665,14 @@ openerp.web.ViewEditor.FieldSelect = openerp.web.ViewEditor.Field.extend({ self.on_ui_change(); }); }, - set_value: function(value, view_val) { - var self = this; - _.each(value, function(item) { - var select_val = view_val? (view_val[1] == ((typeof(item) == 'string')? item:item[0])?true: false): false; - self.$element.find("select[id=" + self.name + "]").append($("<option/>", { - value: (typeof(item) == 'string') ? item: item[0], - text: (typeof(item) == 'string')? item: item[1], - selected:select_val - })); - }); + set_value: function(value) { + value = value === null ? false : value; + value = value instanceof Array ? value[1] : value; + var index = 0; + for (var i = 0, ii = this.value.length; i < ii; i++) { + if ((this.value[i] instanceof Array && this.value[i][1] === value) || this.value[i] === value) index = i; + } + this.$element.find("select[id=" + this.name + "]")[0].selectedIndex = index; }, get_value: function() { if (!this.dirty) { @@ -687,62 +686,65 @@ openerp.web.ViewEditor.WidgetProperty = openerp.web.ViewEditor.FieldSelect.exten init: function(view, node, id) { this._super(view, node, id); this.registry = openerp.web.form.widgets; + var values = _.keys(this.registry.map); + values.push(''); + values.sort(); + this.value = values; }, - set_value: function(value, view_val) { - value = _.keys(this.registry.map); - value.push(''); - value.sort(); - this._super.apply(this,[value, view_val]); - } }); openerp.web.ViewEditor.IconProperty = openerp.web.ViewEditor.FieldSelect.extend({ - set_value: function(value, view_val) { - this._super.apply(this,[icons, view_val]); - } + init: function(view, node, id) { + this._super(view, node, id); + this.value = icons; + }, }); openerp.web.ViewEditor.ButtonTargetProperty = openerp.web.ViewEditor.FieldSelect.extend({ - set_value: function(value, view_val) { - value = [['', ''], ['new', 'New Window']]; - this._super.apply(this,[value, view_val]); - } + init: function(view, node, id) { + this._super(view, node, id); + this.value = [['', ''], ['new', 'New Window']]; + }, }); openerp.web.ViewEditor.ButtonTypeProperty = openerp.web.ViewEditor.FieldSelect.extend({ - set_value: function(value, view_val) { - value = [['', ''], ['action', 'Action'], ['object', 'Object'], ['workflow', 'Workflow'], ['server_action', 'Server Action']]; - this._super.apply(this,[value, view_val]); - } + init: function(view, node, id) { + this._super(view, node, id); + this.value = [['', ''], ['action', 'Action'], ['object', 'Object'], ['workflow', 'Workflow'], ['server_action', 'Server Action']]; + }, }); openerp.web.ViewEditor.AlignProperty = openerp.web.ViewEditor.FieldSelect.extend({ - set_value: function(value, view_val) { - value = [['', ''], ['0.0', 'Left'], ['0.5', 'Center'], ['1.0', 'Right']]; - this._super.apply(this,[value, view_val]); - } + init: function(view, node, id) { + this._super(view, node, id); + this.value = [['', ''], ['0.0', 'Left'], ['0.5', 'Center'], ['1.0', 'Right']]; + }, }); openerp.web.ViewEditor.ButtonSpecialProperty = openerp.web.ViewEditor.FieldSelect.extend({ - set_value: function(value, view_val) { - value = [['',''],['save', 'Save Button'], ['cancel', 'Cancel Button'], ['open', 'Open Button']]; - this._super.apply(this,[value, view_val]); - } + init: function(view, node, id) { + this._super(view, node, id); + this.value = [['',''],['save', 'Save Button'], ['cancel', 'Cancel Button'], ['open', 'Open Button']]; + }, }); openerp.web.ViewEditor.PositionProperty = openerp.web.ViewEditor.FieldSelect.extend({ - set_value: function(value, view_val) { - value = [['',''],['after', 'After'],['before', 'Before'],['inside', 'Inside'],['replace', 'Replace']]; - this._super.apply(this,[value, view_val]); - } + init: function(view, node, id) { + this._super(view, node, id); + this.value = [['',''],['after', 'After'],['before', 'Before'],['inside', 'Inside'],['replace', 'Replace']]; + }, }); openerp.web.ViewEditor.GroupsProperty = openerp.web.ViewEditor.FieldSelect.extend({ - set_value: function(value, view_val) { + init: function(view, node, id) { + this._super(view, node, id); + this.multiple = true; + }, + start: function () { + this._super(); + this.$element.find("select[id=" + this.name + "]").css('height', '100px').attr("multiple",true); + }, + set_value: function(value) { var self = this; - this.$element.find("select[id="+ this.name +"]").attr('multiple', true).css('height','100px'); - var selected_val, sel_val; - view_val ? selected_val=view_val[1].split(',') : selected_val = null; - _.each(value, function(item) { - _.include(selected_val,item[0])?sel_val=true:sel_val=false; - self.$element.find("select[id="+self.name+"]").append($("<option/>", { - value : item[0], - text : item[1], - selected:sel_val - })); + self.$element.find("#groups option").attr("selected",false); + if (!value) return false; + _.each(this.value, function(item) { + if (_.include(value[1].split(','), item[0])) { + self.$element.find("select[id="+self.name+"] option[value='" + item[0] +"']").attr("selected",1) + } }); } }); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index a0d8921d1b7..95bd6f663dd 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1334,7 +1334,14 @@ <input type="text" t-att-id="widget.name" class="field_char" size="50"/> </t> <t t-name="vieweditor_selection"> - <select t-att-id="widget.name"/> + <select t-att-id="widget.name" > + <t t-foreach="widget.value" t-as="option"> + <option + t-att-value="typeof option === 'object' ? option[0] : option"> + <t t-esc="typeof option === 'object' ? option[1] : option"/> + </option> + </t> + </select> </t> <t t-name="vieweditor_boolean"> <input type="checkbox" t-att-id="widget.name"/> |
