[FIX] rendering of m2o selections after edition in editable lists
moved rendering of cell contents into JS to have more control (and simpler tests/dispatching. May also help the method getting JITed, with a bit o' luck) bzr revid: xmo@openerp.com-20110708140655-lpbtriqto8tz2uxx
This commit is contained in:
parent
ff19bed2b3
commit
f5b72b6bcb
|
@ -637,7 +637,9 @@ openerp.base.ListView.List = Class.extend( /** @lends openerp.base.ListView.List
|
||||||
this.$current.remove();
|
this.$current.remove();
|
||||||
}
|
}
|
||||||
this.$current = this.$_element.clone(true);
|
this.$current = this.$_element.clone(true);
|
||||||
this.$current.empty().append(QWeb.render('ListView.rows', this));
|
this.$current.empty().append(
|
||||||
|
QWeb.render('ListView.rows', _.extend({
|
||||||
|
render_cell: this.render_cell}, this)));
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Gets the ids of all currently selected records, if any
|
* Gets the ids of all currently selected records, if any
|
||||||
|
@ -767,9 +769,42 @@ openerp.base.ListView.List = Class.extend( /** @lends openerp.base.ListView.List
|
||||||
options: this.options,
|
options: this.options,
|
||||||
row: this.rows[record_index],
|
row: this.rows[record_index],
|
||||||
row_parity: (record_index % 2 === 0) ? 'even' : 'odd',
|
row_parity: (record_index % 2 === 0) ? 'even' : 'odd',
|
||||||
row_index: record_index
|
row_index: record_index,
|
||||||
|
render_cell: this.render_cell
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* Formats the rendring of a given value based on its field type
|
||||||
|
*
|
||||||
|
* @param {Object} row_data record whose values should be displayed in the cell
|
||||||
|
* @param {Object} column column descriptor
|
||||||
|
* @param {"button"|"field"} column.tag base control type
|
||||||
|
* @param {String} column.type widget type for a field control
|
||||||
|
* @param {String} [column.string] button label
|
||||||
|
* @param {String} [column.icon] button icon
|
||||||
|
*/
|
||||||
|
render_cell: function (row_data, column) {
|
||||||
|
var attrs = column.modifiers_for(row_data);
|
||||||
|
if (attrs.invisible) { return ''; }
|
||||||
|
if (column.tag === 'button') {
|
||||||
|
return [
|
||||||
|
'<button type="button" title="', column.string || '', '">',
|
||||||
|
'<img src="/base/static/src/img/icons/', column.icon, '.png"',
|
||||||
|
' alt="', column.string || '', '"/>',
|
||||||
|
'</button>'
|
||||||
|
].join('')
|
||||||
|
}
|
||||||
|
|
||||||
|
var record = row_data[column.id];
|
||||||
|
if (record.value === false) { return ''; }
|
||||||
|
switch (column.type) {
|
||||||
|
case 'many2one':
|
||||||
|
// name_get value format
|
||||||
|
return record.value[1];
|
||||||
|
default:
|
||||||
|
return record.value;
|
||||||
|
}
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* Stops displaying the records matching the provided ids.
|
* Stops displaying the records matching the provided ids.
|
||||||
*
|
*
|
||||||
|
|
|
@ -324,20 +324,7 @@
|
||||||
<td t-if="!column.meta and column.invisible !== '1'" t-att-title="column.help"
|
<td t-if="!column.meta and column.invisible !== '1'" t-att-title="column.help"
|
||||||
t-att-class="'oe-field-cell' + (align ? ' oe-number' : '')"
|
t-att-class="'oe-field-cell' + (align ? ' oe-number' : '')"
|
||||||
t-att-data-field="column.id">
|
t-att-data-field="column.id">
|
||||||
<t t-set="attrs" t-value="column.modifiers_for(row.data)"/>
|
<t t-raw="render_cell(row.data, column)"/>
|
||||||
<t t-if="!attrs.invisible">
|
|
||||||
<t t-set="is_button" t-value="column.tag === 'button'"/>
|
|
||||||
<!-- TODO: get correct widget from form -->
|
|
||||||
<t t-if="!is_button and row['data'][column.id].value !== false">
|
|
||||||
<t t-set="value" t-value="row['data'][column.id].value"/>
|
|
||||||
<t t-esc="value instanceof Array ? value[1] : value"/>
|
|
||||||
</t>
|
|
||||||
<button type="button" t-att-title="column.string"
|
|
||||||
t-if="is_button">
|
|
||||||
<img t-att-src="'/base/static/src/img/icons/' + column.icon + '.png'"
|
|
||||||
t-att-alt="column.string"/>
|
|
||||||
</button>
|
|
||||||
</t>
|
|
||||||
</td>
|
</td>
|
||||||
</t>
|
</t>
|
||||||
<td t-if="options.deletable" class='oe-record-delete'>
|
<td t-if="options.deletable" class='oe-record-delete'>
|
||||||
|
|
Loading…
Reference in New Issue