changeset a84cf40d5ed9 in sao:default
details: https://hg.tryton.org/sao?cmd=changeset&node=a84cf40d5ed9
description:
        Add icon of type URL

        issue10140
        review355171002
diffstat:

 CHANGELOG        |   1 +
 src/view/form.js |  29 ++++++++++++++++++++++-------
 src/view/tree.js |  40 +++++++++++++++++++++++++++-------------
 3 files changed, 50 insertions(+), 20 deletions(-)

diffs (99 lines):

diff -r 03aa192c5c2b -r a84cf40d5ed9 CHANGELOG
--- a/CHANGELOG Sat Mar 20 12:33:09 2021 +0100
+++ b/CHANGELOG Sat Mar 20 12:38:16 2021 +0100
@@ -1,3 +1,4 @@
+* Support icon of type URL
 * Allow sending email with existing attachments
 * Add paths and model context to action data
 * Add indentation in CSV export of tree
diff -r 03aa192c5c2b -r a84cf40d5ed9 src/view/form.js
--- a/src/view/form.js  Sat Mar 20 12:33:09 2021 +0100
+++ b/src/view/form.js  Sat Mar 20 12:38:16 2021 +0100
@@ -1078,14 +1078,29 @@
                 var field = record.model.fields[name];
                 name = field.get(record);
             }
-            Sao.common.ICONFACTORY.get_icon_url(name)
-                .done(function(url) {
-                    if (url) {
-                        this.img.attr('src', url);
-                    } else {
-                        this.img.removeAttr('src');
+            if (this.attributes.type == 'url') {
+                if (name) {
+                    if (this.attributes.url_size) {
+                        var url = new URL(name, window.location);
+                        url.searchParams.set(
+                            this.attributes.url_size,
+                            attributes.size || 48);
+                        name = url.href;
                     }
-                }.bind(this));
+                    this.img.attr('src', name);
+                } else {
+                    this.img.removeAttr('src');
+                }
+            } else {
+                Sao.common.ICONFACTORY.get_icon_url(name)
+                    .done(function(url) {
+                        if (url) {
+                            this.img.attr('src', url);
+                        } else {
+                            this.img.removeAttr('src');
+                        }
+                    }.bind(this));
+            }
         }
     });
 
diff -r 03aa192c5c2b -r a84cf40d5ed9 src/view/tree.js
--- a/src/view/tree.js  Sat Mar 20 12:33:09 2021 +0100
+++ b/src/view/tree.js  Sat Mar 20 12:38:16 2021 +0100
@@ -2032,20 +2032,34 @@
                     else {
                         value = this.icon;
                     }
-                    Sao.common.ICONFACTORY.get_icon_url(value)
-                        .done(function(url) {
-                            var img_tag;
-                            if (cell.children('img').length) {
-                                img_tag = cell.children('img');
-                            } else {
-                                img_tag = cell;
+                    var img_tag;
+                    if (cell.children('img').length) {
+                        img_tag = cell.children('img');
+                    } else {
+                        img_tag = cell;
+                    }
+                    if (this.attributes.icon_type == 'url') {
+                        if (value) {
+                            if (this.attributes.url_size) {
+                                var url = new URL(value, window.location);
+                                url.searchParams.set(
+                                    this.attributes.url_size, 20);
+                                value = url.href;
                             }
-                            if (url) {
-                                img_tag.attr('src', url);
-                            } else {
-                                img_tag.removeAttr('src');
-                            }
-                        }.bind(this));
+                            img_tag.attr('src', value);
+                        } else {
+                            img_tag.removeAttr('src');
+                        }
+                    } else {
+                        Sao.common.ICONFACTORY.get_icon_url(value)
+                            .done(function(url) {
+                                if (url) {
+                                    img_tag.attr('src', url);
+                                } else {
+                                    img_tag.removeAttr('src');
+                                }
+                            }.bind(this));
+                    }
                 } else {
                     value = this.attributes.string || '';
                     if (!value) {

Reply via email to