diff --git a/WebContent/WEB-INF/jsp/pointEdit/textRenderer.jsp b/WebContent/WEB-INF/jsp/pointEdit/textRenderer.jsp
index 8c99507500..db8b400f87 100644
--- a/WebContent/WEB-INF/jsp/pointEdit/textRenderer.jsp
+++ b/WebContent/WEB-INF/jsp/pointEdit/textRenderer.jsp
@@ -160,6 +160,10 @@
"/> |
+
+
+
+
@@ -248,6 +252,10 @@
} else if (typeName == "textRendererTime")
DataPointEditDwr.setTimeTextRenderer($get("textRendererTimeFormat"),
$get("textRendererTimeConversionExponent"), callback);
+ else if (typeName == "textRendererHexadecimal")
+ DataPointEditDwr.setHexadecimalRenderer(callback);
+ else if (typeName == "textRendererBinaryNumber")
+ DataPointEditDwr.setBinaryRenderer(callback);
else
callback();
};
diff --git a/src/com/serotonin/mango/view/text/BaseTextRenderer.java b/src/com/serotonin/mango/view/text/BaseTextRenderer.java
index 30b1646ae5..0849e901d4 100644
--- a/src/com/serotonin/mango/view/text/BaseTextRenderer.java
+++ b/src/com/serotonin/mango/view/text/BaseTextRenderer.java
@@ -50,6 +50,8 @@ static void ensureDefinitions() {
d.add(PlainRenderer.getDefinition());
d.add(RangeRenderer.getDefinition());
d.add(TimeRenderer.getDefinition());
+ d.add(BinaryRenderer.getDefinition());
+ d.add(HexadecimalRenderer.getDefinition());
definitions = d;
}
}
@@ -212,6 +214,10 @@ else if (def == RangeRenderer.getDefinition())
clazz = RangeRenderer.class;
else if (def == TimeRenderer.getDefinition())
clazz = TimeRenderer.class;
+ else if (def == BinaryRenderer.getDefinition())
+ clazz = BinaryRenderer.class;
+ else if (def == HexadecimalRenderer.getDefinition())
+ clazz = HexadecimalRenderer.class;
else
throw new ShouldNeverHappenException("What's this?: " + def.getName());
diff --git a/src/com/serotonin/mango/view/text/BinaryRenderer.java b/src/com/serotonin/mango/view/text/BinaryRenderer.java
new file mode 100644
index 0000000000..d5e251afd8
--- /dev/null
+++ b/src/com/serotonin/mango/view/text/BinaryRenderer.java
@@ -0,0 +1,79 @@
+package com.serotonin.mango.view.text;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import com.serotonin.json.JsonRemoteEntity;
+import com.serotonin.mango.DataTypes;
+import com.serotonin.mango.rt.dataImage.types.MangoValue;
+import com.serotonin.mango.view.ImplDefinition;
+
+@JsonRemoteEntity
+public class BinaryRenderer extends BaseTextRenderer {
+ public static final String TYPE_NAME = "textRendererBinaryNumber";
+
+ private static ImplDefinition definition = new ImplDefinition(
+ TYPE_NAME,
+ "BINARY",
+ "textRenderer.binary.number",
+ new int[] { DataTypes.NUMERIC }
+ );
+
+ public static ImplDefinition getDefinition() {
+ return definition;
+ }
+
+ public BinaryRenderer() {
+ // no op
+ }
+
+ @Override
+ public String getTypeName() {
+ return TYPE_NAME;
+ }
+
+ @Override
+ public ImplDefinition getDef() {
+ return definition;
+ }
+
+ @Override
+ public String getMetaText() {
+ return null;
+ }
+
+ @Override
+ protected String getTextImpl(MangoValue value, int hint) {
+ if (value == null)
+ return UNKNOWN_VALUE;
+
+ long i = (long) value.getDoubleValue();
+ String bin = Long.toBinaryString(i);
+ int groups = (bin.length() + 3) / 4;
+ int totalBits = groups * 4;
+ String padded = String.format("%" + totalBits + "s", bin).replace(' ', '0');
+ StringBuilder sb = new StringBuilder();
+ for (int g = 0; g < groups; g++) {
+ if (g > 0) sb.append(' ');
+ sb.append(padded, g * 4, g * 4 + 4);
+ }
+ return sb.toString();
+ }
+
+ @Override
+ protected String getColourImpl(MangoValue value) {
+ return null;
+ }
+
+ private static final long serialVersionUID = -1;
+ private static final int version = 1;
+
+ private void writeObject(ObjectOutputStream out) throws IOException {
+ out.writeInt(version);
+ }
+
+ private void readObject(ObjectInputStream in) throws IOException {
+ in.readInt(); // version
+ }
+}
diff --git a/src/com/serotonin/mango/view/text/BinaryTextRenderer.java b/src/com/serotonin/mango/view/text/BinaryTextRenderer.java
index eebc4da103..cf68f6e82e 100644
--- a/src/com/serotonin/mango/view/text/BinaryTextRenderer.java
+++ b/src/com/serotonin/mango/view/text/BinaryTextRenderer.java
@@ -39,7 +39,7 @@
*/
@JsonRemoteEntity
public class BinaryTextRenderer extends BaseTextRenderer {
- private static ImplDefinition definition = new ImplDefinition(BinaryTextRenderer.TYPE_NAME, "BINARY",
+ private static ImplDefinition definition = new ImplDefinition(BinaryTextRenderer.TYPE_NAME, "BINARY (T/F)",
"textRenderer.binary", new int[] { DataTypes.BINARY });
public static ImplDefinition getDefinition() {
diff --git a/src/com/serotonin/mango/view/text/HexadecimalRenderer.java b/src/com/serotonin/mango/view/text/HexadecimalRenderer.java
new file mode 100644
index 0000000000..d0f4b1a26b
--- /dev/null
+++ b/src/com/serotonin/mango/view/text/HexadecimalRenderer.java
@@ -0,0 +1,72 @@
+package com.serotonin.mango.view.text;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import com.serotonin.json.JsonRemoteEntity;
+import com.serotonin.mango.DataTypes;
+import com.serotonin.mango.rt.dataImage.types.MangoValue;
+import com.serotonin.mango.view.ImplDefinition;
+
+
+@JsonRemoteEntity
+public class HexadecimalRenderer extends BaseTextRenderer {
+ public static final String TYPE_NAME = "textRendererHexadecimal";
+
+ private static ImplDefinition definition = new ImplDefinition(
+ TYPE_NAME,
+ "HEX",
+ "textRenderer.hex",
+ new int[] { DataTypes.NUMERIC }
+ );
+
+ public static ImplDefinition getDefinition() {
+ return definition;
+ }
+
+ public HexadecimalRenderer() {
+ // no op
+ }
+
+ @Override
+ public String getTypeName() {
+ return TYPE_NAME;
+ }
+
+ @Override
+ public ImplDefinition getDef() {
+ return definition;
+ }
+
+ @Override
+ public String getMetaText() {
+ return null;
+ }
+
+ @Override
+ protected String getTextImpl(MangoValue value, int hint) {
+ if (value == null)
+ return UNKNOWN_VALUE;
+
+ long i = (long) value.getDoubleValue();
+ String hex = Long.toHexString(i).toUpperCase();
+ return "0x" + hex;
+ }
+
+ @Override
+ protected String getColourImpl(MangoValue value) {
+ return null;
+ }
+
+ private static final long serialVersionUID = -1;
+ private static final int version = 1;
+
+ private void writeObject(ObjectOutputStream out) throws IOException {
+ out.writeInt(version);
+ }
+
+ private void readObject(ObjectInputStream in) throws IOException {
+ in.readInt();
+ }
+}
diff --git a/src/com/serotonin/mango/web/dwr/DataPointEditDwr.java b/src/com/serotonin/mango/web/dwr/DataPointEditDwr.java
index 990befaf4a..7039043dbf 100644
--- a/src/com/serotonin/mango/web/dwr/DataPointEditDwr.java
+++ b/src/com/serotonin/mango/web/dwr/DataPointEditDwr.java
@@ -30,16 +30,7 @@
import com.serotonin.mango.view.chart.StatisticsChartRenderer;
import com.serotonin.mango.view.chart.TableChartRenderer;
import com.serotonin.mango.view.event.*;
-import com.serotonin.mango.view.text.AnalogRenderer;
-import com.serotonin.mango.view.text.BinaryTextRenderer;
-import com.serotonin.mango.view.text.MultistateRenderer;
-import com.serotonin.mango.view.text.MultistateValue;
-import com.serotonin.mango.view.text.NoneRenderer;
-import com.serotonin.mango.view.text.PlainRenderer;
-import com.serotonin.mango.view.text.RangeRenderer;
-import com.serotonin.mango.view.text.RangeValue;
-import com.serotonin.mango.view.text.TextRenderer;
-import com.serotonin.mango.view.text.TimeRenderer;
+import com.serotonin.mango.view.text.*;
import com.serotonin.mango.vo.DataPointVO;
import com.serotonin.mango.vo.User;
import com.serotonin.mango.vo.event.PointEventDetectorVO;
@@ -118,6 +109,10 @@ public void setRangeRenderer(String format, List values) {
setTextRenderer(r);
}
+ public void setHexadecimalRenderer() {setTextRenderer(new HexadecimalRenderer()); }
+
+ public void setBinaryRenderer(){setTextRenderer(new BinaryRenderer());}
+
public void setTimeTextRenderer(String format, int conversionExponent) {
setTextRenderer(new TimeRenderer(format, conversionExponent));
}
diff --git a/webapp-resources/messages_de.properties b/webapp-resources/messages_de.properties
index 68f2aaec90..b53999a76a 100644
--- a/webapp-resources/messages_de.properties
+++ b/webapp-resources/messages_de.properties
@@ -3454,7 +3454,9 @@ systemSettings.amChart.limitFactor=Limit factor
systemSettings.amChartsSaved=AmCharts settings have been saved
systemSettings.scadaConfTitle=Scada-LTS environment settings
systemSettings.scadaConfCheck=Check configuration
+textRenderer.binary.number=Binary number
+textRenderer.hex=Hexadecimal
validate.unsupportedDataType=Data type {0} is not supported
dsEdit.checkFile.found=File OK!
dsEdit.checkFile.notFound=File not found!
-scadalts.security.js.validator.error=Script is invalid!
\ No newline at end of file
+scadalts.security.js.validator.error=Script is invalid!
diff --git a/webapp-resources/messages_en.properties b/webapp-resources/messages_en.properties
index ba5a2c3893..70ca8c53fc 100644
--- a/webapp-resources/messages_en.properties
+++ b/webapp-resources/messages_en.properties
@@ -3457,8 +3457,9 @@ systemSettings.amChart.limitFactor=Limit factor
systemSettings.amChartsSaved=AmCharts settings have been saved
systemSettings.scadaConfTitle=Scada-LTS environment settings
systemSettings.scadaConfCheck=Check configuration
+textRenderer.binary.number=Binary number
+textRenderer.hex=Hexadecimal
validate.unsupportedDataType=Data type {0} is not supported
-
dsEdit.checkFile.found=File OK!
dsEdit.checkFile.notFound=File not found!
-scadalts.security.js.validator.error=Script is invalid!
\ No newline at end of file
+scadalts.security.js.validator.error=Script is invalid!
diff --git a/webapp-resources/messages_es.properties b/webapp-resources/messages_es.properties
index 5c1d9509f2..dd80afef07 100644
--- a/webapp-resources/messages_es.properties
+++ b/webapp-resources/messages_es.properties
@@ -3497,8 +3497,9 @@ systemSettings.amChart.limitFactor=Limit factor
systemSettings.amChartsSaved=AmCharts settings have been saved
systemSettings.scadaConfTitle=Scada-LTS environment settings
systemSettings.scadaConfCheck=Check configuration
+textRenderer.binary.number=Binary number
+textRenderer.hex=Hexadecimal
validate.unsupportedDataType=Data type {0} is not supported
-
dsEdit.checkFile.found=File OK!
dsEdit.checkFile.notFound=File not found!
-scadalts.security.js.validator.error=Script is invalid!
\ No newline at end of file
+scadalts.security.js.validator.error=Script is invalid!
diff --git a/webapp-resources/messages_fi.properties b/webapp-resources/messages_fi.properties
index b282d209de..253963e497 100644
--- a/webapp-resources/messages_fi.properties
+++ b/webapp-resources/messages_fi.properties
@@ -3582,8 +3582,9 @@ systemSettings.amChart.limitFactor=Limit factor
systemSettings.amChartsSaved=AmCharts settings have been saved
systemSettings.scadaConfTitle=Scada-LTS environment settings
systemSettings.scadaConfCheck=Check configuration
+textRenderer.binary.number=Binary number
+textRenderer.hex=Hexadecimal
validate.unsupportedDataType=Data type {0} is not supported
-
dsEdit.checkFile.found=File OK!
dsEdit.checkFile.notFound=File not found!
-scadalts.security.js.validator.error=Script is invalid!
\ No newline at end of file
+scadalts.security.js.validator.error=Script is invalid!
diff --git a/webapp-resources/messages_fr.properties b/webapp-resources/messages_fr.properties
index 5a321e1a49..f0ad425a0f 100644
--- a/webapp-resources/messages_fr.properties
+++ b/webapp-resources/messages_fr.properties
@@ -3451,8 +3451,9 @@ systemSettings.amChart.limitFactor=Limit factor
systemSettings.amChartsSaved=AmCharts settings have been saved
systemSettings.scadaConfTitle=Scada-LTS environment settings
systemSettings.scadaConfCheck=Check configuration
+textRenderer.binary.number=Binary number
+textRenderer.hex=Hexadecimal
validate.unsupportedDataType=Data type {0} is not supported
-
dsEdit.checkFile.found=File OK!
dsEdit.checkFile.notFound=File not found!
-scadalts.security.js.validator.error=Script is invalid!
\ No newline at end of file
+scadalts.security.js.validator.error=Script is invalid!
diff --git a/webapp-resources/messages_lu.properties b/webapp-resources/messages_lu.properties
index fccb65f0c0..d96e907297 100644
--- a/webapp-resources/messages_lu.properties
+++ b/webapp-resources/messages_lu.properties
@@ -3470,8 +3470,9 @@ systemSettings.amChart.limitFactor=Limit factor
systemSettings.amChartsSaved=AmCharts settings have been saved
systemSettings.scadaConfTitle=Scada-LTS environment settings
systemSettings.scadaConfCheck=Check configuration
+textRenderer.binary.number=Binary number
+textRenderer.hex=Hexadecimal
validate.unsupportedDataType=Data type {0} is not supported
-
dsEdit.checkFile.found=File OK!
dsEdit.checkFile.notFound=File not found!
-scadalts.security.js.validator.error=Script is invalid!
\ No newline at end of file
+scadalts.security.js.validator.error=Script is invalid!
diff --git a/webapp-resources/messages_nl.properties b/webapp-resources/messages_nl.properties
index 272420eb5a..2f6f1d78ba 100644
--- a/webapp-resources/messages_nl.properties
+++ b/webapp-resources/messages_nl.properties
@@ -3572,8 +3572,9 @@ systemSettings.amChart.limitFactor=Limit factor
systemSettings.amChartsSaved=AmCharts settings have been saved
systemSettings.scadaConfTitle=Scada-LTS environment settings
systemSettings.scadaConfCheck=Check configuration
+textRenderer.binary.number=Binary number
+textRenderer.hex=Hexadecimal
validate.unsupportedDataType=Data type {0} is not supported
-
dsEdit.checkFile.found=File OK!
dsEdit.checkFile.notFound=File not found!
-scadalts.security.js.validator.error=Script is invalid!
\ No newline at end of file
+scadalts.security.js.validator.error=Script is invalid!
diff --git a/webapp-resources/messages_pl.properties b/webapp-resources/messages_pl.properties
index 04a3a8a05c..d8d72068ad 100644
--- a/webapp-resources/messages_pl.properties
+++ b/webapp-resources/messages_pl.properties
@@ -3594,8 +3594,9 @@ systemSettings.amChart.limitFactor=Limit factor
systemSettings.amChartsSaved=AmCharts settings have been saved
systemSettings.scadaConfTitle=Scada-LTS environment settings
systemSettings.scadaConfCheck=Check configuration
+textRenderer.binary.number=Binary number
+textRenderer.hex=Hexadecimal
validate.unsupportedDataType=Data type {0} is not supported
-
dsEdit.checkFile.found=File OK!
dsEdit.checkFile.notFound=File not found!
-scadalts.security.js.validator.error=Script is invalid!
\ No newline at end of file
+scadalts.security.js.validator.error=Script is invalid!
diff --git a/webapp-resources/messages_pt.properties b/webapp-resources/messages_pt.properties
index d4f4a6d62d..ded9a3ad9e 100644
--- a/webapp-resources/messages_pt.properties
+++ b/webapp-resources/messages_pt.properties
@@ -3609,8 +3609,9 @@ systemSettings.amChart.limitFactor=Limit factor
systemSettings.amChartsSaved=AmCharts settings have been saved
systemSettings.scadaConfTitle=Scada-LTS environment settings
systemSettings.scadaConfCheck=Check configuration
+textRenderer.binary.number=Binary number
+textRenderer.hex=Hexadecimal
validate.unsupportedDataType=Data type {0} is not supported
-
dsEdit.checkFile.found=Arquivo OK!
dsEdit.checkFile.notFound=Arquivo não encontrado!
scadalts.security.js.validator.error=Script is invalid!
diff --git a/webapp-resources/messages_ru.properties b/webapp-resources/messages_ru.properties
index 8a21cce10e..c7a32e56f8 100644
--- a/webapp-resources/messages_ru.properties
+++ b/webapp-resources/messages_ru.properties
@@ -3605,8 +3605,9 @@ systemSettings.amChart.limitFactor=Limit factor
systemSettings.amChartsSaved=AmCharts settings have been saved
systemSettings.scadaConfTitle=Scada-LTS environment settings
systemSettings.scadaConfCheck=Check configuration
+textRenderer.binary.number=Binary number
+textRenderer.hex=Hexadecimal
validate.unsupportedDataType=Data type {0} is not supported
-
dsEdit.checkFile.found=File OK!
dsEdit.checkFile.notFound=File not found!
-scadalts.security.js.validator.error=Script is invalid!
\ No newline at end of file
+scadalts.security.js.validator.error=Script is invalid!
diff --git a/webapp-resources/messages_zh.properties b/webapp-resources/messages_zh.properties
index 6ab23cf0ff..a4d44968c9 100644
--- a/webapp-resources/messages_zh.properties
+++ b/webapp-resources/messages_zh.properties
@@ -3557,8 +3557,9 @@ systemSettings.amChart.limitFactor=Limit factor
systemSettings.amChartsSaved=AmCharts settings have been saved
systemSettings.scadaConfTitle=Scada-LTS environment settings
systemSettings.scadaConfCheck=Check configuration
+textRenderer.binary.number=Binary number
+textRenderer.hex=Hexadecimal
validate.unsupportedDataType=Data type {0} is not supported
-
dsEdit.checkFile.found=File OK!
dsEdit.checkFile.notFound=File not found!
-scadalts.security.js.validator.error=Script is invalid!
\ No newline at end of file
+scadalts.security.js.validator.error=Script is invalid!