summaryrefslogtreecommitdiff
path: root/addons/google_spreadsheet/static/src
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/google_spreadsheet/static/src
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/google_spreadsheet/static/src')
-rw-r--r--addons/google_spreadsheet/static/src/js/add_to_google_spreadsheet_menu.js63
-rw-r--r--addons/google_spreadsheet/static/src/xml/addtospreadsheet.xml7
2 files changed, 70 insertions, 0 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
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;
+});
diff --git a/addons/google_spreadsheet/static/src/xml/addtospreadsheet.xml b/addons/google_spreadsheet/static/src/xml/addtospreadsheet.xml
new file mode 100644
index 00000000..12fe663c
--- /dev/null
+++ b/addons/google_spreadsheet/static/src/xml/addtospreadsheet.xml
@@ -0,0 +1,7 @@
+<template>
+ <t t-name="AddToGoogleSpreadsheetMenu" owl="1">
+ <li class="o_menu_item o_add_to_spreadsheet" role="menuitem">
+ <a class="dropdown-item" href="#" t-on-click.prevent="_onAddToSpreadsheet">Add to Google Spreadsheet</a>
+ </li>
+ </t>
+</template>