[IMP] view_form: field radio, display only the selected text in read only mode

bzr revid: chm@openerp.com-20130410135643-szjzolgpbr73kpxh
This commit is contained in:
Christophe Matthieu 2013-04-10 15:56:43 +02:00
parent c756cb72b6
commit 60be4d49c5
2 changed files with 37 additions and 23 deletions

View File

@ -2820,8 +2820,8 @@ instance.web.form.FieldRadio = instance.web.form.AbstractField.extend(instance.w
this.domain = false;
},
initialize_content: function () {
var self = this;
this.$el.on('click', '.oe_radio_input,.oe_radio_header', function (e) {self.on_click_change_value(e)});
this.$el.on('click', '.oe_radio_input,.oe_radio_header', this, this.on_click_change_value);
this.on("change:effective_readonly", this, this.render_value);
this.field_manager.on("view_content_has_changed", this, this.get_selection);
this.get_selection();
},
@ -2871,14 +2871,25 @@ instance.web.form.FieldRadio = instance.web.form.AbstractField.extend(instance.w
}
});
},
set_value: function (value_) {
if (this.field.type == "selection") {
value_ = _.find(this.field.selection, function (sel) { return sel[0] == value_});
}
else if (!this.selection.length) {
this.selection = [value_];
}
this._super(value_);
},
get_value: function () {
var id = this.get('value');
return _.isNumber(id) ? id : id[0];
var value = this.get('value');
return value instanceof Array ? value[0] : value;
},
render_value: function () {
var self = this;
self.$(".oe_radio_input_on").removeClass("oe_radio_input_on");
self.$(".oe_radio_input[data-id='" + self.get_value() + "'], [data-id='" + self.get_value() + "'] .oe_radio_input").addClass("oe_radio_input_on");
this.$(".oe_radio_edit_only, .oe_radio_read_only").hide();
this.$(this.get('effective_readonly') ? ".oe_radio_read_only" : ".oe_radio_edit_only").show();
this.$(".oe_radio_input_on").removeClass("oe_radio_input_on");
this.$(".oe_radio_input[data-id='" + this.get_value() + "'], [data-id='" + this.get_value() + "'] .oe_radio_input").addClass("oe_radio_input_on");
this.$(".oe_radio_read_only .oe_radio_header").text(this.get('value') ? this.get('value')[1] : "");
}
});

View File

@ -1113,25 +1113,28 @@
</t>
<t t-name="FieldRadio">
<span t-attf-class="oe_form_field oe_form_field_radio #{widget.horizontal ? 'oe_horizontal' : 'oe_vertical'}" t-att-style="widget.node.attrs.style">
<t t-if="widget.horizontal">
<t t-set="width" t-value="Math.floor(100 / widget.selection.length)"/>
<t t-if="!widget.no_radiolabel">
<t t-foreach="widget.selection" t-as="selection">
<div class="oe_radio_header" t-att-style="'width: ' + width + '%;'"><t t-esc="selection[1]"/></div>
<span class="oe_radio_edit_only">
<t t-if="widget.horizontal">
<t t-set="width" t-value="Math.floor(100 / widget.selection.length)"/>
<t t-if="!widget.no_radiolabel">
<t t-foreach="widget.selection" t-as="selection">
<div class="oe_radio_header" t-att-style="'width: ' + width + '%;'"><t t-esc="selection[1]"/></div>
</t>
<br/>
</t>
<t t-foreach="widget.selection" t-as="selection">
<div class="oe_radio_input" t-att-style="'width: ' + width + '%;'" t-att-data-id="selection[0]">&amp;nbsp;</div>
</t>
<br/>
</t>
<t t-foreach="widget.selection" t-as="selection">
<div class="oe_radio_input" t-att-style="'width: ' + width + '%;'" t-att-data-id="selection[0]">&amp;nbsp;</div>
<t t-if="!widget.horizontal">
<t t-foreach="widget.selection" t-as="selection">
<div class="oe_radio_header" t-att-data-id="selection[0]">
<div class="oe_radio_input">&amp;nbsp;</div><t t-if="!widget.no_radiolabel" t-esc="selection[1]"/>
</div>
</t>
</t>
</t>
<t t-if="!widget.horizontal">
<t t-foreach="widget.selection" t-as="selection">
<div class="oe_radio_header" t-att-data-id="selection[0]">
<div class="oe_radio_input">&amp;nbsp;</div><t t-if="!widget.no_radiolabel" t-esc="selection[1]"/>
</div>
</t>
</t>
</span>
<span class="oe_radio_read_only"><div class="oe_radio_header"><t t-esc="widget.get('value')[1]"/></div></span>
</span>
</t>
<t t-name="FieldMany2One">