You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.7 KiB
74 lines
2.7 KiB
odoo.define('image_capture_upload_widget.CaptureImage', function (require) {
|
|
"use strict";
|
|
const { getDataURLFromFile } = require('web.utils');
|
|
var basicFields =require('web.basic_fields');
|
|
var rpc = require('web.rpc');
|
|
var core = require('web.core');
|
|
var fieldRegistry = require('web.field_registry');
|
|
const toBase64 = file => new Promise((resolve, reject) => {
|
|
const reader = new FileReader();
|
|
reader.readAsDataURL(file);
|
|
reader.onload = () => resolve(reader.result);
|
|
reader.onerror = error => reject(error);
|
|
});
|
|
var QWeb = core.qweb;
|
|
var CaptureImage = basicFields.FieldBinaryImage.extend({
|
|
template: 'CaptureImage',
|
|
events: {
|
|
'click .o_select_file_button': 'onFileEdit',
|
|
'click .o_upload_image_button': 'onFileUpload',
|
|
'click .o_clear_file_button': 'onFileClear'
|
|
},
|
|
onFileEdit: function (ev) {
|
|
var self = this;
|
|
// Create an input element of type file
|
|
var fileInput = document.createElement('input');
|
|
fileInput.type = 'file';
|
|
// Trigger the file selection dialog
|
|
fileInput.click();
|
|
// Handle the selected file
|
|
fileInput.addEventListener('change', async function (event) {
|
|
var file = event.target.files[0];
|
|
if (file) {
|
|
// Perform necessary operations with the selected file
|
|
var file_image = file_splice.split(',')[1]
|
|
//var file_name = ev.target.files[0].name
|
|
var record=rpc.query({
|
|
model: self.model,
|
|
method: 'write',
|
|
args: [[self.res_id], {[self.name] : file_image }],
|
|
}).then(function(){
|
|
window.location.reload();
|
|
});
|
|
// You can also upload the file to the server if needed
|
|
// Implement the desired functionality for file upload
|
|
}
|
|
});
|
|
},
|
|
onFileClear: function (ev) {
|
|
var self = this;
|
|
rpc.query({
|
|
model: self.model,
|
|
method: 'write',
|
|
args: [[self.res_id], {[self.name] : 0 }],
|
|
}).then(function(){
|
|
window.location.reload();
|
|
});
|
|
},
|
|
onFileUpload: function (ev) {
|
|
ev.preventDefault();
|
|
var self = this;
|
|
// Open form using do_action
|
|
var action = {
|
|
type: 'ir.actions.act_window',
|
|
res_model: 'image.capture',
|
|
views: [[false, 'form']],
|
|
target: 'new', // Open the form in a new window/tab
|
|
context: {'model_name': self.model, 'record_id': self.res_id, 'field_name': self.name}
|
|
};
|
|
this.do_action(action);
|
|
},
|
|
});
|
|
fieldRegistry.add('capture_image', CaptureImage);
|
|
return CaptureImage;
|
|
});
|
|
|