58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
/** @odoo-module **/
|
|
|
|
import { registry } from '@web/core/registry';
|
|
|
|
const modelDefinitionsRegistry = registry.category('bus.model.definitions');
|
|
const customModelFieldsRegistry = modelDefinitionsRegistry.category('fieldsToInsert');
|
|
const recordsToInsertRegistry = modelDefinitionsRegistry.category('recordsToInsert');
|
|
const fakeModelsRegistry = modelDefinitionsRegistry.category('fakeModels');
|
|
/**
|
|
* Add models whose definitions need to be fetched on the server.
|
|
*
|
|
* @param {string[]} modelName
|
|
*/
|
|
export function addModelNamesToFetch(modelNames) {
|
|
if (!modelDefinitionsRegistry.contains('modelNamesToFetch')) {
|
|
modelDefinitionsRegistry.add('modelNamesToFetch', []);
|
|
}
|
|
modelDefinitionsRegistry.get('modelNamesToFetch').push(...modelNames);
|
|
}
|
|
|
|
/**
|
|
* Add models that will be added to the model definitions. We should
|
|
* avoid to rely on fake models and use real models instead.
|
|
*
|
|
* @param {string} modelName
|
|
* @param {Object} fields
|
|
*/
|
|
export function addFakeModel(modelName, fields) {
|
|
fakeModelsRegistry.add(modelName, fields);
|
|
}
|
|
|
|
/**
|
|
* Add model fields that are not present on the server side model's definitions
|
|
* but are required to ease testing or add default values for existing fields.
|
|
*
|
|
* @param {string} modelName
|
|
* @param {Object} fieldNamesToFields
|
|
*/
|
|
export function insertModelFields(modelName, fieldNamesToFields) {
|
|
const modelCustomFieldsRegistry = customModelFieldsRegistry.category(modelName);
|
|
for (const fname in fieldNamesToFields) {
|
|
modelCustomFieldsRegistry.add(fname, fieldNamesToFields[fname]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add records to the initial server data.
|
|
*
|
|
* @param {string} modelName
|
|
* @param {Object[]} records
|
|
*/
|
|
export function insertRecords(modelName, records) {
|
|
if (!recordsToInsertRegistry.contains(modelName)) {
|
|
recordsToInsertRegistry.add(modelName, []);
|
|
}
|
|
recordsToInsertRegistry.get(modelName).push(...records);
|
|
}
|