From c9c986d157ad857f5a8c2bda013d035fadef090f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Rodr=C3=ADguez?= Date: Sun, 23 Feb 2020 14:36:28 -0400 Subject: [PATCH] [REF] web_m2x_options: eslint fix --- web_m2x_options/static/src/js/form.js | 412 +++++++++++++++----------- 1 file changed, 247 insertions(+), 165 deletions(-) diff --git a/web_m2x_options/static/src/js/form.js b/web_m2x_options/static/src/js/form.js index cb1ffc76d..579d9b978 100644 --- a/web_m2x_options/static/src/js/form.js +++ b/web_m2x_options/static/src/js/form.js @@ -1,15 +1,15 @@ /* Copyright 2016 0k.io,ACSONE SA/NV * * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */ -odoo.define('web_m2x_options.web_m2x_options', function (require) { +odoo.define("web_m2x_options.web_m2x_options", function(require) { "use strict"; - var core = require('web.core'), - data = require('web.data'), - Dialog = require('web.Dialog'), - view_dialogs = require('web.view_dialogs'), - relational_fields = require('web.relational_fields'), - rpc = require('web.rpc'); + var core = require("web.core"), + data = require("web.data"), + Dialog = require("web.Dialog"), + view_dialogs = require("web.view_dialogs"), + relational_fields = require("web.relational_fields"), + rpc = require("web.rpc"); var _t = core._t, FieldMany2ManyTags = relational_fields.FieldMany2ManyTags, @@ -18,80 +18,92 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { var web_m2x_options = rpc.query({ model: "ir.config_parameter", - method: 'get_web_m2x_options', + method: "get_web_m2x_options", }); var M2ODialog = Dialog.extend({ template: "M2ODialog", - init: function (parent, name, value) { + init: function(parent, name, value) { this.name = name; this.value = value; this._super(parent, { title: _.str.sprintf(_t("Create a %s"), this.name), - size: 'medium', - buttons: [{ - text: _t('Create'), - classes: 'btn-primary', - click: function () { - if (this.$("input").val() !== '') { - this.trigger_up('quick_create', {value: this.$('input').val()}); - this.close(true); - } else { - this.$("input").focus(); - } + size: "medium", + buttons: [ + { + text: _t("Create"), + classes: "btn-primary", + click: function() { + if (this.$("input").val() !== "") { + this.trigger_up("quick_create", { + value: this.$("input").val(), + }); + this.close(true); + } else { + this.$("input").focus(); + } + }, }, - }, { - text: _t('Create and edit'), - classes: 'btn-primary', - close: true, - click: function () { - this.trigger_up('search_create_popup', { - view_type: 'form', - value: this.$('input').val(), - }); + { + text: _t("Create and edit"), + classes: "btn-primary", + close: true, + click: function() { + this.trigger_up("search_create_popup", { + view_type: "form", + value: this.$("input").val(), + }); + }, }, - }, { - text: _t('Cancel'), - close: true, - }], + { + text: _t("Cancel"), + close: true, + }, + ], }); }, - start: function () { - this.$("p").text(_.str.sprintf(_t("You are creating a new %s, are you sure it does not exist yet?"), this.name)); + start: function() { + this.$("p").text( + _.str.sprintf( + _t( + "You are creating a new %s, are you sure it does not exist yet?" + ), + this.name + ) + ); this.$("input").val(this.value); }, /** * @override - * @param {boolean} isSet + * @param {Boolean} isSet */ - close: function (isSet) { + close: function(isSet) { this.isSet = isSet; this._super.apply(this, arguments); }, /** * @override */ - destroy: function () { + destroy: function() { if (!this.isSet) { - this.trigger_up('closed_unset'); + this.trigger_up("closed_unset"); } this._super.apply(this, arguments); }, }); FieldMany2One.include({ - - start: function () { + start: function() { this._super.apply(this, arguments); return this.get_options(); }, - get_options: function () { + get_options: function() { var self = this; if (_.isUndefined(this.ir_options_loaded)) { this.ir_options_loaded = $.Deferred(); this.ir_options = {}; - web_m2x_options.then(function (records) { + web_m2x_options.then(function(records) { _(records).each(function(record) { self.ir_options[record.key] = record.value; }); @@ -101,36 +113,41 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { return $.when(); }, - is_option_set: function (option) { - if (_.isUndefined(option)) - return false; - if (typeof option === 'string') - return option === 'true' || option === 'True'; - if (typeof option === 'boolean') - return option; - return false + is_option_set: function(option) { + if (_.isUndefined(option)) return false; + if (typeof option === "string") + return option === "true" || option === "True"; + if (typeof option === "boolean") return option; + return false; }, - _onInputFocusout: function () { - var m2o_dialog_opt = this.is_option_set(this.nodeOptions.m2o_dialog) || _.isUndefined(this.nodeOptions.m2o_dialog) && this.is_option_set(this.ir_options['web_m2x_options.m2o_dialog']) || _.isUndefined(this.nodeOptions.m2o_dialog) && _.isUndefined(this.ir_options['web_m2x_options.m2o_dialog']); + _onInputFocusout: function() { + var m2o_dialog_opt = + this.is_option_set(this.nodeOptions.m2o_dialog) || + (_.isUndefined(this.nodeOptions.m2o_dialog) && + this.is_option_set( + this.ir_options["web_m2x_options.m2o_dialog"] + )) || + (_.isUndefined(this.nodeOptions.m2o_dialog) && + _.isUndefined(this.ir_options["web_m2x_options.m2o_dialog"])); if (this.can_create && this.floating && m2o_dialog_opt) { new M2ODialog(this, this.string, this.$input.val()).open(); } }, - _search: function (search_val) { + _search: function(search_val) { var def = new Promise(resolve => { - // add options limit used to change number of selections record + // Add options limit used to change number of selections record // returned. - if (!_.isUndefined(self.ir_options['web_m2x_options.limit'])) { - this.limit = parseInt(self.ir_options['web_m2x_options.limit'], 10); + if (!_.isUndefined(self.ir_options["web_m2x_options.limit"])) { + this.limit = parseInt(self.ir_options["web_m2x_options.limit"], 10); } - if (typeof self.nodeOptions.limit === 'number') { + if (typeof self.nodeOptions.limit === "number") { self.limit = self.nodeOptions.limit; } - // add options field_color and colors to color item(s) depending on field_color value + // Add options field_color and colors to color item(s) depending on field_color value self.field_color = self.nodeOptions.field_color; self.colors = self.nodeOptions.colors; @@ -139,7 +156,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { var blacklisted_ids = self._getSearchBlacklist(); if (blacklisted_ids.length > 0) { - domain.push(['id', 'not in', blacklisted_ids]); + domain.push(["id", "not in", blacklisted_ids]); } self._rpc({ @@ -151,13 +168,14 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { operator: "ilike", limit: self.limit + 1, context: context, - } + }, }).then(result => { - // possible selections for the m2o + // Possible selections for the m2o var values = _.map(result, x => { x[1] = self._getDisplayName(x[1]); return { - label: _.str.escapeHTML(x[1].trim()) || data.noDisplayContent, + label: + _.str.escapeHTML(x[1].trim()) || data.noDisplayContent, value: x[1], name: x[1], id: x[0], @@ -172,9 +190,9 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { } self._rpc({ model: self.field.relation, - method: 'search_read', + method: "search_read", fields: [self.field_color], - domain: [['id', 'in', value_ids]] + domain: [["id", "in", value_ids]], }).then(objects => { for (var index in objects) { for (var index_value in values) { @@ -182,96 +200,162 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { // Find value in values by comparing ids var value = values[index_value]; // Find color with field value as key - var color = self.colors[objects[index][self.field_color]] || 'black'; - value.label = '' + value.label + ''; + var color = + self.colors[ + objects[index][self.field_color] + ] || "black"; + value.label = + '' + + value.label + + ""; break; } } } resolve(values); - }) - + }); } - // search more... if more results that max - var can_search_more = (self.nodeOptions && self.is_option_set(self.nodeOptions.search_more)), - search_more_undef = _.isUndefined(self.nodeOptions.search_more) && _.isUndefined(self.ir_options['web_m2x_options.search_more']), - search_more = self.is_option_set(self.ir_options['web_m2x_options.search_more']); + // Search more... if more results that max + var can_search_more = + self.nodeOptions && + self.is_option_set(self.nodeOptions.search_more), + search_more_undef = + _.isUndefined(self.nodeOptions.search_more) && + _.isUndefined( + self.ir_options["web_m2x_options.search_more"] + ), + search_more = self.is_option_set( + self.ir_options["web_m2x_options.search_more"] + ); if (values.length > self.limit) { values = values.slice(0, self.limit); if (can_search_more || search_more_undef || search_more) { values.push({ - label: _t("Search More..."), - action: function () { - var prom; - if (search_val !== '') { - prom = self._rpc({ - model: self.field.relation, - method: 'name_search', - kwargs: { - name: search_val, - args: domain, - operator: "ilike", - limit: self.SEARCH_MORE_LIMIT, - context: context, - }, - }); - } - Promise.resolve(prom).then(function (results) { - var dynamicFilters; - if (results) { - var ids = _.map(results, function (x) { - return x[0]; + label: _t("Search More..."), + action: function() { + var prom = []; + if (search_val !== "") { + prom = self._rpc({ + model: self.field.relation, + method: "name_search", + kwargs: { + name: search_val, + args: domain, + operator: "ilike", + limit: self.SEARCH_MORE_LIMIT, + context: context, + }, }); - dynamicFilters = [{ - description: _.str.sprintf(_t('Quick search: %s'), search_val), - domain: [['id', 'in', ids]], - }]; } - self._searchCreatePopup("search", false, {}, dynamicFilters); - }); - }, - classname: 'o_m2o_dropdown_option', - }); + Promise.resolve(prom).then(function(results) { + var dynamicFilters = []; + if (results) { + var ids = _.map(results, function(x) { + return x[0]; + }); + dynamicFilters = [ + { + description: _.str.sprintf( + _t("Quick search: %s"), + search_val + ), + domain: [["id", "in", ids]], + }, + ]; + } + self._searchCreatePopup( + "search", + false, + {}, + dynamicFilters + ); + }); + }, + classname: "o_m2o_dropdown_option", + }); } } var create_enabled = self.can_create && !self.nodeOptions.no_create; - // quick create - var raw_result = _.map(result, function (x) { return x[1]; }); + // Quick create + var raw_result = _.map(result, function(x) { + return x[1]; + }); var quick_create = self.is_option_set(self.nodeOptions.create), quick_create_undef = _.isUndefined(self.nodeOptions.create), - m2x_create_undef = _.isUndefined(self.ir_options['web_m2x_options.create']), - m2x_create = self.is_option_set(self.ir_options['web_m2x_options.create']); - var show_create = (!self.nodeOptions && (m2x_create_undef || m2x_create)) || (self.nodeOptions && (quick_create || (quick_create_undef && (m2x_create_undef || m2x_create)))); - if (create_enabled && !self.nodeOptions.no_quick_create && - search_val.length > 0 && !_.contains(raw_result, search_val) && - show_create) { + m2x_create_undef = _.isUndefined( + self.ir_options["web_m2x_options.create"] + ), + m2x_create = self.is_option_set( + self.ir_options["web_m2x_options.create"] + ); + var show_create = + (!self.nodeOptions && (m2x_create_undef || m2x_create)) || + (self.nodeOptions && + (quick_create || + (quick_create_undef && + (m2x_create_undef || m2x_create)))); + if ( + create_enabled && + !self.nodeOptions.no_quick_create && + search_val.length > 0 && + !_.contains(raw_result, search_val) && + show_create + ) { values.push({ - label: _.str.sprintf(_t('Create "%s"'), - $('').text(search_val).html()), + label: _.str.sprintf( + _t('Create "%s"'), + $("") + .text(search_val) + .html() + ), action: self._quickCreate.bind(self, search_val), - classname: 'o_m2o_dropdown_option' + classname: "o_m2o_dropdown_option", }); } - // create and edit ... + // Create and edit ... - var create_edit = self.is_option_set(self.nodeOptions.create) || self.is_option_set(self.nodeOptions.create_edit), - create_edit_undef = _.isUndefined(self.nodeOptions.create) && _.isUndefined(self.nodeOptions.create_edit), - m2x_create_edit_undef = _.isUndefined(self.ir_options['web_m2x_options.create_edit']), - m2x_create_edit = self.is_option_set(self.ir_options['web_m2x_options.create_edit']); - var show_create_edit = (!self.nodeOptions && (m2x_create_edit_undef || m2x_create_edit)) || (self.nodeOptions && (create_edit || (create_edit_undef && (m2x_create_edit_undef || m2x_create_edit)))); - if (create_enabled && !self.nodeOptions.no_create_edit && show_create_edit) { - var createAndEditAction = function () { + var create_edit = + self.is_option_set(self.nodeOptions.create) || + self.is_option_set(self.nodeOptions.create_edit), + create_edit_undef = + _.isUndefined(self.nodeOptions.create) && + _.isUndefined(self.nodeOptions.create_edit), + m2x_create_edit_undef = _.isUndefined( + self.ir_options["web_m2x_options.create_edit"] + ), + m2x_create_edit = self.is_option_set( + self.ir_options["web_m2x_options.create_edit"] + ); + var show_create_edit = + (!self.nodeOptions && + (m2x_create_edit_undef || m2x_create_edit)) || + (self.nodeOptions && + (create_edit || + (create_edit_undef && + (m2x_create_edit_undef || m2x_create_edit)))); + if ( + create_enabled && + !self.nodeOptions.no_create_edit && + show_create_edit + ) { + var createAndEditAction = function() { // Clear the value in case the user clicks on discard - self.$('input').val(''); - return self._searchCreatePopup("form", false, self._createContext(search_val)); + self.$("input").val(""); + return self._searchCreatePopup( + "form", + false, + self._createContext(search_val) + ); }; values.push({ label: _t("Create and Edit..."), action: createAndEditAction, - classname: 'o_m2o_dropdown_option', + classname: "o_m2o_dropdown_option", }); } else if (values.length === 0) { values.push({ @@ -283,69 +367,67 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { resolve(values); } }); - }); this.orderer.add(def); return def; - } + }, }); FieldMany2ManyTags.include({ events: _.extend({}, FieldMany2ManyTags.prototype.events, { - 'click .badge': '_onOpenBadge', + "click .badge": "_onOpenBadge", }), - _onDeleteTag: function (event) { + _onDeleteTag: function(event) { var result = this._super.apply(this, arguments); event.stopPropagation(); return result; }, - is_option_set: function (option) { - if (_.isUndefined(option)) - return false; - if (typeof option === 'string') - return option === 'true' || option === 'True'; - if (typeof option === 'boolean') - return option; - return false + is_option_set: function(option) { + if (_.isUndefined(option)) return false; + if (typeof option === "string") + return option === "true" || option === "True"; + if (typeof option === "boolean") return option; + return false; }, - _onOpenBadge: function (event) { + _onOpenBadge: function(event) { var self = this; - var open = (self.nodeOptions && self.is_option_set(self.nodeOptions.open)); + var open = self.nodeOptions && self.is_option_set(self.nodeOptions.open); if (open) { var context = self.record.getContext(self.recordParams); - var id = parseInt($(event.currentTarget).data('id'), 10); + var id = parseInt($(event.currentTarget).data("id"), 10); - if (self.mode === 'readonly') { + if (self.mode === "readonly") { event.preventDefault(); event.stopPropagation(); self._rpc({ - model: self.field.relation, - method: 'get_formview_action', - args: [[id]], - context: context, - }) - .then(function (action) { - self.trigger_up('do_action', {action: action}); - }); - } - else { + model: self.field.relation, + method: "get_formview_action", + args: [[id]], + context: context, + }).then(function(action) { + self.trigger_up("do_action", {action: action}); + }); + } else { $.when( self._rpc({ model: self.field.relation, - method: 'get_formview_id', + method: "get_formview_id", args: [[id]], context: context, }), self._rpc({ model: self.field.relation, - method: 'check_access_rights', - kwargs: {operation: 'write', raise_exception: false} + method: "check_access_rights", + kwargs: {operation: "write", raise_exception: false}, }) - ).then(function (view_id, write_access) { - var can_write = 'can_write' in self.attrs ? JSON.parse(self.attrs.can_write) : true; + ).then(function(view_id, write_access) { + var can_write = + "can_write" in self.attrs + ? JSON.parse(self.attrs.can_write) + : true; new view_dialogs.FormViewDialog(self, { res_model: self.field.relation, res_id: id, @@ -353,14 +435,16 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { title: _t("Open: ") + self.string, view_id: view_id, readonly: !can_write || !write_access, - on_saved: function (record, changed) { + on_saved: function(record, changed) { if (changed) { - self._setValue(self.value.data, {forceChange: true}); - self.trigger_up('reload', {db_id: self.value.id}); + self._setValue(self.value.data, { + forceChange: true, + }); + self.trigger_up("reload", {db_id: self.value.id}); } }, }).open(); - }) + }); } } }, @@ -368,14 +452,12 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) { FormFieldMany2ManyTags.include({ events: _.extend({}, FormFieldMany2ManyTags.prototype.events, { - 'click .badge': '_onOpenBadge', + "click .badge": "_onOpenBadge", }), - _onOpenBadge: function (event) { + _onOpenBadge: function(event) { var open = this.is_option_set(this.nodeOptions.open); - var no_color_picker = this.is_option_set( - this.nodeOptions.no_color_picker - ); + var no_color_picker = this.is_option_set(this.nodeOptions.no_color_picker); this._super.apply(this, arguments); if (!open && !no_color_picker) { this._onOpenColorPicker(event);