diff options
| author | Mathieu Duckerts-Antoine <dam@odoo.com> | 2018-12-06 12:40:07 +0000 |
|---|---|---|
| committer | Géry Debongnie <ged@odoo.com> | 2018-12-07 13:16:11 +0000 |
| commit | 1e0b370b162b05ac6955fa0b4760a32d2ff876d5 (patch) | |
| tree | 1a1774420727787349e603652f8f5a5035099154 | |
| parent | 38dc5c18b4d407982351bb37b1c0a06d6dc20b5f (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
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> |
