From cd89ceef9aed766df8f8e180ddac488d8e59dd3a Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Fri, 5 Dec 2014 19:02:10 +0100 Subject: [PATCH] web_tree_widget --- web_tree_image/__init__.py | 0 web_tree_image/__openerp__.py | 51 +++++++++++++++++++ .../static/src/js/web_tree_image.js | 34 +++++++++++++ web_tree_image/static/src/xml/widget.xml | 6 +++ web_tree_image/view/assets.xml | 10 ++++ 5 files changed, 101 insertions(+) create mode 100644 web_tree_image/__init__.py create mode 100644 web_tree_image/__openerp__.py create mode 100644 web_tree_image/static/src/js/web_tree_image.js create mode 100644 web_tree_image/static/src/xml/widget.xml create mode 100644 web_tree_image/view/assets.xml diff --git a/web_tree_image/__init__.py b/web_tree_image/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/web_tree_image/__openerp__.py b/web_tree_image/__openerp__.py new file mode 100644 index 00000000..b82000eb --- /dev/null +++ b/web_tree_image/__openerp__.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +{ + "name": "Show images in tree views", + "version": "1.0", + "author": "Therp BV", + "description": """\ +This module defines a tree image widget, to be used with function fields of +type character. Use widget='tree_image' in your view definition. Optionally, set +a 'height' tag. Default height is 16px. + +The content of the field can be any of the following: + +* the absolute or relative location of an image. For example, \ +"//static/src/img/youricon.png" + +* a standard icon from the web distribution, without path or extension, For \ +example, 'gtk-open' + +* A dynamic image in a data url base 64 format. To show a regular image field \ +from the model, use a function field wrapper that retrieves the image with \ +bin_size=False in the context, and prefix with 'data:image/png;base64,' + """, + 'depends': [ + 'web', + ], + 'qweb': [ + 'static/src/xml/widget.xml', + ], + 'data': [ + 'view/assets.xml', + ], +} diff --git a/web_tree_image/static/src/js/web_tree_image.js b/web_tree_image/static/src/js/web_tree_image.js new file mode 100644 index 00000000..cd97d39b --- /dev/null +++ b/web_tree_image/static/src/js/web_tree_image.js @@ -0,0 +1,34 @@ +/* + OpenERP, Open Source Management Solution + This module copyright (C) 2014 Therp BV (). + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +openerp.web_tree_image = function (instance) { + instance.web.list.Image = instance.web.list.Column.extend({ + /* Return an image tag */ + format: function (row_data, options) { + if (!row_data[this.id] || !row_data[this.id].value) { return ''; } + var src; + if (!/\//.test(row_data[this.id].value)) { + src = '/web/static/src/img/icons/' + row_data[this.id].value + '.png'; + } else { + src = row_data[this.id].value; + } + return instance.web.qweb.render('ListView.row.image', {widget: this, src: src}); + } + }); + instance.web.list.columns.add('field.tree_image', 'instance.web.list.Image'); +}; diff --git a/web_tree_image/static/src/xml/widget.xml b/web_tree_image/static/src/xml/widget.xml new file mode 100644 index 00000000..cbd1bc0b --- /dev/null +++ b/web_tree_image/static/src/xml/widget.xml @@ -0,0 +1,6 @@ + + + + diff --git a/web_tree_image/view/assets.xml b/web_tree_image/view/assets.xml new file mode 100644 index 00000000..fa79d63e --- /dev/null +++ b/web_tree_image/view/assets.xml @@ -0,0 +1,10 @@ + + + + + +