diff --git a/addons/account/static/src/components/bills_upload/bills_upload.js b/addons/account/static/src/components/bills_upload/bills_upload.js index 12c5ddcebf9..e94e1b7263c 100644 --- a/addons/account/static/src/components/bills_upload/bills_upload.js +++ b/addons/account/static/src/components/bills_upload/bills_upload.js @@ -82,10 +82,10 @@ export const accountFileUploader = { btnClass: attrs.btnClass || "", linkText: attrs.linkText || _lt("Upload"), }), - fieldDependencies: { - id: { type: "integer" }, - type: { type: "selection" }, - }, + fieldDependencies: [ + { name: "id", type: "integer" }, + { name: "type", type: "selection" }, + ], }; registry.category("view_widgets").add("account_file_uploader", accountFileUploader); diff --git a/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js b/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js index b15cfa83630..e81315fd89b 100644 --- a/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js +++ b/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js @@ -591,9 +591,7 @@ AnalyticDistribution.props = { export const analyticDistribution = { component: AnalyticDistribution, supportedTypes: ["char", "text"], - fieldDependencies: { - analytic_precision: { type: "integer" }, - }, + fieldDependencies: [{ name:"analytic_precision", type: "integer" }], extractProps: ({ attrs }) => ({ business_domain: attrs.options.business_domain, account_field: attrs.options.account_field, diff --git a/addons/mail/static/src/backend_components/activity_exception/activity_exception.js b/addons/mail/static/src/backend_components/activity_exception/activity_exception.js index 71a32b81650..3f0a910b77e 100644 --- a/addons/mail/static/src/backend_components/activity_exception/activity_exception.js +++ b/addons/mail/static/src/backend_components/activity_exception/activity_exception.js @@ -23,8 +23,6 @@ Object.assign(ActivityException, { registry.category("fields").add("activity_exception", { component: ActivityException, - fieldDependencies: { - activity_exception_icon: { type: "char" }, - }, + fieldDependencies: [{ name: "activity_exception_icon", type: "char" }], noLabel: true, }); diff --git a/addons/mail/static/src/backend_components/kanban_field_activity_view/kanban_field_activity_view_container.js b/addons/mail/static/src/backend_components/kanban_field_activity_view/kanban_field_activity_view_container.js index 58cb199de29..d0df0e07415 100644 --- a/addons/mail/static/src/backend_components/kanban_field_activity_view/kanban_field_activity_view_container.js +++ b/addons/mail/static/src/backend_components/kanban_field_activity_view/kanban_field_activity_view_container.js @@ -86,14 +86,14 @@ Object.assign(KanbanFieldActivityViewContainer, { export const kanbanFieldActivityViewContainer = { component: KanbanFieldActivityViewContainer, - fieldDependencies: { - activity_exception_decoration: { type: "selection" }, - activity_exception_icon: { type: "char" }, - activity_state: { type: "selection" }, - activity_summary: { type: "char" }, - activity_type_icon: { type: "char" }, - activity_type_id: { type: "many2one", relation: "mail.activity.type" }, - }, + fieldDependencies: [ + { name: "activity_exception_decoration", type: "selection" }, + { name: "activity_exception_icon", type: "char" }, + { name: "activity_state", type: "selection" }, + { name: "activity_summary", type: "char" }, + { name: "activity_type_icon", type: "char" }, + { name: "activity_type_id", type: "many2one", relation: "mail.activity.type" }, + ], }; registry.category("fields").add("kanban_activity", kanbanFieldActivityViewContainer); diff --git a/addons/mail/static/src/backend_components/list_field_activity_view/list_field_activity_view_container.js b/addons/mail/static/src/backend_components/list_field_activity_view/list_field_activity_view_container.js index ad507248c3f..f5525e1912e 100644 --- a/addons/mail/static/src/backend_components/list_field_activity_view/list_field_activity_view_container.js +++ b/addons/mail/static/src/backend_components/list_field_activity_view/list_field_activity_view_container.js @@ -86,14 +86,14 @@ Object.assign(ListFieldActivityViewContainer, { export const listFieldActivityViewContainer = { component: ListFieldActivityViewContainer, - fieldDependencies: { - activity_exception_decoration: { type: "selection" }, - activity_exception_icon: { type: "char" }, - activity_state: { type: "selection" }, - activity_summary: { type: "char" }, - activity_type_icon: { type: "char" }, - activity_type_id: { type: "many2one", relation: "mail.activity.type" }, - }, + fieldDependencies: [ + { name: "activity_exception_decoration", type: "selection" }, + { name: "activity_exception_icon", type: "char" }, + { name: "activity_state", type: "selection" }, + { name: "activity_summary", type: "char" }, + { name: "activity_type_icon", type: "char" }, + { name: "activity_type_id", type: "many2one", relation: "mail.activity.type" }, + ], }; registry.category("fields").add("list_activity", listFieldActivityViewContainer); diff --git a/addons/web/static/src/views/fields/image/image_field.js b/addons/web/static/src/views/fields/image/image_field.js index 7e65fed0858..b4b48923246 100644 --- a/addons/web/static/src/views/fields/image/image_field.js +++ b/addons/web/static/src/views/fields/image/image_field.js @@ -132,9 +132,7 @@ export const imageField = { component: ImageField, displayName: _lt("Image"), supportedTypes: ["binary"], - fieldDependencies: { - write_date: { type: "datetime" }, - }, + fieldDependencies: [{ name: "write_date", type: "datetime" }], extractProps: ({ attrs }) => ({ enableZoom: attrs.options.zoom, zoomDelay: attrs.options.zoom_delay, diff --git a/addons/web/static/src/views/legacy_utils.js b/addons/web/static/src/views/legacy_utils.js index 27c69d45586..82bdb804948 100644 --- a/addons/web/static/src/views/legacy_utils.js +++ b/addons/web/static/src/views/legacy_utils.js @@ -96,7 +96,7 @@ export function mapActiveFieldsToFieldsInfo(activeFields, fields, viewType, env) specialData: fieldDescr.field && fieldDescr.field.legacySpecialData, domain, context: fieldDescr.context, - fieldDependencies: {}, // ?? + fieldDependencies: [], // ?? force_save: fieldDescr.forceSave, mode, modifiers: fieldDescr.modifiers, diff --git a/addons/web/static/src/views/utils.js b/addons/web/static/src/views/utils.js index 78891d7e414..2e4d1e1865f 100644 --- a/addons/web/static/src/views/utils.js +++ b/addons/web/static/src/views/utils.js @@ -24,8 +24,9 @@ const NUMERIC_TYPES = ["integer", "float", "monetary"]; * @param {Object} activeFields * @param {Object} [dependencies={}] */ -export function addFieldDependencies(activeFields, fields, dependencies = {}) { - for (const [name, dependency] of Object.entries(dependencies)) { +export function addFieldDependencies(activeFields, fields, dependencies = []) { + for (const dependency of dependencies) { + const { name } = dependency; if (!(name in activeFields)) { activeFields[name] = Object.assign({ name, rawAttrs: {} }, dependency, { modifiers: { invisible: true }, diff --git a/addons/web/static/src/views/widgets/week_days/week_days.js b/addons/web/static/src/views/widgets/week_days/week_days.js index 792e806bf42..d2881fcf930 100644 --- a/addons/web/static/src/views/widgets/week_days/week_days.js +++ b/addons/web/static/src/views/widgets/week_days/week_days.js @@ -30,15 +30,15 @@ export class WeekDays extends Component { export const weekDays = { component: WeekDays, - fieldDependencies: { - sun: { type: "boolean", string: _lt("Sun") }, - mon: { type: "boolean", string: _lt("Mon") }, - tue: { type: "boolean", string: _lt("Tue") }, - wed: { type: "boolean", string: _lt("Wed") }, - thu: { type: "boolean", string: _lt("Thu") }, - fri: { type: "boolean", string: _lt("Fri") }, - sat: { type: "boolean", string: _lt("Sat") }, - }, + fieldDependencies: [ + { name: "sun", type: "boolean", string: _lt("Sun") }, + { name: "mon", type: "boolean", string: _lt("Mon") }, + { name: "tue", type: "boolean", string: _lt("Tue") }, + { name: "wed", type: "boolean", string: _lt("Wed") }, + { name: "thu", type: "boolean", string: _lt("Thu") }, + { name: "fri", type: "boolean", string: _lt("Fri") }, + { name: "sat", type: "boolean", string: _lt("Sat") }, + ], }; registry.category("view_widgets").add("week_days", weekDays); diff --git a/addons/web/static/tests/views/form/form_view_tests.js b/addons/web/static/tests/views/form/form_view_tests.js index 6fce347c9c6..b375089c625 100644 --- a/addons/web/static/tests/views/form/form_view_tests.js +++ b/addons/web/static/tests/views/form/form_view_tests.js @@ -693,7 +693,7 @@ QUnit.module("Views", (hooks) => { class MyField extends CharField {} fieldRegistry.add("my_widget", { component: MyField, - fieldDependencies: { int_field: { type: "integer" } }, + fieldDependencies: [{ name: "int_field", type: "integer" }], }); serverData.models.partner.records[1].p = [1]; await makeView({ @@ -12576,9 +12576,7 @@ QUnit.module("Views", (hooks) => { component: class CustomField extends Component { static template = xml``; }, - fieldDependencies: { - int_field: { type: "integer" }, - }, + fieldDependencies: [{ name: "int_field", type: "integer" }], }; registry.category("fields").add("custom_field", customField); @@ -12606,9 +12604,7 @@ QUnit.module("Views", (hooks) => { component: class CustomField extends Component { static template = xml``; }, - fieldDependencies: { - product_id: { type: "many2one", relation: "product" }, - }, + fieldDependencies: [{ name: "product_id", type: "many2one", relation: "product" }], }; registry.category("fields").add("custom_field", customField); diff --git a/addons/web/static/tests/views/kanban_view_tests.js b/addons/web/static/tests/views/kanban_view_tests.js index a35ec6d07b4..3fe096e0a6b 100644 --- a/addons/web/static/tests/views/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban_view_tests.js @@ -12141,9 +12141,7 @@ QUnit.module("Views", (hooks) => { component: class CustomField extends Component { static template = xml``; }, - fieldDependencies: { - int_field: { type: "integer" }, - }, + fieldDependencies: [{ name: "int_field", type: "integer" }], }; registry.category("fields").add("custom_field", customField); @@ -12174,9 +12172,7 @@ QUnit.module("Views", (hooks) => { component: class CustomField extends Component { static template = xml``; }, - fieldDependencies: { - product_id: { type: "many2one", relation: "product" }, - }, + fieldDependencies: [{ name: "product_id", type: "many2one", relation: "product" }], }; registry.category("fields").add("custom_field", customField); diff --git a/addons/web/static/tests/views/list_view_tests.js b/addons/web/static/tests/views/list_view_tests.js index 516b7ca1b32..82dde9e62cb 100644 --- a/addons/web/static/tests/views/list_view_tests.js +++ b/addons/web/static/tests/views/list_view_tests.js @@ -16412,9 +16412,7 @@ QUnit.module("Views", (hooks) => { component: class CustomField extends Component { static template = xml``; }, - fieldDependencies: { - int_field: { type: "integer" }, - }, + fieldDependencies: [{ name: "int_field", type: "integer" }], }; registry.category("fields").add("custom_field", customField); @@ -16439,9 +16437,7 @@ QUnit.module("Views", (hooks) => { component: class CustomField extends Component { static template = xml``; }, - fieldDependencies: { - m2o: { type: "many2one", relation: "bar" }, - }, + fieldDependencies: [{ name: "m2o", type: "many2one", relation: "bar" }], }; registry.category("fields").add("custom_field", customField);