From 94c49cfdee1c448735c226bd6feedf44bd21ec6c Mon Sep 17 00:00:00 2001 From: FrancoisGe Date: Tue, 21 Feb 2023 15:46:51 +0000 Subject: [PATCH] [REF] *: fieldDependencies to Array As with fieldsToFetch in commit 25bf5a3fabfa9da5367e82d1c5713425c77bc373, we will convert fieldDependencies into an array of fields. We did it because it's easier to use and more natural to has an array. Part of task 3179751 closes odoo/odoo#113482 Related: odoo/enterprise#37449 Signed-off-by: Aaron Bohy (aab) --- .../components/bills_upload/bills_upload.js | 8 ++++---- .../analytic_distribution.js | 4 +--- .../activity_exception/activity_exception.js | 4 +--- .../kanban_field_activity_view_container.js | 16 ++++++++-------- .../list_field_activity_view_container.js | 16 ++++++++-------- .../src/views/fields/image/image_field.js | 4 +--- addons/web/static/src/views/legacy_utils.js | 2 +- addons/web/static/src/views/utils.js | 5 +++-- .../src/views/widgets/week_days/week_days.js | 18 +++++++++--------- .../static/tests/views/form/form_view_tests.js | 10 +++------- .../static/tests/views/kanban_view_tests.js | 8 ++------ .../web/static/tests/views/list_view_tests.js | 8 ++------ 12 files changed, 43 insertions(+), 60 deletions(-) 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);