From d1160cf45a6080a4d42e4849626d9101829ac67c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Lef=C3=A8vre?= Date: Thu, 15 Sep 2022 11:43:37 +0000 Subject: [PATCH] [REF] spreadsheet: rename X2ManyTagSelector component It feels more natural with the new name; The "X2ManyTags" things is because it used to use a many2many tags fields under the hood. 1) It's no longer true 2) It's an implementation detail Part-of: odoo/odoo#100246 --- .../components/filter_value/filter_value.js | 4 +-- .../components/filter_value/filter_value.xml | 6 ++-- ...selector_widget.js => records_selector.js} | 32 +++++++++---------- 3 files changed, 20 insertions(+), 22 deletions(-) rename addons/spreadsheet/static/src/global_filters/components/{tag_selector_widget.js => records_selector.js} (76%) diff --git a/addons/spreadsheet/static/src/global_filters/components/filter_value/filter_value.js b/addons/spreadsheet/static/src/global_filters/components/filter_value/filter_value.js index 537abb30767..954e2dfa59b 100644 --- a/addons/spreadsheet/static/src/global_filters/components/filter_value/filter_value.js +++ b/addons/spreadsheet/static/src/global_filters/components/filter_value/filter_value.js @@ -1,6 +1,6 @@ /** @odoo-module */ -import { X2ManyTagSelector } from "../tag_selector_widget"; +import { RecordsSelector } from "../records_selector"; import { RELATIVE_DATE_RANGE_TYPES } from "@spreadsheet/helpers/constants"; import { DateFilterValue } from "../filter_date_value/filter_date_value"; @@ -32,7 +32,7 @@ export class FilterValue extends Component { } } FilterValue.template = "spreadsheet_edition.FilterValue"; -FilterValue.components = { X2ManyTagSelector, DateFilterValue }; +FilterValue.components = { RecordsSelector, DateFilterValue }; FilterValue.props = { filter: Object, model: Object, diff --git a/addons/spreadsheet/static/src/global_filters/components/filter_value/filter_value.xml b/addons/spreadsheet/static/src/global_filters/components/filter_value/filter_value.xml index 2c5f6e33aa4..3d6e21236ef 100644 --- a/addons/spreadsheet/static/src/global_filters/components/filter_value/filter_value.xml +++ b/addons/spreadsheet/static/src/global_filters/components/filter_value/filter_value.xml @@ -12,10 +12,10 @@ t-on-change="(e) => this.onTextInput(filter.id, e.target.value)"/> - diff --git a/addons/spreadsheet/static/src/global_filters/components/tag_selector_widget.js b/addons/spreadsheet/static/src/global_filters/components/records_selector.js similarity index 76% rename from addons/spreadsheet/static/src/global_filters/components/tag_selector_widget.js rename to addons/spreadsheet/static/src/global_filters/components/records_selector.js index 71998c526ed..26f0947d9f3 100644 --- a/addons/spreadsheet/static/src/global_filters/components/tag_selector_widget.js +++ b/addons/spreadsheet/static/src/global_filters/components/records_selector.js @@ -7,22 +7,20 @@ import { Many2XAutocomplete } from "@web/views/fields/relational_utils"; const { Component, xml, onWillStart, onWillUpdateProps } = owl; -export class X2ManyTagSelector extends Component { +export class RecordsSelector extends Component { setup() { /** @type {Record} */ this.displayNames = {}; /** @type {import("@web/core/orm_service").ORM}*/ this.orm = useService("orm"); - onWillStart(() => - this.fetchMissingDisplayNames(this.props.relatedModel, this.props.selectedValues) - ); + onWillStart(() => this.fetchMissingDisplayNames(this.props.resModel, this.props.resIds)); onWillUpdateProps((nextProps) => - this.fetchMissingDisplayNames(nextProps.relatedModel, nextProps.selectedValues) + this.fetchMissingDisplayNames(nextProps.resModel, nextProps.resIds) ); } get tags() { - return this.props.selectedValues.map((id) => ({ + return this.props.resIds.map((id) => ({ text: this.displayNames[id], onDelete: () => this.removeRecord(id), displayBadge: true, @@ -30,7 +28,7 @@ export class X2ManyTagSelector extends Component { } searchDomain() { - return Domain.not([["id", "in", this.props.selectedValues]]).toList(); + return Domain.not([["id", "in", this.props.resIds]]).toList(); } /** @@ -38,7 +36,7 @@ export class X2ManyTagSelector extends Component { */ removeRecord(recordId) { delete this.displayNames[recordId]; - this.notifyChange(this.props.selectedValues.filter((id) => id !== recordId)); + this.notifyChange(this.props.resIds.filter((id) => id !== recordId)); } /** @@ -48,7 +46,7 @@ export class X2ManyTagSelector extends Component { for (const record of records.filter((record) => record.name)) { this.displayNames[record.id] = record.name; } - this.notifyChange(this.props.selectedValues.concat(records.map(({ id }) => id))); + this.notifyChange(this.props.resIds.concat(records.map(({ id }) => id))); } /** @@ -75,15 +73,15 @@ export class X2ManyTagSelector extends Component { } } } -X2ManyTagSelector.components = { TagsList, Many2XAutocomplete }; -X2ManyTagSelector.template = xml/*xml*/ ` +RecordsSelector.components = { TagsList, Many2XAutocomplete }; +RecordsSelector.template = xml/*xml*/ `
`; -X2ManyTagSelector.props = { +RecordsSelector.props = { /** * Callback called when a record is selected or removed. * (selectedRecords: Array<{ id: number; display_name: string }>) => void **/ onValueChanged: Function, - relatedModel: String, + resModel: String, /** * Array of selected record ids */ - selectedValues: { + resIds: { optional: true, type: Array, }, @@ -112,6 +110,6 @@ X2ManyTagSelector.props = { type: String, }, }; -X2ManyTagSelector.defaultProps = { - selectedValues: [], +RecordsSelector.defaultProps = { + resIds: [], };