diff options
| author | Julien Mougenot <jum@odoo.com> | 2020-03-11 09:38:29 +0000 |
|---|---|---|
| committer | Julien Mougenot <jum@odoo.com> | 2020-03-13 14:08:33 +0000 |
| commit | e68d3bb09d1f844387ceb20aa76022ace48507d9 (patch) | |
| tree | d238fa35dcb11e5628112377a9daf569405ca74b /addons/google_spreadsheet/static/src/js | |
| parent | 18e5416636b19b0953b1e6e26bfaeab1ebecce4c (diff) | |
[REF] *: Adapt all modules to new control panel
Adaptation of the code throughout all modules to properly instantiate the newly
refactored control panel and update it accordingly.
Part of task 2196029
Co-authored-by: Mathieu Duckerts-Antoine <dam@odoo.com>
Diffstat (limited to 'addons/google_spreadsheet/static/src/js')
| -rw-r--r-- | addons/google_spreadsheet/static/src/js/add_to_google_spreadsheet_menu.js | 141 |
1 files changed, 51 insertions, 90 deletions
diff --git a/addons/google_spreadsheet/static/src/js/add_to_google_spreadsheet_menu.js b/addons/google_spreadsheet/static/src/js/add_to_google_spreadsheet_menu.js index d0b608f4f36..4d8ac9552cc 100644 --- a/addons/google_spreadsheet/static/src/js/add_to_google_spreadsheet_menu.js +++ b/addons/google_spreadsheet/static/src/js/add_to_google_spreadsheet_menu.js @@ -1,102 +1,63 @@ odoo.define('board.AddToGoogleSpreadsheetMenu', function (require) { -"use strict"; + "use strict"; -var ActionManager = require('web.ActionManager'); -var core = require('web.core'); -var data = require('web.data'); -var Domain = require('web.Domain'); -var favorites_submenus_registry = require('web.favorites_submenus_registry'); -var pyUtils = require('web.py_utils'); -var Widget = require('web.Widget'); + const Domain = require('web.Domain'); + const DropdownMenuItem = require('web.DropdownMenuItem'); + const FavoriteMenu = require('web.FavoriteMenu'); -var QWeb = core.qweb; - -var AddToGoogleSpreadsheetMenu = Widget.extend({ - events: _.extend({}, Widget.prototype.events, { - 'click .add_to_spreadsheet': '_onAddToSpreadsheetClick', - }), - /** - * @override - * @param {Object} params - * @param {Object} params.action an ir.actions description - */ - init: function (parent, params) { - this._super(parent); - this.action = params.action; - }, - /** - * @override - */ - start: function () { - if (this.action.type === 'ir.actions.act_window') { - this._render(); - } - return this._super.apply(this, arguments); - }, - - //-------------------------------------------------------------------------- - // Private - //-------------------------------------------------------------------------- - - /** - * @private - */ - _addToSpreadsheet: function () { - // AAB: trigger_up an event that will be intercepted by the controller, - // as soon as the controller is the parent of the control panel - var actionManager = this.findAncestor(function (ancestor) { - return ancestor instanceof ActionManager; - }); - var controller = actionManager.getCurrentController(); - var searchQuery; - // TO DO: for now the domains in query are evaluated. - // This should be changed I think. - this.trigger_up('get_search_query', { - callback: function (query) { - searchQuery = query; - } - }); - var modelName = this.action.res_model; - var list_view = _.findWhere(controller.widget.actionViews, {type: 'list'}); - var list_view_id = list_view ? list_view.viewID : false; - var domain = searchQuery.domain; - var groupBys = pyUtils.eval('groupbys', searchQuery.groupBys).join(" "); - var ds = new data.DataSet(this, 'google.drive.config'); - - ds.call('set_spreadsheet', [modelName, Domain.prototype.arrayToString(domain), groupBys, list_view_id]) - .then(function (res) { - if (res.url){ - window.open(res.url, '_blank'); - } - }); - }, /** - * Renders the `SearchView.addtogooglespreadsheet` template. + * 'Add to Google spreadsheet' menu * - * @private + * Component consisting only of a button calling the server to add the current + * view to the user's spreadsheet configuration. + * This component is only available in actions of type 'ir.actions.act_window'. + * @extends DropdownMenuItem */ - _render: function () { - var $el = QWeb.render('SearchView.addtogooglespreadsheet', {widget: this}); - this._replaceElement($el); - }, + class AddToGoogleSpreadsheetMenu extends DropdownMenuItem { + + //--------------------------------------------------------------------- + // Handlers + //--------------------------------------------------------------------- + + /** + * @private + */ + async _onAddToSpreadsheet() { + const searchQuery = this.env.controlPanelModel.getQuery(); + const listView = this.env.action.views.find(view => view.type === 'list'); + const modelName = this.env.action.res_model; + const domain = Domain.prototype.arrayToString(searchQuery.domain); + const groupBys = searchQuery.groupBy.join(" "); + const listViewId = listView ? listView.viewID : false; + const result = await this.rpc({ + model: 'google.drive.config', + method: 'set_spreadsheet', + args: [modelName, domain, groupBys, listViewId], + }); + if (result.url) { + // According to MDN doc, one should not use _blank as title. + // todo: find a good name for the new window + window.open(result.url, '_blank'); + } + } - //-------------------------------------------------------------------------- - // Handlers - //-------------------------------------------------------------------------- + //--------------------------------------------------------------------- + // Static + //--------------------------------------------------------------------- - /** - * @private - * @param {jQueryEvent} event - */ - _onAddToSpreadsheetClick: function (event) { - event.preventDefault(); - event.stopPropagation(); - this._addToSpreadsheet(); - }, -}); + /** + * @param {Object} env + * @returns {boolean} + */ + static shouldBeDisplayed(env) { + return env.action.type === 'ir.actions.act_window'; + } + } -favorites_submenus_registry.add('add_to_google_spreadsheet_menu', AddToGoogleSpreadsheetMenu, 20); + AddToGoogleSpreadsheetMenu.props = {}; + AddToGoogleSpreadsheetMenu.template = 'AddToGoogleSpreadsheetMenu'; -return AddToGoogleSpreadsheetMenu; + FavoriteMenu.registry.add('add-to-google-spreadsheet-menu', AddToGoogleSpreadsheetMenu, 20); + return AddToGoogleSpreadsheetMenu; }); |
