odoo16 使用JS实现图片预览
前言:
该模块主要解决form视图中图片字段无法进行预览,可能是odoo底层对form视图的图片字段有特别处理,加上了编辑按钮却没有加载zoom属性,而正常zoom属性加载的话会给img加上'data-tooltip-template'和'data-tooltip-info'属性,所以通过js的方式给加载完成的img加上这两个属性,注意事项在清单文件里面的描述都写了,实力有限只能通过给原图片字段加class和使用js来进行控制望见谅。__init__.py里面是空的不用管。
模块结构:
文件内容:
image_tooltip.js:
odoo.define('tx_image_preview.image_tooltip', function (require) {
"use strict";
var core = require('web.core');
$(document).on('mouseenter', '.zoomable-image-form img', function () {
// 获取图像元素
var $image = $(this);
// 获取最新的图像 src
var imageSrc = $image.attr('src');
// 判断当前图片字段是否为空,如果为空的话系统会自动展示这个图片'/web/static/img/placeholder.png'
if (imageSrc!='/web/static/img/placeholder.png'){
// 给图像添加属性
$image.attr({
'data-tooltip-template': 'web.ImageZoomTooltip',
'data-tooltip-info': JSON.stringify({'url': imageSrc})
});
}
});
$(document).on('mouseleave', '.zoomable-image-form img', function () {
// 移除新增属性
var $image = $(this);
$image.removeAttr('data-tooltip-template data-tooltip-info');
});
});
__manifest__.py:
# -*- coding: utf-8 -*-
{
'name': "tx_image_preview",
'summary': "Image Preview",
'description': """
1. 将目标图片字段加上class属性zoomable-image-form即可。
2. 如果需要对预览尺寸进行调整,可给图片字段新增属性options="{"preview_image":"avatar_256"}",
其中的avatar_256可进行修改,可替换为avatar_128、avatar_512、avatar_1024
3. 以上属性都是在视图中新增,对应组件为widget="image"。
""",
"author": '',
"license": "AGPL-3",
"version": "16.0.1.0.0",
'depends': [],
'data': [
],
'assets': {
'web.assets_backend': [
'/tx_image_preview/static/src/js/image_tooltip.js',
],
},
'application': True
}