blob: c0c566ffb5460d7243f1ad8eb098ec9b247069d8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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;
});
|