odoo.define('mrp.controllerMixin', function (require) {
'use strict';
const { _t, qweb } = require('web.core');
const fileUploadMixin = require('web.fileUploadMixin');
const DocumentViewer = require('mrp.MrpDocumentViewer');
const MrpDocumentsControllerMixin = Object.assign({}, fileUploadMixin, {
events: {
'click .o_mrp_documents_kanban_upload': '_onClickMrpDocumentsUpload',
},
custom_events: Object.assign({}, fileUploadMixin.custom_events, {
kanban_image_clicked: '_onKanbanPreview',
upload_file: '_onUploadFile',
}),
//--------------------------------------------------------------------------
// Public
//--------------------------------------------------------------------------
/**
* Called right after the reload of the view.
*/
async reload() {
await this._renderFileUploads();
},
/**
* @override
* @param {jQueryElement} $node
*/
renderButtons($node) {
this.$buttons = $(qweb.render('MrpDocumentsKanbanView.buttons'));
this.$buttons.appendTo($node);
},
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
/**
* @override
*/
_getFileUploadRoute() {
return '/mrp/upload_attachment';
},
/**
* @override
* @param {integer} param0.recordId
*/
_makeFileUploadFormDataKeys() {
const context = this.model.get(this.handle, { raw: true }).getContext();
return {
res_id: context.default_res_id,
res_model: context.default_res_model,
};
},
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------
/**
* @private
*/
_onClickMrpDocumentsUpload() {
const $uploadInput = $('', {
type: 'file',
name: 'files[]',
multiple: 'multiple'
});
$uploadInput.on('change', async ev => {
await this._uploadFiles(ev.target.files);
$uploadInput.remove();
});
$uploadInput.click();
},
/**
* Handles custom event to display the document viewer.
*
* @private
* @param {OdooEvent} ev
* @param {integer} ev.data.recordID
* @param {Array