Skip to content

Commit

Permalink
update GUI fix typos bump V2.9.1
Browse files Browse the repository at this point in the history
  • Loading branch information
glynhudson committed Jul 29, 2020
1 parent 6e05310 commit b87bb42
Show file tree
Hide file tree
Showing 6 changed files with 5 additions and 7 deletions.
2 changes: 1 addition & 1 deletion gui
Submodule gui updated 2 files
+3 −3 package-lock.json
+2 −2 src/home.htm
2 changes: 1 addition & 1 deletion platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ data_dir = src/data
default_envs = openevse

[common]
version = -DBUILD_TAG=2.9.0
version = -DBUILD_TAG=2.9.1
monitor_speed=115200
lib_deps =
PubSubClient@2.6
Expand Down
2 changes: 1 addition & 1 deletion src/web_static/web_server.home.html.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ static const char CONTENT_HOME_HTML[] PROGMEM =
" optionsText: function(item) {\n"
" return item + '://'\n"
" },\n"
" value: config.mqtt_protocol\"></select> <input data-bind=\"textInput: config.mqtt_server\" type=\"text\" autocapitalize=\"none\"><br> <span class=\"small-text\">e.g 'emonpi', 'test.mosquitto.org', '192.168.1.4'</span> </div> </div> <p data-bind=\"visible: config.mqtt_enabled() &amp;&amp; config.mqtt_port_enable()\"> <b>Port*:</b><br> <input data-bind=\"textInput: config.mqtt_port\" type=\"number\" autocapitalize=\"none\"><br> </p> <div data-bind=\"visible: config.mqtt_enabled() &amp;&amp; config.mqtt_reject_unauthorized_enable() &amp;&amp; advancedMode()\"> <b>Reject self-signed certificates:</b> <label class=\"switch\"> <input type=\"checkbox\" data-bind=\"checked: config.mqtt_reject_unauthorized\"> <div class=\"slider round\"></div> </label> </div> <div data-bind=\"visible: config.mqtt_enabled() &amp;&amp; !config.mqtt_reject_unauthorized()\" class=\"box warning\" style=\"margin-top: 20px;\"> <h4>Warning!!</h4> Certificate validation is disabled, although the connection to MQTT server will be encrypted the connection is still vunrable to man-in-the-middle attacks. </div> <p data-bind=\"visible: config.mqtt_enabled\"> <b>Username:</b><span> blank - no authentication</span> <input data-bind=\"textInput: config.mqtt_user\" type=\"text\" autocapitalize=\"none\"> </p> <p data-bind=\"visible: config.mqtt_enabled\"> <b>Password:</b><span> blank - no authentication</span> <input type=\"password\" autocapitalize=\"none\" data-bind=\"textInput: mqttPassword.value, attr: { type: mqttPassword.show() ? 'text' : 'password' }\"><br> <span> <input id=\"mqttPassword\" type=\"checkbox\" data-bind=\"checked: mqttPassword.show\"> <label for=\"mqttPassword\">Show password</label> </span> </p> <p data-bind=\"visible: config.mqtt_enabled\"> <b>Base-topic*:</b><br> <input data-bind=\"textInput: config.mqtt_topic\" type=\"text\" autocapitalize=\"none\"><br> <span class=\"small-text\">e.g 'openevse'</span> </p> <p data-bind=\"visible: config.mqtt_enabled\"> <b>Voltage topic:</b> <input data-bind=\"textInput: config.mqtt_vrms\" type=\"text\" autocapitalize=\"none\" hint=\"emon/emonpi/vrms\"><br> <span class=\"small-text\">Voltage MQTT topic to improve power calculations </span></p> <p> <button data-bind=\"click: mqttGroup.save, text: (mqttGroup.fetching() ? 'Saving' : (mqttGroup.success() ? 'Saved' : 'Save')), disable: mqttGroup.fetching\">Save</button> <span data-bind=\"visible: config.mqtt_enabled\"><b>&nbsp; Connected:&nbsp;<span data-bind=\"text: 1 === status.mqtt_connected() ? 'Yes' : 'No'\"></span></b></span> </p> </div> <div class=\"box380 left\"> <h2>&nbsp; OhmConnect <img src=\"data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=\" data-src=\"ohm.jpg\" align=\"left\"></h2> <p> <input type=\"checkbox\" id=\"ohm_enabled\" data-bind=\"checked: config.ohm_enabled\"> <label for=\"ohm_enabled\"><b>Enable OhmConnect</b></label> <a href=\"https://ohm.co/openevse\" rel=\"nofollow\">Click Here to Join</a> </p> <p data-bind=\"visible: config.ohm_enabled\"> OhmConnect monitors real-time conditions on the electricity grid. When dirty and unsustainable power plants turn on, our users receive a notification to save energy. </p> <p data-bind=\"visible: config.ohm_enabled\"> <b>Ohm Hour:</b> <span data-bind=\"text: status.ohm_hour\"></span> </p> <p data-bind=\"visible: config.ohm_enabled\"> <b>Ohm key:</b><br> <input data-bind=\"textInput: config.ohmkey\" type=\"text\" autocapitalize=\"none\"> </p> <p data-bind=\"visible: config.ohm_enabled\"> <strong>USA - California only</strong> </p> <div style=\"padding:56.25% 0 0 0;position:relative;\"><iframe src=\"https://player.vimeo.com/video/119419875\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div><script src=\"https://player.vimeo.com/api/player.js\"></script> <p data-bind=\"visible: config.ohm_enabled\"> Ohm Key can be obtained by logging in to OhmConnect, enter Settings and locate the link in \"Open Source Projects\"<br> Example: https://login.ohmconnect.com/verify-ohm-hour/OpnEoVse<br> <b>Key: </b>OpnEoVse </p> <p> <button data-bind=\"click: saveOhmKey, text: (saveOhmKeyFetching() ? 'Saving' : (saveOhmKeySuccess() ? 'Saved' : 'Save')), disable: saveOhmKeyFetching\">Save</button> </p> </div> <div class=\"box380 right\"> <h2>Solar PV divert</h2> <p data-bind=\"visible: config.mqtt_enabled\"> <input type=\"checkbox\" id=\"divert_enabled\" data-bind=\"checked: config.divert_enabled\"> <label for=\"divert_enabled\"><b>Enable Solar PV Divert</b></label> <span class=\"info\" data-bind=\"click: toggle.bind($data, showSolarDivert)\"></span> </p> <div class=\"box error\" data-bind=\"visible: !config.mqtt_enabled()\"> <h4>MQTT not enabled.</h4> Solar PV Divert requires an SolarPV-gen or Grid (+I/-E) feed to be delivered via MQTT. </div> <div class=\"box\" data-bind=\"visible: showSolarDivert()\"> <div>Dynamically adjust charge rate based on solar PV generation or excess power (grid export).</div> <p> </p><ul> <li><span class=\"small-text\">If only solar PV feed available: charge rate is modulated based on <b>solar PV generation.</b></span></li> <li><span class=\"small-text\">If grid +I/-E (positive Import / negative Export) feed is available: charge rate will be modulated by available <b>excess power.</b></span></li> <li><span class=\"small-text\">If EVSE is sleeping: charging will begin when solar PV / excess power > min charge rate.</span></li> <li><span class=\"small-text\">Charging will pause if the excess power drops below the nim charge rate for a period of time.</span></li> </ul> <span class=\"small-text\"><i>Note: It's assumed that EVSE power is included in the grid feed</i></span><br> <p></p> </div> <p data-bind=\"visible: config.divert_enabled() &amp;&amp; config.mqtt_enabled()\"> <br> <span data-bind=\"visible: divertFeedType() === 'solar'\"><b>Solar:</b></span> <span data-bind=\"visible: divertFeedType() === 'grid_ie'\"><b>Grid Import/Export:</b></span> <span data-bind=\"text: divertFeedType() === 'grid_ie' ? status.grid_ie() : status.solar()\"></span>W - <span data-bind=\"text: formatUpdate(openevse.time.divert_update()), css: updateClass(openevse.time.divert_update())\"></span> <span data-bind=\"visible: ecoMode\"> | <b>Charge rate:</b> <span data-bind=\"text: status.charge_rate\"></span>A</span> </p> <div data-bind=\"visible: config.divert_enabled() &amp;&amp; config.mqtt_enabled()\"> <b>Feed*:</b><br> <div class=\"divert\"> <select data-bind=\"value: divertFeedType\"> <option value=\"solar\">SolarPV-gen</option> <option value=\"grid_ie\">Grid (+I/-E)</option> </select> <input data-bind=\"textInput: divertFeedValue\" type=\"text\" autocapitalize=\"none\"><br> <span data-bind=\"visible: divertFeedType() === 'solar'\" class=\"small-text\">Solar PV MQTT topic to modulate charge rate based on solar</span> <span data-bind=\"visible: divertFeedType() === 'grid_ie'\" class=\"small-text\">Grid (+I/-E) MQTT topic to modulate charge rate based on <b>excess power</b></span> </div> </div> <p data-bind=\"visible: advancedMode() &amp;&amp; config.divert_enabled() &amp;&amp; config.mqtt_enabled()\"> <b>Divert smoothing attack:</b><br> <input data-bind=\"textInput: config.divert_attack_smoothing_factor\" type=\"number\" autocapitalize=\"none\" hint=\"0.4\" min=\"0\" max=\"1\" step=\"0.01\"><br> <span class=\"small-text\">The amount of the new feed value to add to the divert available power rolling average </span> </p> <p data-bind=\"visible: advancedMode() &amp;&amp; config.divert_enabled() &amp;&amp; config.mqtt_enabled()\"> <b>Divert smoothing decay:</b><br> <input data-bind=\"textInput: config.divert_decay_smoothing_factor\" type=\"number\" autocapitalize=\"none\" hint=\"0.05\" min=\"0\" max=\"1\" step=\"0.01\"><br> <span class=\"small-text\">The amount of the new feed value to remove to the divert available power rolling average </span> </p> <p data-bind=\"visible: advancedMode() &amp;&amp; config.divert_enabled() &amp;&amp; config.mqtt_enabled()\"> <b>Minimum charge time:</b><br> <input data-bind=\"textInput: config.divert_min_charge_time\" type=\"number\" autocapitalize=\"none\" hint=\"600\" min=\"0\" max=\"100000\" step=\"10\"><br> <span class=\"small-text\">The minimum amount of time (seconds) to charge the car once enabled via the Solar PV divert. This can help minimise wear and tare on the EVSE.</span> </p> <p data-bind=\"visible: isEcoModeAvailable\"> <button data-bind=\"click: divertGroup.save, text: (divertGroup.fetching() ? 'Saving' : (divertGroup.success() ? 'Saved' : 'Save')), disable: divertGroup.fetching\">Save</button> </p> </div> </div> <div id=\"content-3\" data-bind=\"visible: isStatus\"> <div data-bind=\"visible: openevse.isError\" class=\"box box-full left error\"> <h4>EVSE Error</h4> <span data-bind=\"text: status.estate\"></span> </div> <div data-bind=\"visible: !status.rapi_connected()\" class=\"box box-full left error\"> <h4>EVSE Error</h4> <span>OpenEVSE not responding or not connected</span> </div> <div data-bind=\"visible: !openevse.isError() &amp;&amp; status.rapi_connected(),\n"
" value: config.mqtt_protocol\"></select> <input data-bind=\"textInput: config.mqtt_server\" type=\"text\" autocapitalize=\"none\"><br> <span class=\"small-text\">e.g 'emonpi', 'test.mosquitto.org', '192.168.1.4'</span> </div> </div> <p data-bind=\"visible: config.mqtt_enabled() &amp;&amp; config.mqtt_port_enable()\"> <b>Port*:</b><br> <input data-bind=\"textInput: config.mqtt_port\" type=\"number\" autocapitalize=\"none\"><br> </p> <div data-bind=\"visible: config.mqtt_enabled() &amp;&amp; config.mqtt_reject_unauthorized_enable() &amp;&amp; advancedMode()\"> <b>Reject self-signed certificates:</b> <label class=\"switch\"> <input type=\"checkbox\" data-bind=\"checked: config.mqtt_reject_unauthorized\"> <div class=\"slider round\"></div> </label> </div> <div data-bind=\"visible: config.mqtt_enabled() &amp;&amp; !config.mqtt_reject_unauthorized()\" class=\"box warning\" style=\"margin-top: 20px;\"> <h4>Warning!!</h4> Certificate validation is disabled, although the connection to MQTT server will be encrypted the connection is still vulnerable to man-in-the-middle attacks. </div> <p data-bind=\"visible: config.mqtt_enabled\"> <b>Username:</b><span> blank - no authentication</span> <input data-bind=\"textInput: config.mqtt_user\" type=\"text\" autocapitalize=\"none\"> </p> <p data-bind=\"visible: config.mqtt_enabled\"> <b>Password:</b><span> blank - no authentication</span> <input type=\"password\" autocapitalize=\"none\" data-bind=\"textInput: mqttPassword.value, attr: { type: mqttPassword.show() ? 'text' : 'password' }\"><br> <span> <input id=\"mqttPassword\" type=\"checkbox\" data-bind=\"checked: mqttPassword.show\"> <label for=\"mqttPassword\">Show password</label> </span> </p> <p data-bind=\"visible: config.mqtt_enabled\"> <b>Base-topic*:</b><br> <input data-bind=\"textInput: config.mqtt_topic\" type=\"text\" autocapitalize=\"none\"><br> <span class=\"small-text\">e.g 'openevse'</span> </p> <p data-bind=\"visible: config.mqtt_enabled\"> <b>Voltage topic:</b> <input data-bind=\"textInput: config.mqtt_vrms\" type=\"text\" autocapitalize=\"none\" hint=\"emon/emonpi/vrms\"><br> <span class=\"small-text\">Voltage MQTT topic to improve power calculations </span></p> <p> <button data-bind=\"click: mqttGroup.save, text: (mqttGroup.fetching() ? 'Saving' : (mqttGroup.success() ? 'Saved' : 'Save')), disable: mqttGroup.fetching\">Save</button> <span data-bind=\"visible: config.mqtt_enabled\"><b>&nbsp; Connected:&nbsp;<span data-bind=\"text: 1 === status.mqtt_connected() ? 'Yes' : 'No'\"></span></b></span> </p> </div> <div class=\"box380 left\"> <h2>&nbsp; OhmConnect <img src=\"data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=\" data-src=\"ohm.jpg\" align=\"left\"></h2> <p> <input type=\"checkbox\" id=\"ohm_enabled\" data-bind=\"checked: config.ohm_enabled\"> <label for=\"ohm_enabled\"><b>Enable OhmConnect</b></label> <a href=\"https://ohm.co/openevse\" rel=\"nofollow\">Click Here to Join</a> </p> <p data-bind=\"visible: config.ohm_enabled\"> OhmConnect monitors real-time conditions on the electricity grid. When dirty and unsustainable power plants turn on, our users receive a notification to save energy. </p> <p data-bind=\"visible: config.ohm_enabled\"> <b>Ohm Hour:</b> <span data-bind=\"text: status.ohm_hour\"></span> </p> <p data-bind=\"visible: config.ohm_enabled\"> <b>Ohm key:</b><br> <input data-bind=\"textInput: config.ohmkey\" type=\"text\" autocapitalize=\"none\"> </p> <p data-bind=\"visible: config.ohm_enabled\"> <strong>USA - California only</strong> </p> <div style=\"padding:56.25% 0 0 0;position:relative;\"><iframe src=\"https://player.vimeo.com/video/119419875\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div><script src=\"https://player.vimeo.com/api/player.js\"></script> <p data-bind=\"visible: config.ohm_enabled\"> Ohm Key can be obtained by logging in to OhmConnect, enter Settings and locate the link in \"Open Source Projects\"<br> Example: https://login.ohmconnect.com/verify-ohm-hour/OpnEoVse<br> <b>Key: </b>OpnEoVse </p> <p> <button data-bind=\"click: saveOhmKey, text: (saveOhmKeyFetching() ? 'Saving' : (saveOhmKeySuccess() ? 'Saved' : 'Save')), disable: saveOhmKeyFetching\">Save</button> </p> </div> <div class=\"box380 right\"> <h2>Solar PV divert</h2> <p data-bind=\"visible: config.mqtt_enabled\"> <input type=\"checkbox\" id=\"divert_enabled\" data-bind=\"checked: config.divert_enabled\"> <label for=\"divert_enabled\"><b>Enable Solar PV Divert</b></label> <span class=\"info\" data-bind=\"click: toggle.bind($data, showSolarDivert)\"></span> </p> <div class=\"box error\" data-bind=\"visible: !config.mqtt_enabled()\"> <h4>MQTT not enabled.</h4> Solar PV Divert requires an SolarPV-gen or Grid (+I/-E) feed to be delivered via MQTT. </div> <div class=\"box\" data-bind=\"visible: showSolarDivert()\"> <div>Dynamically adjust charge rate based on solar PV generation or excess power (grid export).</div> <p> </p><ul> <li><span class=\"small-text\">If only solar PV feed available: charge rate is modulated based on <b>solar PV generation.</b></span></li> <li><span class=\"small-text\">If grid +I/-E (positive Import / negative Export) feed is available: charge rate will be modulated by available <b>excess power.</b></span></li> <li><span class=\"small-text\">If EVSE is sleeping: charging will begin when solar PV / excess power > min charge rate.</span></li> <li><span class=\"small-text\">Charging will pause if the excess power drops below the nim charge rate for a period of time.</span></li> </ul> <span class=\"small-text\"><i>Note: It's assumed that EVSE power is included in the grid feed</i></span><br> <p></p> </div> <p data-bind=\"visible: config.divert_enabled() &amp;&amp; config.mqtt_enabled()\"> <br> <span data-bind=\"visible: divertFeedType() === 'solar'\"><b>Solar:</b></span> <span data-bind=\"visible: divertFeedType() === 'grid_ie'\"><b>Grid Import/Export:</b></span> <span data-bind=\"text: divertFeedType() === 'grid_ie' ? status.grid_ie() : status.solar()\"></span>W - <span data-bind=\"text: formatUpdate(openevse.time.divert_update()), css: updateClass(openevse.time.divert_update())\"></span> <span data-bind=\"visible: ecoMode\"> | <b>Charge rate:</b> <span data-bind=\"text: status.charge_rate\"></span>A</span> </p> <div data-bind=\"visible: config.divert_enabled() &amp;&amp; config.mqtt_enabled()\"> <b>Feed*:</b><br> <div class=\"divert\"> <select data-bind=\"value: divertFeedType\"> <option value=\"solar\">SolarPV-gen</option> <option value=\"grid_ie\">Grid (+I/-E)</option> </select> <input data-bind=\"textInput: divertFeedValue\" type=\"text\" autocapitalize=\"none\"><br> <span data-bind=\"visible: divertFeedType() === 'solar'\" class=\"small-text\">Solar PV MQTT topic to modulate charge rate based on solar</span> <span data-bind=\"visible: divertFeedType() === 'grid_ie'\" class=\"small-text\">Grid (+I/-E) MQTT topic to modulate charge rate based on <b>excess power</b></span> </div> </div> <p data-bind=\"visible: advancedMode() &amp;&amp; config.divert_enabled() &amp;&amp; config.mqtt_enabled()\"> <b>Divert smoothing attack:</b><br> <input data-bind=\"textInput: config.divert_attack_smoothing_factor\" type=\"number\" autocapitalize=\"none\" hint=\"0.4\" min=\"0\" max=\"1\" step=\"0.01\"><br> <span class=\"small-text\">The amount of the new feed value to add to the divert available power rolling average </span> </p> <p data-bind=\"visible: advancedMode() &amp;&amp; config.divert_enabled() &amp;&amp; config.mqtt_enabled()\"> <b>Divert smoothing decay:</b><br> <input data-bind=\"textInput: config.divert_decay_smoothing_factor\" type=\"number\" autocapitalize=\"none\" hint=\"0.05\" min=\"0\" max=\"1\" step=\"0.01\"><br> <span class=\"small-text\">The amount of the new feed value to remove to the divert available power rolling average </span> </p> <p data-bind=\"visible: advancedMode() &amp;&amp; config.divert_enabled() &amp;&amp; config.mqtt_enabled()\"> <b>Minimum charge time:</b><br> <input data-bind=\"textInput: config.divert_min_charge_time\" type=\"number\" autocapitalize=\"none\" hint=\"600\" min=\"0\" max=\"100000\" step=\"10\"><br> <span class=\"small-text\">The minimum amount of time (seconds) to charge the car once enabled via the Solar PV divert. This can help minimise wear and tear on the EVSE.</span> </p> <p data-bind=\"visible: isEcoModeAvailable\"> <button data-bind=\"click: divertGroup.save, text: (divertGroup.fetching() ? 'Saving' : (divertGroup.success() ? 'Saved' : 'Save')), disable: divertGroup.fetching\">Save</button> </p> </div> </div> <div id=\"content-3\" data-bind=\"visible: isStatus\"> <div data-bind=\"visible: openevse.isError\" class=\"box box-full left error\"> <h4>EVSE Error</h4> <span data-bind=\"text: status.estate\"></span> </div> <div data-bind=\"visible: !status.rapi_connected()\" class=\"box box-full left error\"> <h4>EVSE Error</h4> <span>OpenEVSE not responding or not connected</span> </div> <div data-bind=\"visible: !openevse.isError() &amp;&amp; status.rapi_connected(),\n"
" css: { ready: openevse.isReady(),\n"
" connected: openevse.isConnected() &amp;&amp; !openevse.isCharging(),\n"
" charging: openevse.isCharging(),\n"
Expand Down
2 changes: 1 addition & 1 deletion src/web_static/web_server.home.js.h

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/web_static/web_server.lib.js.h

Large diffs are not rendered by default.

2 changes: 0 additions & 2 deletions src/web_static/web_server_static_files.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
#include "web_server.wifi_signal_3.svg.h"
#include "web_server.wifi_signal_4.svg.h"
#include "web_server.wifi_signal_5.svg.h"
#include "web_server.zones.json.h"
StaticFile staticFiles[] = {
{ "/assets.js", CONTENT_ASSETS_JS, sizeof(CONTENT_ASSETS_JS) - 1, _CONTENT_TYPE_JS },
{ "/emoncms.jpg", CONTENT_EMONCMS_JPG, sizeof(CONTENT_EMONCMS_JPG) - 1, _CONTENT_TYPE_JPEG },
Expand All @@ -32,5 +31,4 @@ StaticFile staticFiles[] = {
{ "/wifi_signal_3.svg", CONTENT_WIFI_SIGNAL_3_SVG, sizeof(CONTENT_WIFI_SIGNAL_3_SVG) - 1, _CONTENT_TYPE_SVG },
{ "/wifi_signal_4.svg", CONTENT_WIFI_SIGNAL_4_SVG, sizeof(CONTENT_WIFI_SIGNAL_4_SVG) - 1, _CONTENT_TYPE_SVG },
{ "/wifi_signal_5.svg", CONTENT_WIFI_SIGNAL_5_SVG, sizeof(CONTENT_WIFI_SIGNAL_5_SVG) - 1, _CONTENT_TYPE_SVG },
{ "/zones.json", CONTENT_ZONES_JSON, sizeof(CONTENT_ZONES_JSON) - 1, _CONTENT_TYPE_TEXT },
};

3 comments on commit b87bb42

@Edison517
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm getting this error viewing my dashboard app while using 2.9.1; maybe it has something to do with the dashboard I created on data.openevse.com?
Screen Shot 2020-08-03 at 15 41 22

@Edison517
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm getting this error viewing my dashboard app while using 2.9.1; maybe it has something to do with the dashboard I created on data.openevse.com?
Screen Shot 2020-08-03 at 15 41 22

I think I found the error; I had to re-enter my openevse data write api key in the dashboard; maybe it gets wiped on firmware updates?

@jeremypoulter
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, will look in to it

Please sign in to comment.