summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/fields/basic_fields.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/fields/basic_fields.js')
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js88
1 files changed, 68 insertions, 20 deletions
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js
index 3af10dbb930..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');
@@ -1460,6 +1459,58 @@ var StateSelectionWidget = AbstractField.extend({
},
});
+var FavoriteWidget = AbstractField.extend({
+ className: 'o_favorite',
+ events: {
+ 'click': '_setFavorite'
+ },
+ supportedFieldTypes: ['boolean'],
+
+ //--------------------------------------------------------------------------
+ // Public
+ //--------------------------------------------------------------------------
+
+ /**
+ * A boolean field is always set since false is a valid value.
+ *
+ * @override
+ */
+ isSet: function () {
+ return true;
+ },
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * Render favorite icon based on state
+ *
+ * @override
+ * @private
+ */
+ _render: function () {
+ var template = this.attrs.nolabel ? '<a href="#"><i class="fa %s" title="%s"></i></a>' : '<a href="#"><i class="fa %s"></i> %s</a>';
+ this.$el.empty().append(_.str.sprintf(template, this.value ? 'fa-star' : 'fa-star-o', this.value ? _t('Remove from Favorites') : _t('Add to Favorites')));
+ },
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * Toggle favorite state
+ *
+ * @private
+ * @param {MouseEvent} event
+ */
+ _setFavorite: function (event) {
+ event.preventDefault();
+ event.stopPropagation();
+ this._setValue(!this.value);
+ },
+});
+
var LabelSelection = AbstractField.extend({
supportedFieldTypes: ['selection'],
@@ -1897,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;
@@ -2017,7 +2076,6 @@ var JournalDashboardGraph = AbstractField.extend({
this._customizeChart();
}
},
-
});
/**
@@ -2230,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}
@@ -2361,6 +2408,7 @@ return {
AttachmentImage: AttachmentImage,
LabelSelection: LabelSelection,
StateSelectionWidget: StateSelectionWidget,
+ FavoriteWidget: FavoriteWidget,
PriorityWidget: PriorityWidget,
StatInfo: StatInfo,
UrlWidget: UrlWidget,