From 3751379f1e9a4c215fb6eb898b4ccc67659b9ace Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 10 May 2022 21:51:50 +0700 Subject: initial commit 2 --- .../src/js/add_to_google_spreadsheet_menu.js | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 addons/google_spreadsheet/static/src/js/add_to_google_spreadsheet_menu.js (limited to 'addons/google_spreadsheet/static/src/js') 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 new file mode 100644 index 00000000..c0c566ff --- /dev/null +++ b/addons/google_spreadsheet/static/src/js/add_to_google_spreadsheet_menu.js @@ -0,0 +1,63 @@ +odoo.define('board.AddToGoogleSpreadsheetMenu', function (require) { + "use strict"; + + const Domain = require('web.Domain'); + const DropdownMenuItem = require('web.DropdownMenuItem'); + const FavoriteMenu = require('web.FavoriteMenu'); + + /** + * 'Add to Google spreadsheet' menu + * + * 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 + */ + class AddToGoogleSpreadsheetMenu extends DropdownMenuItem { + + //--------------------------------------------------------------------- + // Handlers + //--------------------------------------------------------------------- + + /** + * @private + */ + async _onAddToSpreadsheet() { + const searchQuery = this.env.searchModel.get('query'); + 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'); + } + } + + //--------------------------------------------------------------------- + // Static + //--------------------------------------------------------------------- + + /** + * @param {Object} env + * @returns {boolean} + */ + static shouldBeDisplayed(env) { + return env.action.type === 'ir.actions.act_window'; + } + } + + AddToGoogleSpreadsheetMenu.props = {}; + AddToGoogleSpreadsheetMenu.template = 'AddToGoogleSpreadsheetMenu'; + + FavoriteMenu.registry.add('add-to-google-spreadsheet-menu', AddToGoogleSpreadsheetMenu, 20); + + return AddToGoogleSpreadsheetMenu; +}); -- cgit v1.2.3