summaryrefslogtreecommitdiff
path: root/addons/google_spreadsheet
diff options
context:
space:
mode:
authorMathieu Duckerts-Antoine <dam@odoo.com>2018-12-06 12:40:07 +0000
committerGéry Debongnie <ged@odoo.com>2018-12-07 13:16:11 +0000
commit1e0b370b162b05ac6955fa0b4760a32d2ff876d5 (patch)
tree1a1774420727787349e603652f8f5a5035099154 /addons/google_spreadsheet
parent38dc5c18b4d407982351bb37b1c0a06d6dc20b5f (diff)
[FIX] google_spreadsheet: adapt code to refactoring
This commit adapts the code for the 'Add to Google Spreadsheet' entry in the Favorites menu, according to the large refactoring of the SearchView/ControlPanelView in web. Part of task 1893568
Diffstat (limited to 'addons/google_spreadsheet')
-rw-r--r--addons/google_spreadsheet/static/src/js/add_to_google_spreadsheet_menu.js102
-rw-r--r--addons/google_spreadsheet/static/src/js/search.js48
-rw-r--r--addons/google_spreadsheet/static/src/xml/addtospreadsheet.xml8
-rw-r--r--addons/google_spreadsheet/views/google_spreadsheet_templates.xml2
4 files changed, 107 insertions, 53 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 00000000000..e1390f7844d
--- /dev/null
+++ b/addons/google_spreadsheet/static/src/js/add_to_google_spreadsheet_menu.js
@@ -0,0 +1,102 @@
+odoo.define('board.AddToGoogleSpreadsheetMenu', function (require) {
+"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');
+
+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])
+ .done(function (res) {
+ if (res.url){
+ window.open(res.url, '_blank');
+ }
+ });
+ },
+ /**
+ * Renders the `SearchView.addtogooglespreadsheet` template.
+ *
+ * @private
+ */
+ _render: function () {
+ var $el = QWeb.render('SearchView.addtogooglespreadsheet', {widget: this});
+ this._replaceElement($el);
+ },
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ * @param {jQueryEvent} event
+ */
+ _onAddToSpreadsheetClick: function (event) {
+ event.preventDefault();
+ event.stopPropagation();
+ this._addToSpreadsheet();
+ },
+});
+
+favorites_submenus_registry.add('add_to_google_spreadsheet_menu', AddToGoogleSpreadsheetMenu, 20);
+
+return AddToGoogleSpreadsheetMenu;
+
+});
diff --git a/addons/google_spreadsheet/static/src/js/search.js b/addons/google_spreadsheet/static/src/js/search.js
deleted file mode 100644
index 2177407520b..00000000000
--- a/addons/google_spreadsheet/static/src/js/search.js
+++ /dev/null
@@ -1,48 +0,0 @@
-odoo.define('google_spreadsheet.google.spreadsheet', function (require) {
-"use strict";
-
-var ActionManager = require('web.ActionManager');
-var core = require('web.core');
-var data = require('web.data');
-var Domain = require('web.Domain');
-var FavoriteMenu = require('web.FavoriteMenu');
-var pyUtils = require('web.py_utils');
-
-var QWeb = core.qweb;
-
-FavoriteMenu.include({
- start: function () {
- this._super();
- if (this.action.type === 'ir.actions.act_window') {
- this.$('.o_favorites_menu').append(QWeb.render('SearchView.addtogooglespreadsheet'));
- this.$('.add-to-spreadsheet').click(this.add_to_spreadsheet.bind(this));
- }
- },
- add_to_spreadsheet: 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 am = this.findAncestor(function (a) {
- return a instanceof ActionManager;
- });
- var controller = am.getCurrentController();
- var sv_data = this.searchview.build_search_data(),
- model = this.searchview.dataset.model,
- list_view = _.findWhere(controller.widget.actionViews, {type: 'list'}),
- list_view_id = list_view ? list_view.viewID : false,
- domain = [],
- groupbys = pyUtils.eval('groupbys', sv_data.groupbys).join(" "),
- ds = new data.DataSet(this, 'google.drive.config');
-
- _.each(sv_data.domains, function (d) {
- domain.push.apply(domain, Domain.prototype.stringToArray(d));
- });
- ds.call('set_spreadsheet', [model, Domain.prototype.arrayToString(domain), groupbys, list_view_id])
- .done(function (res) {
- if (res.url){
- window.open(res.url, '_blank');
- }
- });
- },
-});
-
-});
diff --git a/addons/google_spreadsheet/static/src/xml/addtospreadsheet.xml b/addons/google_spreadsheet/static/src/xml/addtospreadsheet.xml
index b8313309987..c86afe0b3fd 100644
--- a/addons/google_spreadsheet/static/src/xml/addtospreadsheet.xml
+++ b/addons/google_spreadsheet/static/src/xml/addtospreadsheet.xml
@@ -1,5 +1,5 @@
<template>
-<t t-name="SearchView.addtogooglespreadsheet">
- <a class="add-to-spreadsheet dropdown-item">Add to Google Spreadsheet</a>
-</t>
-</template> \ No newline at end of file
+ <div t-name="SearchView.addtogooglespreadsheet">
+ <a class="add_to_spreadsheet dropdown-item">Add to Google Spreadsheet</a>
+ </div>
+</template>
diff --git a/addons/google_spreadsheet/views/google_spreadsheet_templates.xml b/addons/google_spreadsheet/views/google_spreadsheet_templates.xml
index fd2fc66bffd..dffccdd0168 100644
--- a/addons/google_spreadsheet/views/google_spreadsheet_templates.xml
+++ b/addons/google_spreadsheet/views/google_spreadsheet_templates.xml
@@ -3,7 +3,7 @@
<template id="assets_backend" name="google_spreadsheet assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
- <script type="text/javascript" src="/google_spreadsheet/static/src/js/search.js"></script>
+ <script type="text/javascript" src="/google_spreadsheet/static/src/js/add_to_google_spreadsheet_menu.js"></script>
</xpath>
</template>