summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/widgets/iframe_widget.js
diff options
context:
space:
mode:
authorGéry Debongnie <ged@odoo.com>2017-03-05 10:05:56 +0100
committerAaron Bohy <aab@odoo.com>2017-04-11 19:44:38 +0200
commit905e01921f3c3ef43ace6fc537d1d8c0d280002c (patch)
tree265c43ab21c5401a5d9f0f3d64d86f1ac417451c /addons/web/static/src/js/widgets/iframe_widget.js
parent54d4c73af4ad05c7640d28c1892247c9538b8017 (diff)
[REF] web, *: redesign all JS views
This commit introduce a full redesign of all JS views. We started basically from scratch. The goal was to unify all the various views under a common framework, to make them testable, to make then usable in different conditions (in studio, or in the frontend), and to make our lives easier. Some important points are: - we introduced new coding guidelines (camelCase, 80 chars width, ...) - we have a brand new testing framework (still QUnit based) - kanban view moved to the web addon - calendar view (formerly web_calender) moved to web as well - the tree view was removed - all new code should be documented We hope that this code is the start of a new era for the Odoo web client, we want to have a high quality codebase, well documented, well tested, well designed. Work done by the framework team: mostly aab, ged, chm, dmo, qsm
Diffstat (limited to 'addons/web/static/src/js/widgets/iframe_widget.js')
-rw-r--r--addons/web/static/src/js/widgets/iframe_widget.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/addons/web/static/src/js/widgets/iframe_widget.js b/addons/web/static/src/js/widgets/iframe_widget.js
new file mode 100644
index 00000000000..cf5bc15c950
--- /dev/null
+++ b/addons/web/static/src/js/widgets/iframe_widget.js
@@ -0,0 +1,64 @@
+odoo.define('web.IFrameWidget', function (require) {
+"use strict";
+
+var Widget = require('web.Widget');
+
+/**
+ * Generic widget to create an iframe that listens for clicks
+ *
+ * It should be extended by overwritting the methods:
+ * init: function(parent) {
+ * this._super(parent, <url_of_iframe>);
+ * },
+ * _onIFrameClicked: function(e){
+ * filter the clicks you want to use and apply
+ * an action on it
+ * }
+ */
+var IFrameWidget = Widget.extend({
+ tagName: 'iframe',
+ /**
+ * @constructor
+ * @param {Widget} parent
+ * @param {string} url
+ */
+ init: function (parent, url) {
+ this._super(parent);
+ this.url = url;
+ },
+ /**
+ * @override
+ * @returns {Deferred}
+ */
+ start: function () {
+ this.$el.css({height: '100%', width: '100%', border: 0});
+ this.$el.attr({src: this.url});
+ this.$el.on("load", this._bindEvents.bind(this));
+ return this._super();
+ },
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * Called when the iframe is ready
+ */
+ _bindEvents: function (){
+ this.$el.contents().click(this._onIFrameClicked.bind(this));
+ },
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * @param {MouseEvent} event
+ */
+ _onIFrameClicked: function (event){
+ }
+});
+
+return IFrameWidget;
+
+});