diff --git a/server/scripts/modules/navigation.js b/server/scripts/modules/navigation.js
index 9d41431..71ac900 100644
--- a/server/scripts/modules/navigation.js
+++ b/server/scripts/modules/navigation.js
@@ -95,14 +95,14 @@ const navigation = (() => {
// start loading canvases if necessary
if (displays.length === 0) {
displays = [
- new CurrentWeather(0,'currentWeather', weatherParameters),
- new LatestObservations(1, 'latestObservations', weatherParameters),
- new TravelForecast(2, 'travelForecast', weatherParameters),
- new RegionalForecast(3, 'regionalForecast', weatherParameters),
- new LocalForecast(4, 'localForecast', weatherParameters),
- new ExtendedForecast(5, 'extendedForecast', weatherParameters),
- new Almanac(6, 'almanac', weatherParameters),
- new Radar(7, 'radar', weatherParameters),
+ new CurrentWeather(0,'currentWeather'),
+ new LatestObservations(1, 'latestObservations'),
+ new TravelForecast(2, 'travelForecast', false), // not active by default
+ new RegionalForecast(3, 'regionalForecast'),
+ new LocalForecast(4, 'localForecast'),
+ new ExtendedForecast(5, 'extendedForecast'),
+ new Almanac(6, 'almanac'),
+ new Radar(7, 'radar'),
];
}
// call for new data on each display
diff --git a/server/scripts/modules/progress.js b/server/scripts/modules/progress.js
index bd2261e..629f2ee 100644
--- a/server/scripts/modules/progress.js
+++ b/server/scripts/modules/progress.js
@@ -67,6 +67,11 @@ class Progress extends WeatherDisplay {
statusColor = '#C0C0C0';
draw.box(this.context, 'rgb(33, 40, 90)', 475, y - 15, 75, 15);
break;
+ case STATUS.disabled:
+ statusText = 'Disabled';
+ statusColor = '#C0C0C0';
+ this.context.drawImage(backgroundImage, 470, y - 20, 45, 25, 470, y - 20, 45, 25);
+ break;
default:
}
// Erase any dots that spill into the status text.
diff --git a/server/scripts/modules/travelforecast.js b/server/scripts/modules/travelforecast.js
index f79bedc..63dc7b5 100644
--- a/server/scripts/modules/travelforecast.js
+++ b/server/scripts/modules/travelforecast.js
@@ -3,9 +3,9 @@
// eslint-disable-next-line no-unused-vars
class TravelForecast extends WeatherDisplay {
- constructor(navId, elemId) {
+ constructor(navId, elemId, defaultActive) {
// special height and width for scrolling
- super(navId, elemId, 'Travel Forecast');
+ super(navId, elemId, 'Travel Forecast', defaultActive);
// pre-load background image (returns promise)
this.backgroundImage = utils.image.load('images/BackGround6_1.png');
@@ -29,7 +29,8 @@ class TravelForecast extends WeatherDisplay {
}
async getData() {
- super.getData();
+ // super checks for enabled
+ if (!super.getData()) return;
const forecastPromises = _TravelCities.map(async city => {
try {
// get point then forecast
diff --git a/server/scripts/modules/weatherdisplay.js b/server/scripts/modules/weatherdisplay.js
index 8cf39c5..dbefeec 100644
--- a/server/scripts/modules/weatherdisplay.js
+++ b/server/scripts/modules/weatherdisplay.js
@@ -7,11 +7,12 @@ const STATUS = {
loaded: Symbol('loaded'),
failed: Symbol('failed'),
noData: Symbol('noData'),
+ disabled: Symbol('disabled'),
};
// eslint-disable-next-line no-unused-vars
class WeatherDisplay {
- constructor(navId, elemId, name) {
+ constructor(navId, elemId, name, defaultEnabled) {
// navId is used in messaging
this.navId = navId;
this.elemId = undefined;
@@ -29,10 +30,39 @@ class WeatherDisplay {
this.navBaseCount = 0;
this.screenIndex = -1; // special starting condition
- this.setStatus(STATUS.loading);
+ if (elemId !== 'progress') this.addCheckbox(elemId, defaultEnabled);
+ if (this.enabled) {
+ this.setStatus(STATUS.loading);
+ } else {
+ this.setStatus(STATUS.disabled);
+ }
this.createCanvas(elemId);
}
+ addCheckbox(elemId, defaultEnabled = true) {
+ // get the saved status of the checkbox
+ let savedStatus = window.localStorage.getItem(`${elemId}Enabled`);
+ if (savedStatus === null) savedStatus = defaultEnabled;
+ if (savedStatus === 'true' || savedStatus === true) {
+ this.enabled = true;
+ } else {
+ this.enabled = false;
+ }
+
+ // create a checkbox in the selected displays area
+ const checkbox = `<label for="${elemId}Enabled">
+ <input type="checkbox" value="true" id="${elemId}Enabled" name="${elemId}Enabled"${this.enabled?' checked':''}/>
+ ${this.name}</label>`;
+ const availableDisplays = document.getElementById('enabledDisplays');
+ availableDisplays.innerHTML += checkbox;
+ const checkboxElem = document.getElementById(`${elemId}Enabled`);
+ checkboxElem.addEventListener('click', this.checkboxChange);
+ }
+
+ checkboxChange(e) {
+ console.log(e);
+ }
+
// set data status and send update to navigation module
setStatus(value) {
this.status = value;
@@ -63,10 +93,17 @@ class WeatherDisplay {
// clear current data
this.data = undefined;
// set status
- this.setStatus(STATUS.loading);
+
+ if (this.enabled) {
+ this.setStatus(STATUS.loading);
+ } else {
+ this.setStatus(STATUS.disabled);
+ return false;
+ }
// recalculate navigation timing (in case it was modified in the constructor)
this.calcNavTiming();
+ return true;
}
drawCanvas() {
@@ -226,7 +263,7 @@ class WeatherDisplay {
}
isEnabled() {
- return true;
+ return this.enabled;
}
// navigation timings
diff --git a/server/styles/index.css b/server/styles/index.css
index 8d35c60..833a038 100644
--- a/server/styles/index.css
+++ b/server/styles/index.css
@@ -261,4 +261,14 @@ jsgif
#container canvas {
position: absolute;
+}
+.heading {
+ font-weight: bold;
+ margin-top: 15px;
+}
+#enabledDisplays {
+ margin-bottom: 15px;
+}
+#enabledDisplays label {
+ display: block;
}
\ No newline at end of file
diff --git a/server/styles/twc3.css b/server/styles/twc3.css
deleted file mode 100644
index 5f28270..0000000
--- a/server/styles/twc3.css
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/views/index.ejs b/views/index.ejs
index d4e13a8..1916c02 100644
--- a/views/index.ejs
+++ b/views/index.ejs
@@ -160,6 +160,11 @@
<a href="https://github.com/netbymatt/ws4kp#weatherstar-4000">More information</a>
</div>
+ <div class='heading'>Selected displays</div>
+ <div id='enabledDisplays'>
+
+ </div>
+
<div id="divInfo">
Location: <span id="spanCity"></span> <span id="spanState"></span><br />
Station Id: <span id="spanStationId"></span><br />
diff --git a/ws4kp.code-workspace b/ws4kp.code-workspace
index 088b83b..869deee 100644
--- a/ws4kp.code-workspace
+++ b/ws4kp.code-workspace
@@ -14,10 +14,14 @@
},
"cSpell.enabled": true,
"cSpell.words": [
+ "'storm",
"Battaglia",
"Noaa",
+ "T",
+ "T'storm",
"arcgis",
- "devbridge"
+ "devbridge",
+ "nosleep"
],
},
}
\ No newline at end of file