[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
This commit is contained in:
committed by
Géry Debongnie
parent
38dc5c18b4
commit
1e0b370b16
@@ -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;
|
||||
|
||||
});
|
||||
@@ -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');
|
||||
}
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
});
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<t t-name="SearchView.addtogooglespreadsheet">
|
||||
<a class="add-to-spreadsheet dropdown-item">Add to Google Spreadsheet</a>
|
||||
</t>
|
||||
</template>
|
||||
<div t-name="SearchView.addtogooglespreadsheet">
|
||||
<a class="add_to_spreadsheet dropdown-item">Add to Google Spreadsheet</a>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user