跳转到主要内容

将谷歌地图视图类型添加到Odoo Web客户端

项目描述

Beta License: AGPL-3 OCA/geospatial Translate me on Weblate Try me on Runboat

本模块包含三个新特性
  • 新视图类型和模式 “地图”

  • 新小部件 “gplaces_address_autocomplete”

  • 新小部件 “gplaces_autocomplete”

目录

用法

地图视图 “地图”:-

基本上,这个新的视图 地图 将将谷歌地图集成到Odoo中。使您能够在地图上显示 res.partner 地理位置或任何包含地理位置的模型。此功能将与Odoo无缝协作,这意味着您可以使用Odoo的搜索功能搜索合作伙伴的位置。

有五个可自定义的可用属性:-

  • lat : 一个属性,告诉地图对象的纬度字段 __[必填]__

  • lng : 一个属性,告诉地图对象的经度字段 __[必填]__

  • color : 一个属性,用于修改标记颜色(可选)任何指定的颜色都将设置所有标记的颜色 __[可选]__。

  • colors : 与属性 color 类似,但更可配置(您可以设置标记颜色取决于其值)此属性与Odoo树视图上的 colors 类似 __[可选]__

  • library一个属性,告诉地图加载哪个地图 __[必填]__.

    此选项有两个值:1. geometry 2. drawing

XML地图视图定义。例如

<record id="view_res_partner_map" model="ir.ui.view">
    <field name="name">view.res.partner.map</field>
    <field name="model">res.partner</field>
    <field name="arch" type="xml">
        <map class="o_res_partner_map" library='geometry' string="Map" lat="partner_latitude" lng="partner_longitude" colors="blue:company_type=='person';green:company_type=='company';">
            <field name="id"/>
            <field name="partner_latitude"/>
            <field name="partner_longitude"/>
            <field name="company_type"/>
            <field name="color"/>
            <field name="display_name"/>
            <field name="title"/>
            <field name="email"/>
            <field name="parent_id"/>
            <field name="is_company"/>
            <field name="function"/>
            <field name="phone"/>
            <field name="street"/>
            <field name="street2"/>
            <field name="zip"/>
            <field name="city"/>
            <field name="country_id"/>
            <field name="mobile"/>
            <field name="state_id"/>
            <field name="category_id"/>
            <field name="image_small"/>
            <field name="type"/>
            <templates>
                <t t-name="kanban-box">
                    <div class="oe_kanban_global_click o_res_partner_kanban">
                        <div class="o_kanban_image">
                            <t t-if="record.image_small.raw_value">
                                <img t-att-src="kanban_image('res.partner', 'image_small', record.id.raw_value)"/>
                            </t>
                            <t t-if="!record.image_small.raw_value">
                                <t t-if="record.type.raw_value === 'delivery'">
                                    <img t-att-src='_s + "/base/static/src/img/truck.png"' class="o_kanban_image oe_kanban_avatar_smallbox"/>
                                </t>
                                <t t-if="record.type.raw_value === 'invoice'">
                                    <img t-att-src='_s + "/base/static/src/img/money.png"' class="o_kanban_image oe_kanban_avatar_smallbox"/>
                                </t>
                                <t t-if="record.type.raw_value != 'invoice' &amp;&amp; record.type.raw_value != 'delivery'">
                                    <t t-if="record.is_company.raw_value === true">
                                        <img t-att-src='_s + "/base/static/src/img/company_image.png"'/>
                                    </t>
                                    <t t-if="record.is_company.raw_value === false">
                                        <img t-att-src='_s + "/base/static/src/img/avatar.png"'/>
                                    </t>
                                </t>
                            </t>
                        </div>
                        <div class="oe_kanban_details">
                            <strong class="o_kanban_record_title oe_partner_heading">
                                <field name="display_name"/>
                            </strong>
                            <div class="o_kanban_tags_section oe_kanban_partner_categories">
                                <span class="oe_kanban_list_many2many">
                                    <field name="category_id" widget="many2many_tags" options="{'color_field': 'color'}"/>
                                </span>
                            </div>
                            <ul>
                                <li t-if="record.parent_id.raw_value and !record.function.raw_value">
                                    <field name="parent_id"/>
                                </li>
                                <li t-if="!record.parent_id.raw_value and record.function.raw_value">
                                    <field name="function"/>
                                </li>
                                <li t-if="record.parent_id.raw_value and record.function.raw_value">
                                    <field name="function"/> at <field name="parent_id"/>
                                </li>
                                <li t-if="record.city.raw_value and !record.country_id.raw_value">
                                    <field name="city"/>
                                </li>
                                <li t-if="!record.city.raw_value and record.country_id.raw_value">
                                    <field name="country_id"/>
                                </li>
                                <li t-if="record.city.raw_value and record.country_id.raw_value">
                                    <field name="city"/>
            ,                        <field name="country_id"/>
                                </li>
                                <li t-if="record.email.raw_value" class="o_text_overflow">
                                    <field name="email"/>
                                </li>
                            </ul>
                            <div class="oe_kanban_partner_links"/>
                        </div>
                    </div>
                </t>
            </templates>
        </map>
    </field>
</record>

<record id="action_partner_map" model="ir.actions.act_window">
    ...
    <field name="view_type">form</field>
    <field name="view_mode">tree,form,map</field>
    ...
</record>

标记信息窗口将使用 kanban-box �看板卡片样式。

如何设置地图上标记的颜色?

有两个属性

  • 颜色:colors:允许您在地图上显示不同的标记颜色来表示记录

  • 颜色:地图上所有记录使用相同的标记颜色

XML颜色视图定义。例如

<!-- colors -->
<map string="Map" lat="partner_latitude" lng="partner_longitude" colors="green:company_type=='person';blue:company_type=='company';">
    ...
</map>

<!-- color -->
<map string="Map" lat="partner_latitude" lng="partner_longitude" color="orange">
    ...
</map>

新小部件 “gplaces_address_autocomplete”

新小部件,用于在Odoo中集成[地点自动完成地址表单](https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform)。

此小部件有四个可修改的选项

  • component_form

  • fillfields

  • lat

  • lng

组件表单 component_form

是一个选项,用于修改您想从地理编码器返回的对象中获取哪些值。有关Google组件类型的完整文档可以在此处找到[这里](https://developers.google.com/maps/documentation/geocoding/intro#Types)

默认情况下,此选项配置如下javascript值

{
    'street_number': 'long_name',
    'route': 'long_name',
    'intersection': 'short_name',
    'political': 'short_name',
    'country': 'short_name',
    'administrative_area_level_1': 'short_name',
    'administrative_area_level_2': 'short_name',
    'administrative_area_level_3': 'short_name',
    'administrative_area_level_4': 'short_name',
    'administrative_area_level_5': 'short_name',
    'colloquial_area': 'short_name',
    'locality': 'short_name',
    'ward': 'short_name',
    'sublocality_level_1': 'short_name',
    'sublocality_level_2': 'short_name',
    'sublocality_level_3': 'short_name',
    'sublocality_level_5': 'short_name',
    'neighborhood': 'short_name',
    'premise': 'short_name',
    'postal_code': 'short_name',
    'natural_feature': 'short_name',
    'airport': 'short_name',
    'park': 'short_name',
    'point_of_interest': 'long_name'
}

此配置可以修改为xml视图字段定义

<record id="view_res_partner_form" model="ir.ui.view">
   ...
   <field name="arch" type="xml">
        ...
        <field name="street" widget="gplaces_address_form" options="{'component_form': {'street_number': 'short_name'}}"/>
        ...
    </field>
</record>

填充字段 fillfields

是一个受 gplaces_address_autocomplete 小部件影响的选项。

此选项应包含您希望小部件为每个给定字段自动填充的已知 字段。字段可以包含来自组件表单的一个或多个元素。默认情况下,此选项配置如下javascript值

{
    'street': ['street_number', 'route'],
    'street2': ['administrative_area_level_3', 'administrative_area_level_4', 'administrative_area_level_5'],
    'city': ['locality', 'administrative_area_level_2'],
    'zip': 'postal_code',
    'state_id': 'administrative_area_level_1',
    'country_id': 'country',
}

此配置也可以修改为xml视图字段定义

<record id="view_res_partner_form" model="ir.ui.view">
    ...
    <field name="arch" type="xml">
        ...
        <field name="street" widget="google_places" options="{'fillfields': {'street2': ['route', 'street_number']}}"/>
        ...
    </field>
</record>

纬度 lat 和经度 lng

此选项告诉小部件地理定位字段,以便自动填充这些字段。

新小部件 “gplaces_autocomplete”

新小部件,用于在Odoo中集成[地点自动完成](https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete)。此小部件与 gplaces_address_autocomplete 具有类似的配置。

组件表单 component_form

gplaces_address_autocomplete 组件表单的相同配置

填充字段 fillfields

此配置与 gplaces_address_autocomplete 类似。默认情况下,此选项配置如下javascript值

{
    general: {
        name: 'name',
        website: 'website',
        phone: ['international_phone_number', 'formatted_phone_number']
    },
    geolocation: {
        partner_latitude: 'latitude',
        partner_longitude: 'longitude'
    },
    address: {
        street: ['street_number', 'route'],
        street2: ['administrative_area_level_3', 'administrative_area_level_4', 'administrative_area_level_5'],
        city: ['locality', 'administrative_area_level_2'],
        zip: 'postal_code',
        state_id: 'administrative_area_level_1',
        country_id: 'country'
    }
};

错误跟踪器

错误在 GitHub Issues 上跟踪。如果遇到问题,请检查是否已经报告了您的问题。如果您是第一个发现它的人,请通过提供详细和受欢迎的 反馈 帮助我们解决它。

请不要直接联系贡献者以寻求支持或技术问题的帮助。

致谢

作者

  • 开源集成商

贡献者

维护者

此模块由OCA维护。

Odoo Community Association

OCA,或Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并促进其广泛使用。

当前 维护者

gityopie wolfhall

此模块是GitHub上的 OCA/geospatial 项目的组成部分。

欢迎您贡献力量。要了解如何贡献,请访问 https://odoo-community.org/page/Contribute

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

此版本没有可用的源代码发行版文件。请参阅生成发行版存档的教程

构建发行版

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面