diff --git a/data/org.gnome.shell.extensions.openweather.gschema.xml.in b/data/org.gnome.shell.extensions.openweather.gschema.xml.in
index c740fd7..c2e9e13 100644
--- a/data/org.gnome.shell.extensions.openweather.gschema.xml.in
+++ b/data/org.gnome.shell.extensions.openweather.gschema.xml.in
@@ -100,6 +100,10 @@
2
<_summary>Number of days in forecast
+
+ 1
+ <_summary>Maximal number of digits after the decimal point
+
''
<_summary>Your personal API key from openweathermap.org
diff --git a/src/extension.js b/src/extension.js
index dfe02b5..6796a43 100644
--- a/src/extension.js
+++ b/src/extension.js
@@ -71,6 +71,7 @@ const WEATHER_REFRESH_INTERVAL_CURRENT = 'refresh-interval-current';
const WEATHER_REFRESH_INTERVAL_FORECAST = 'refresh-interval-forecast';
const WEATHER_CENTER_FORECAST_KEY = 'center-forecast';
const WEATHER_DAYS_FORECAST = 'days-forecast';
+const WEATHER_DECIMAL_PLACES = 'decimal-places';
const WEATHER_OWM_API_KEY = 'appid';
//URL
@@ -621,6 +622,18 @@ const WeatherMenuButton = new Lang.Class({
this._settings.set_int(WEATHER_DAYS_FORECAST, v);
},
+ get _decimal_places() {
+ if (!this._settings)
+ this.loadConfig();
+ return this._settings.get_int(WEATHER_DECIMAL_PLACES);
+ },
+
+ set _decimal_places(v) {
+ if (!this._settings)
+ this.loadConfig();
+ this._settings.set_int(WEATHER_DECIMAL_PLACES, v);
+ },
+
get _appid() {
if (!this._settings)
this.loadConfig();
@@ -1020,35 +1033,35 @@ weather-storm.png = weather-storm-symbolic.svg
},
toFahrenheit: function(t) {
- return String(Math.round(((Number(t) * 1.8) + 32) * 10) / 10);
+ return ((Number(t) * 1.8) + 32).toFixed(this._decimal_places);
},
toKelvin: function(t) {
- return String(Math.round((Number(t) + 273.15) * 10) / 10);
+ return (Number(t) + 273.15).toFixed(this._decimal_places);
},
toRankine: function(t) {
- return String(Math.round(((Number(t) * 1.8) + 491.67) * 10) / 10);
+ return ((Number(t) * 1.8) + 491.67).toFixed(this._decimal_places);
},
toReaumur: function(t) {
- return String(Math.round((Number(t) * 0.8) * 10) / 10);
+ return (Number(t) * 0.8).toFixed(this._decimal_places);
},
toRoemer: function(t) {
- return String(Math.round(((Number(t) * 21 / 40) + 7.5) * 10) / 10);
+ return ((Number(t) * 21 / 40) + 7.5).toFixed(this._decimal_places);
},
toDelisle: function(t) {
- return String(Math.round(((100 - Number(t)) * 1.5) * 10) / 10);
+ return ((100 - Number(t)) * 1.5).toFixed(this._decimal_places);
},
toNewton: function(t) {
- return String(Math.round((Number(t) - 0.33) * 10) / 10);
+ return (Number(t) - 0.33).toFixed(this._decimal_places);
},
toInHg: function(p /*, t*/ ) {
- return Math.round((p / 33.86530749) * 10) / 10;
+ return (p / 33.86530749).toFixed(this._decimal_places);
},
toBeaufort: function(w, t) {
@@ -1231,42 +1244,42 @@ weather-storm.png = weather-storm-symbolic.svg
break;
case WeatherPressureUnits.hPa:
- pressure = Math.round(pressure * 10) / 10;
+ pressure = pressure.toFixed(this._decimal_places);;
pressure_unit = "hPa";
break;
case WeatherPressureUnits.bar:
- pressure = Math.round((pressure / 1000) * 10) / 10;
+ pressure = (pressure / 1000).toFixed(this._decimal_places);
pressure_unit = "bar";
break;
case WeatherPressureUnits.Pa:
- pressure = Math.round((pressure * 100) * 10) / 10;
+ pressure = (pressure * 100).toFixed(this._decimal_places);
pressure_unit = "Pa";
break;
case WeatherPressureUnits.kPa:
- pressure = Math.round((pressure / 10) * 10) / 10;
+ pressure = (pressure / 10).toFixed(this._decimal_places);
pressure_unit = "kPa";
break;
case WeatherPressureUnits.atm:
- pressure = Math.round((pressure * 0.000986923267) * 10) / 10;
+ pressure = (pressure * 0.000986923267).toFixed(this._decimal_places);
pressure_unit = "atm";
break;
case WeatherPressureUnits.at:
- pressure = Math.round((pressure * 0.00101971621298) * 10) / 10;
+ pressure = (pressure * 0.00101971621298).toFixed(this._decimal_places);
pressure_unit = "at";
break;
case WeatherPressureUnits.Torr:
- pressure = Math.round((pressure * 0.750061683) * 10) / 10;
+ pressure = (pressure * 0.750061683).toFixed(this._decimal_places);
pressure_unit = "Torr";
break;
case WeatherPressureUnits.psi:
- pressure = Math.round((pressure * 0.0145037738) * 10) / 10;
+ pressure = (pressure * 0.0145037738).toFixed(this._decimal_places);
pressure_unit = "psi";
break;
}
@@ -1277,7 +1290,7 @@ weather-storm.png = weather-storm-symbolic.svg
break;
case WeatherUnits.CELSIUS:
- temperature = Math.round(temperature * 10) / 10;
+ temperature = temperature.toFixed(this._decimal_places);
break;
case WeatherUnits.KELVIN:
@@ -1350,26 +1363,26 @@ weather-storm.png = weather-storm-symbolic.svg
// Override wind units with our preference
switch (this._wind_speed_units) {
case WeatherWindSpeedUnits.MPH:
- wind = Math.round((wind * WEATHER_CONV_MPS_IN_MPH) * 10) / 10;
+ wind = (wind * WEATHER_CONV_MPS_IN_MPH).toFixed(this._decimal_places);
wind_unit = 'mph';
break;
case WeatherWindSpeedUnits.KPH:
- wind = Math.round((wind * WEATHER_CONV_MPS_IN_KPH) * 10) / 10;
+ wind = (wind * WEATHER_CONV_MPS_IN_KPH).toFixed(this._decimal_places);
wind_unit = 'km/h';
break;
case WeatherWindSpeedUnits.MPS:
- wind = Math.round(wind * 10) / 10;
+ wind = wind.toFixed(this._decimal_places);
break;
case WeatherWindSpeedUnits.KNOTS:
- wind = Math.round((wind * WEATHER_CONV_MPS_IN_KNOTS) * 10) / 10;
+ wind = (wind * WEATHER_CONV_MPS_IN_KNOTS).toFixed(this._decimal_places);
wind_unit = 'kn';
break;
case WeatherWindSpeedUnits.FPS:
- wind = Math.round((wind * WEATHER_CONV_MPS_IN_FPS) * 10) / 10;
+ wind = (wind * WEATHER_CONV_MPS_IN_FPS).toFixed(this._decimal_places);
wind_unit = 'ft/s';
break;
@@ -1461,8 +1474,8 @@ weather-storm.png = weather-storm-symbolic.svg
break;
case WeatherUnits.CELSIUS:
- t_low = Math.round(t_low * 10) / 10;
- t_high = Math.round(t_high * 10) / 10;
+ t_low = t_low.toFixed(this._decimal_places);
+ t_high = t_high.toFixed(this._decimal_places);
break;
case WeatherUnits.KELVIN:
diff --git a/src/prefs.js b/src/prefs.js
index 1c41e78..d79ee69 100644
--- a/src/prefs.js
+++ b/src/prefs.js
@@ -59,6 +59,7 @@ const WEATHER_REFRESH_INTERVAL_CURRENT = 'refresh-interval-current';
const WEATHER_REFRESH_INTERVAL_FORECAST = 'refresh-interval-forecast';
const WEATHER_CENTER_FORECAST_KEY = 'center-forecast';
const WEATHER_DAYS_FORECAST = 'days-forecast';
+const WEATHER_DECIMAL_PLACES = 'decimal-places';
const WEATHER_OWM_API_KEY = 'appid';
//URL
@@ -144,6 +145,8 @@ const WeatherPrefsWidget = new GObject.Class({
this.addSwitch("center_forecast");
this.addLabel(_("Number of days in forecast"));
this.addComboBox(["2", "3", "4", "5", "6", "7", "8", "9", "10"], "days_forecast");
+ this.addLabel(_("Maximal number of digits after the decimal point"));
+ this.addComboBox(["0", "1", "2", "3"], "decimal_places");
this.addLabel(_("Personal Api key from openweather.org"));
this.addAppidEntry(("appid"));
},
@@ -799,6 +802,18 @@ const WeatherPrefsWidget = new GObject.Class({
this.Settings.set_int(WEATHER_DAYS_FORECAST, v + 2);
},
+ get decimal_places() {
+ if (!this.Settings)
+ this.loadConfig();
+ return this.Settings.get_int(WEATHER_DECIMAL_PLACES);
+ },
+
+ set decimal_places(v) {
+ if (!this.Settings)
+ this.loadConfig();
+ this.Settings.set_int(WEATHER_DECIMAL_PLACES, v);
+ },
+
get appid() {
if (!this.Settings)
this.loadConfig();