diff options
| author | Richard Sassine <richardsassine@tutanota.com> | 2021-05-31 19:22:23 +0300 |
|---|---|---|
| committer | Richard Sassine <richardsassine@tutanota.com> | 2021-05-31 19:22:23 +0300 |
| commit | 3a8776ee0342f47a57bcc9365499ebd5d3d7ee1c (patch) | |
| tree | 9515fcef8e53992a9bbbcdc7950e1dd596983166 /base_geoengine/static/src/js/widgets/geoengine_template_widgets.js | |
| parent | 9d3eeeb5c7d4055b34bc0768387952850ed78668 (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.js | 104 |
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, + }; + +}); |
