Merge pull request #4424 from expsa/eltayar

Fix TypeError: _renderRows expects no parameters - use state.data.records
This commit is contained in:
Mohamed Eltayar 2025-08-29 19:06:47 +03:00 committed by GitHub
commit 059383f5fb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
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.$('.oe_no_results').remove();
// Render new rows
this._renderRows(pageRecords);
// Try to use Odoo's internal _renderRows (without parameters)
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
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
*/
@ -442,10 +449,13 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
self.columns.forEach(function(col) {
if (!col.invisible && col.attrs && col.attrs.name) {
var value = record[col.attrs.name] || '';
// Handle many2one fields
if (typeof value === 'object' && value) {
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);
}
});