Fix TypeError: _renderRows expects no parameters - use state.data.records instead

This commit is contained in:
Mohamed Eltayar 2025-08-29 19:04:06 +03:00
parent 584a6cabba
commit be00cbfd74
1 changed files with 36 additions and 26 deletions

View File

@ -397,36 +397,43 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
this.$('tbody .o_data_row').remove(); this.$('tbody .o_data_row').remove();
this.$('.oe_no_results').remove(); this.$('.oe_no_results').remove();
// Render new rows // Try to use Odoo's internal _renderRows (without parameters)
this._renderRows(pageRecords); if (typeof this._renderRows === 'function') {
try {
// _renderRows uses state.data.records internally
var $rows = this._renderRows();
if ($rows && $rows.length) {
this.$('tbody').append($rows);
} else {
// Fallback if no rows returned
this._createBasicRows(pageRecords);
}
} catch (err) {
console.warn('_renderRows failed:', err);
this._createBasicRows(pageRecords);
}
} else if (typeof this._renderBody === 'function') {
try {
// Try _renderBody as alternative
var result = this._renderBody();
if (result && typeof result.then === 'function') {
result.then(function() {
// Body rendered
});
}
} catch (err) {
console.warn('_renderBody failed:', err);
this._createBasicRows(pageRecords);
}
} else {
// Direct fallback
this._createBasicRows(pageRecords);
}
// Update pager // Update pager
this._updatePager(records.length); this._updatePager(records.length);
}, },
/**
* Render rows for given records
*/
_renderRows: function(records) {
var self = this;
// Try to use Odoo's internal render methods
if (typeof this._renderRow === 'function') {
// Render each record as a row
records.forEach(function(record) {
try {
var $row = self._renderRow(record);
self.$('tbody').append($row);
} catch (err) {
console.warn('Failed to render row:', err);
}
});
} else {
// Fallback: Create basic rows
this._createBasicRows(records);
}
},
/** /**
* Create basic rows as fallback * Create basic rows as fallback
*/ */
@ -442,10 +449,13 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
self.columns.forEach(function(col) { self.columns.forEach(function(col) {
if (!col.invisible && col.attrs && col.attrs.name) { if (!col.invisible && col.attrs && col.attrs.name) {
var value = record[col.attrs.name] || ''; var value = record[col.attrs.name] || '';
// Handle many2one fields
if (typeof value === 'object' && value) { if (typeof value === 'object' && value) {
value = value[1] || value.display_name || ''; value = value[1] || value.display_name || '';
} }
var $cell = $('<td class="o_data_cell"></td>').text(value); var $cell = $('<td class="o_data_cell"></td>');
$cell.text(value);
$cell.attr('data-field', col.attrs.name);
$row.append($cell); $row.append($cell);
} }
}); });