summaryrefslogtreecommitdiff
path: root/base_geoengine/geo_view/geo_vector_layer.py
diff options
context:
space:
mode:
Diffstat (limited to 'base_geoengine/geo_view/geo_vector_layer.py')
-rw-r--r--base_geoengine/geo_view/geo_vector_layer.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/base_geoengine/geo_view/geo_vector_layer.py b/base_geoengine/geo_view/geo_vector_layer.py
new file mode 100644
index 0000000..0c23638
--- /dev/null
+++ b/base_geoengine/geo_view/geo_vector_layer.py
@@ -0,0 +1,73 @@
+# Copyright 2011-2012 Nicolas Bessi (Camptocamp SA)
+# Copyright 2016 Yannick Vaucher (Camptocamp SA)
+# Copyright 2021 Shurshilov Artem
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+from odoo import fields, models
+
+SUPPORTED_ATT = [
+ "float",
+ "integer",
+ "integer_big",
+ "related",
+ "function",
+ "date",
+ "datetime",
+ "char",
+ "text",
+ "selection",
+]
+
+
+class GeoVectorLayer(models.Model):
+ _name = "geoengine.vector.layer"
+ _description = "Vector Layer"
+
+ geo_repr = fields.Selection(
+ [
+ ("basic", "Basic"),
+ # Actually we have to think if we should separate it for colored
+ ("proportion", "Proportional Symbol"),
+ ("colored", "Colored range/Chroma.js"),
+ ],
+ string="Representation mode",
+ required=True,
+ )
+ classification = fields.Selection(
+ [
+ ("unique", "Unique value"),
+ ("interval", "Interval"),
+ ("quantile", "Quantile"),
+ ("custom", "Custom"),
+ ],
+ string="Classification mode",
+ required=False,
+ )
+ name = fields.Char("Layer Name", translate=True, required=True)
+ symbol_ids = fields.One2many("geoengine.vector.symbol", "vector_layer_id")
+ begin_color = fields.Char(
+ "Begin color class", size=64, required=False, help="hex value"
+ )
+ end_color = fields.Char(
+ "End color class", size=64, required=False, help="hex value", default="#FF680A"
+ )
+ nb_class = fields.Integer("Number of class", default=1)
+ attribute_field_id = fields.Many2one(
+ "ir.model.fields", "attribute field", domain=[("ttype", "in", SUPPORTED_ATT)]
+ )
+ geo_field_id = fields.Many2one(
+ "ir.model.fields",
+ "Geo field",
+ domain=[("ttype", "ilike", "geo_")],
+ required=True,
+ ondelete='cascade'
+ )
+ view_id = fields.Many2one(
+ "ir.ui.view", "Related View", domain=[("type", "=", "geoengine")], required=True
+ )
+ sequence = fields.Integer("layer priority lower on top", default=6)
+ readonly = fields.Boolean("Layer is read only")
+ display_polygon_labels = fields.Boolean("Display Labels on Polygon")
+ active_on_startup = fields.Boolean(
+ help="Layer will be shown on startup if checked."
+ )
+ layer_opacity = fields.Float("Layer Opacity")