diff --git a/base_geoengine/i18n/base_geoengine.pot b/base_geoengine/i18n/base_geoengine.pot index f4915988c..194afc3d6 100644 --- a/base_geoengine/i18n/base_geoengine.pot +++ b/base_geoengine/i18n/base_geoengine.pot @@ -6,6 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-16 05:00+0000\n" +"PO-Revision-Date: 2026-09-16 05:00+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -127,6 +129,13 @@ msgstr "" msgid "Custom" msgstr "" +#. module: base_geoengine +#. odoo-javascript +#: code:addons/base_geoengine/static/src/js/views/geoengine/geoengine_renderer/geoengine_renderer.esm.js:0 +#, python-format +msgid "Customize view to use Attribute Field: \"%s\"" +msgstr "" + #. module: base_geoengine #: model:ir.model.fields,field_description:base_geoengine.field_ir_ui_view__default_extent msgid "Default map extent" diff --git a/base_geoengine/i18n/it.po b/base_geoengine/i18n/it.po index 6170b72cf..1d83e4774 100644 --- a/base_geoengine/i18n/it.po +++ b/base_geoengine/i18n/it.po @@ -4,17 +4,16 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-04-08 12:45+0000\n" -"Last-Translator: mymage \n" -"Language-Team: none\n" -"Language: it\n" +"POT-Creation-Date: 2026-09-16 05:00+0000\n" +"PO-Revision-Date: 2026-09-16 05:00+0000\n" +"Last-Translator: \n" +"Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.15.2\n" +"Plural-Forms: \n" #. module: base_geoengine #. odoo-python @@ -129,6 +128,13 @@ msgstr "Creato il" msgid "Custom" msgstr "Personalizzato" +#. module: base_geoengine +#. odoo-javascript +#: code:addons/base_geoengine/static/src/js/views/geoengine/geoengine_renderer/geoengine_renderer.esm.js:0 +#, python-format +msgid "Customize view to use Attribute Field: \"%s\"" +msgstr "Personalizza la vista per utilizzare il campo Attributo: \"%s\"" + #. module: base_geoengine #: model:ir.model.fields,field_description:base_geoengine.field_ir_ui_view__default_extent msgid "Default map extent" diff --git a/base_geoengine/static/src/js/views/geoengine/geoengine_renderer/geoengine_renderer.esm.js b/base_geoengine/static/src/js/views/geoengine/geoengine_renderer/geoengine_renderer.esm.js index 5248b65c6..1513d2c5a 100644 --- a/base_geoengine/static/src/js/views/geoengine/geoengine_renderer/geoengine_renderer.esm.js +++ b/base_geoengine/static/src/js/views/geoengine/geoengine_renderer/geoengine_renderer.esm.js @@ -24,9 +24,11 @@ import { } from "@web/model/relational_model/utils"; import {evaluateExpr} from "@web/core/py_js/py"; import {loadBundle, templates} from "@web/core/assets"; +import {_t} from "@web/core/l10n/translation"; import {parseXML} from "@web/core/utils/xml"; import {rasterLayersStore} from "../../../raster_layers_store.esm"; import {registry} from "@web/core/registry"; +import {sprintf} from "@web/core/utils/strings"; import {useService} from "@web/core/utils/hooks"; import {vectorLayersStore} from "../../../vector_layers_store.esm"; @@ -59,6 +61,7 @@ export class GeoengineRenderer extends Component { this.view = useService("view"); this.user = useService("user"); this.fields = useService("field"); + this.notification = useService("notification"); // For related model we need to load all the service needed by RelationalModel this.services = {}; @@ -766,8 +769,12 @@ export class GeoengineRenderer extends Component { const fields_to_read = this.getFieldsToRead(vector); const data = await this.getModelData(vector, fields_to_read); this.useRelatedModel(vector, layer, data); - const styleInfo = this.styleVectorLayer(vector, data); - this.initLegend(styleInfo, vector); + if (this.checkAttributeFieldUsage(vector, data)) { + const styleInfo = this.styleVectorLayer(vector, data); + if (styleInfo) { + this.initLegend(styleInfo, vector); + } + } } async renderVectorLayers() { @@ -861,9 +868,13 @@ export class GeoengineRenderer extends Component { } styleVectorLayerAndLegend(cfg, data, lv) { - const styleInfo = this.styleVectorLayer(cfg, data); - this.initLegend(styleInfo, cfg); - lv.setStyle(styleInfo.style); + if (this.checkAttributeFieldUsage(cfg, data)) { + const styleInfo = this.styleVectorLayer(cfg, data); + if (styleInfo) { + this.initLegend(styleInfo, cfg); + lv.setStyle(styleInfo.style); + } + } } initLegend(styleInfo, cfg) { @@ -1307,6 +1318,27 @@ export class GeoengineRenderer extends Component { var indicator = cfg.attribute_field_id[1]; return data.map((item) => item._values[indicator]); } + + /** + * Check vector Layer Attribute Field is defined + * by view to display proper legends + */ + checkAttributeFieldUsage(cfg, data) { + const indicator_values = this.extractLayerValues(cfg, data); + if (indicator_values.some((item) => typeof item === "undefined")) { + this.notification.add( + sprintf( + _t('Customize view to use Attribute Field: "%s"'), + cfg.attribute_field_id[1] + ), + { + type: "warning", + } + ); + return false; + } + return true; + } } GeoengineRenderer.template = "base_geoengine.GeoengineRenderer";