diff --git a/README.md b/README.md
index c20192e..b2f71ac 100644
--- a/README.md
+++ b/README.md
@@ -198,6 +198,7 @@ show();
* (klein0r) Added hide if value for My Data (DIY)
* (klein0r) Remove frames without text from My Data (DIY)
+* (klein0r) Allow dynamic states for My Data (DIY) icons
### 1.1.3
diff --git a/admin/index_m.html b/admin/index_m.html
index 22d5cf8..4cd03ba 100644
--- a/admin/index_m.html
+++ b/admin/index_m.html
@@ -112,8 +112,8 @@
- icon |
- text |
+ icon |
+ text |
hide if |
|
diff --git a/main.js b/main.js
index 10e8af4..2116f82 100644
--- a/main.js
+++ b/main.js
@@ -911,7 +911,17 @@ class LaMetric extends utils.Adapter {
this.myDataDiyRegex,
(m, id) => {
if (foreignStates.indexOf(id) === -1) {
- this.log.debug('My Data (DIY) found dynamic state: ' + id);
+ this.log.debug('My Data (DIY) found dynamic state in text: ' + id);
+ foreignStates.push(id);
+ }
+ }
+ );
+
+ f.icon.replace(
+ this.myDataDiyRegex,
+ (m, id) => {
+ if (foreignStates.indexOf(id) === -1) {
+ this.log.debug('My Data (DIY) found dynamic state in icon: ' + id);
foreignStates.push(id);
}
}
@@ -965,7 +975,7 @@ class LaMetric extends utils.Adapter {
let replacedText = f.text.replace(
this.myDataDiyRegex,
(m, id) => {
- this.log.debug('My Data (DIY) replacing {' + id + '} in frame');
+ this.log.debug('My Data (DIY) replacing {' + id + '} in frame text');
return this.myDataDiyForeignStates.filter(item => { return item.id === id; })[0].val;
}
@@ -983,7 +993,14 @@ class LaMetric extends utils.Adapter {
};
if (f.icon) {
- newObj.icon = f.icon;
+ newObj.icon = f.icon.replace(
+ this.myDataDiyRegex,
+ (m, id) => {
+ this.log.debug('My Data (DIY) replacing {' + id + '} in frame icon');
+
+ return this.myDataDiyForeignStates.filter(item => { return item.id === id; })[0].val;
+ }
+ );
}
return newObj;