summaryrefslogtreecommitdiff
path: root/base_geoengine/static/src/js/widgets/geoengine_template_widgets.js
diff options
context:
space:
mode:
authorRichard Sassine <richardsassine@tutanota.com>2021-05-31 19:22:23 +0300
committerRichard Sassine <richardsassine@tutanota.com>2021-05-31 19:22:23 +0300
commit3a8776ee0342f47a57bcc9365499ebd5d3d7ee1c (patch)
tree9515fcef8e53992a9bbbcdc7950e1dd596983166 /base_geoengine/static/src/js/widgets/geoengine_template_widgets.js
parent9d3eeeb5c7d4055b34bc0768387952850ed78668 (diff)
added geoengine
Diffstat (limited to 'base_geoengine/static/src/js/widgets/geoengine_template_widgets.js')
-rw-r--r--base_geoengine/static/src/js/widgets/geoengine_template_widgets.js104
1 files changed, 104 insertions, 0 deletions
diff --git a/base_geoengine/static/src/js/widgets/geoengine_template_widgets.js b/base_geoengine/static/src/js/widgets/geoengine_template_widgets.js
new file mode 100644
index 0000000..21d8177
--- /dev/null
+++ b/base_geoengine/static/src/js/widgets/geoengine_template_widgets.js
@@ -0,0 +1,104 @@
+/* ---------------------------------------------------------
+ * Odoo base_geoengine
+ * Author Benjamin Willig 2017 Acsone SA/NV
+ * ---------------------------------------------------------
+ */
+
+odoo.define('base_geoengine.template_widgets', function (require) {
+ "use strict";
+
+ var field_utils = require('web.field_utils');
+ var pyUtils = require('web.py_utils');
+ var Registry = require('web.Registry');
+ var Widget = require('web.Widget');
+
+ /**
+ * Interface to be implemented by geonengine fields.
+ *
+ */
+ var FieldInterface = {
+
+ /**
+ * @constructor
+ * - parent: The widget's parent.
+ * - field: A dictionary giving details about the field, including
+ * the current field's value in the raw_value field.
+ * - $node: The field <field> tag as it appears in the view,
+ * encapsulated in a jQuery object.
+ */
+ init: function (parent, field, $node) {},
+ };
+
+ /**
+ * Abstract class for classes implementing FieldInterface.
+ *
+ * Properties:
+ * - value: useful property to hold the value of the field. By default,
+ * the constructor sets value property.
+ */
+ var AbstractField = Widget.extend(FieldInterface, {
+
+ /**
+ * @constructor
+ * Saves the field and $node parameters and sets the "value" property.
+ */
+ init: function (parent, field, $node) {
+ this._super(parent, field, $node);
+ this.field = field;
+ this.$node = $node;
+ this.options = pyUtils.py_eval(this.$node.attr("options") || '{}');
+ this.format_descriptor = _.extend({}, this.field, {
+ 'widget': this.$node.attr('widget'),
+ });
+ this.set("value", field.raw_value);
+ },
+
+ renderElement: function () {
+ var format = field_utils.format[this.field.type];
+ this.$el.text(format(this.field.raw_value, this.format_descriptor));
+ },
+ });
+
+ var FieldChar = AbstractField.extend({
+ tagName: 'span',
+ });
+
+ var FieldMany2one = AbstractField.extend({
+ tagName: 'span',
+ });
+
+ var FieldFloat = AbstractField.extend({
+ tagName: 'span',
+ });
+
+ var FieldFloatTime = AbstractField.extend({
+ tagName: 'span',
+ });
+
+ var FieldDate = AbstractField.extend({
+ tagName: 'span',
+ });
+
+ var FieldDatetime = AbstractField.extend({
+ tagName: 'span',
+ });
+
+ // TODO: rather use:
+ // var registry = require('web.field_registry');
+ // registry.add(...
+ var fields_registry = new Registry();
+ fields_registry
+ .add('char', FieldChar)
+ .add('many2one', FieldMany2one)
+ .add('float', FieldFloat)
+ .add('float_time', FieldFloatTime)
+ .add('date', FieldDate)
+ .add('datetime', FieldDatetime)
+ ;
+
+ return {
+ AbstractField: AbstractField,
+ registry: fields_registry,
+ };
+
+});