[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) <aab@odoo.com>
This commit is contained in:
FrancoisGe
2023-02-23 16:08:42 +01:00
parent 5da90dfc4e
commit 94c49cfdee
12 changed files with 43 additions and 60 deletions
@@ -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);
@@ -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,
@@ -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,
});
@@ -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);
@@ -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);
@@ -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,
+1 -1
View File
@@ -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,
+3 -2
View File
@@ -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 },
@@ -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);
@@ -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`<span t-esc="props.record.data.int_field"/>`;
},
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`<span t-esc="props.record.data.product_id[1]"/>`;
},
fieldDependencies: {
product_id: { type: "many2one", relation: "product" },
},
fieldDependencies: [{ name: "product_id", type: "many2one", relation: "product" }],
};
registry.category("fields").add("custom_field", customField);
@@ -12141,9 +12141,7 @@ QUnit.module("Views", (hooks) => {
component: class CustomField extends Component {
static template = xml`<span t-esc="props.record.data.int_field"/>`;
},
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`<span t-esc="props.record.data.product_id[1]"/>`;
},
fieldDependencies: {
product_id: { type: "many2one", relation: "product" },
},
fieldDependencies: [{ name: "product_id", type: "many2one", relation: "product" }],
};
registry.category("fields").add("custom_field", customField);
@@ -16412,9 +16412,7 @@ QUnit.module("Views", (hooks) => {
component: class CustomField extends Component {
static template = xml`<span t-esc="props.record.data.int_field"/>`;
},
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`<span t-esc="props.record.data.m2o[0]"/>`;
},
fieldDependencies: {
m2o: { type: "many2one", relation: "bar" },
},
fieldDependencies: [{ name: "m2o", type: "many2one", relation: "bar" }],
};
registry.category("fields").add("custom_field", customField);