summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/fields
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2017-08-31 14:39:52 +0200
committerChristophe Matthieu <chm@odoo.com>2017-08-31 16:26:11 +0200
commit95c2bd33a2e4bc5995b77c64c961e97db809e7f2 (patch)
tree27c6d4104ae973ad293f0b8e5742f231f8362ff1 /addons/web/static/src/js/fields
parent6f60a9a1792f4390c883bc1dff5f595c84183e12 (diff)
[IMP] web: lazy load nvd3, ace and fullCalendar lib to reduce asset size
Diffstat (limited to 'addons/web/static/src/js/fields')
-rw-r--r--addons/web/static/src/js/fields/abstract_field.js11
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js35
2 files changed, 26 insertions, 20 deletions
diff --git a/addons/web/static/src/js/fields/abstract_field.js b/addons/web/static/src/js/fields/abstract_field.js
index 9b484354544..bdb745298b2 100644
--- a/addons/web/static/src/js/fields/abstract_field.js
+++ b/addons/web/static/src/js/fields/abstract_field.js
@@ -30,10 +30,13 @@ odoo.define('web.AbstractField', function (require) {
* @module web.AbstractField
*/
+var ajax = require('web.ajax');
var field_utils = require('web.field_utils');
var Widget = require('web.Widget');
var AbstractField = Widget.extend({
+ cssLibs: [],
+ jsLibs: [],
events: {
'keydown': '_onKeydown',
},
@@ -173,6 +176,14 @@ var AbstractField = Widget.extend({
return self._render();
});
},
+ /**
+ * Loads the libraries listed in this.jsLibs and this.cssLibs
+ *
+ * @override
+ */
+ willStart: function () {
+ return $.when(ajax.loadLibs(this), this._super.apply(this, arguments));
+ },
//--------------------------------------------------------------------------
// Public
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js
index 4c4671275f2..7b15d30202d 100644
--- a/addons/web/static/src/js/fields/basic_fields.js
+++ b/addons/web/static/src/js/fields/basic_fields.js
@@ -8,7 +8,6 @@ odoo.define('web.basic_fields', function (require) {
*/
var AbstractField = require('web.AbstractField');
-var ajax = require('web.ajax');
var config = require('web.config');
var core = require('web.core');
var crash_manager = require('web.crash_manager');
@@ -1949,6 +1948,14 @@ var FieldToggleBoolean = AbstractField.extend({
var JournalDashboardGraph = AbstractField.extend({
className: "o_dashboard_graph",
+ cssLibs: [
+ '/web/static/lib/nvd3/nv.d3.css'
+ ],
+ jsLibs: [
+ '/web/static/lib/nvd3/d3.v3.js',
+ '/web/static/lib/nvd3/nv.d3.js',
+ '/web/static/src/js/libs/nvd3.js'
+ ],
init: function () {
this._super.apply(this, arguments);
this.graph_type = this.attrs.graph_type;
@@ -2069,7 +2076,6 @@ var JournalDashboardGraph = AbstractField.extend({
this._customizeChart();
}
},
-
});
/**
@@ -2282,26 +2288,15 @@ var FieldDomain = AbstractField.extend({
*/
var AceEditor = DebouncedField.extend({
template: "AceEditor",
+ jsLibs: [
+ '/web/static/lib/ace/ace.odoo-custom.js',
+ [
+ '/web/static/lib/ace/mode-python.js',
+ '/web/static/lib/ace/mode-xml.js'
+ ]
+ ],
events: {}, // events are triggered manually for this debounced widget
/**
- * @override willStart from AbstractField (Widget)
- * Loads the ace library if not already loaded.
- *
- * @returns {Deferred}
- */
- willStart: function () {
- var loadJSDef;
- if (!window.ace) {
- loadJSDef = ajax.loadJS('/web/static/lib/ace/ace.odoo-custom.js').then(function () {
- return $.when(
- ajax.loadJS('/web/static/lib/ace/mode-python.js'),
- ajax.loadJS('/web/static/lib/ace/mode-xml.js')
- );
- });
- }
- return $.when(this._super.apply(this, arguments), loadJSDef);
- },
- /**
* @override start from AbstractField (Widget)
*
* @returns {Deferred}