Compare commits
	
		
			10 commits
		
	
	
		
			ccd4ffa48c
			...
			effe5acddf
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
							 | 
						effe5acddf | ||
| 
							 | 
						5cb2dc5375 | ||
| 
							 | 
						0393576e5f | ||
| 
							 | 
						d9092845af | ||
| 
							 | 
						3baf6d6870 | ||
| 
							 | 
						7a457745df | ||
| 
							 | 
						e9b0bef023 | ||
| 
							 | 
						cff7dc5b00 | ||
| 
							 | 
						14ca2935e1 | ||
| 
							 | 
						6ebd2a6703 | 
					 19 changed files with 3133 additions and 2865 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
*.js text eol=lf
 | 
			
		||||
*.mjs text eol=lf
 | 
			
		||||
*.ejs text eol=lf
 | 
			
		||||
*.html text eol=lf
 | 
			
		||||
*.json text eol=lf
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								dist/index.html
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.html
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										22
									
								
								dist/resources/vendor.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								dist/resources/vendor.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/resources/ws.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/resources/ws.min.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/resources/ws.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/resources/ws.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1043
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1043
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -1,11 +1,11 @@
 | 
			
		|||
{
 | 
			
		||||
	"name": "ws4kp",
 | 
			
		||||
	"version": "5.9.11",
 | 
			
		||||
	"version": "5.9.12",
 | 
			
		||||
	"description": "Welcome to the WeatherStar 4000+ project page!",
 | 
			
		||||
	"main": "index.js",
 | 
			
		||||
	"scripts": {
 | 
			
		||||
		"test": "echo \"Error: no test specified\" && exit 1",
 | 
			
		||||
		"build:css": "sass ./server/styles/scss/style.scss ./server/styles/compiled.css",
 | 
			
		||||
		"build:css": "sass --style=compressed ./server/styles/scss/main.scss ./server/styles/main.css",
 | 
			
		||||
		"lint": "eslint ./server/scripts/**/*.mjs",
 | 
			
		||||
		"lint:fix": "eslint --fix ./server/scripts/**/*.mjs"
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -25,7 +25,7 @@
 | 
			
		|||
		"eslint": "^8.21.0",
 | 
			
		||||
		"eslint-config-airbnb-base": "^15.0.0",
 | 
			
		||||
		"eslint-plugin-import": "^2.26.0",
 | 
			
		||||
		"eslint-plugin-sonarjs": "^0.19.0",
 | 
			
		||||
		"eslint-plugin-sonarjs": "^0.21.0",
 | 
			
		||||
		"eslint-plugin-unicorn": "^46.0.0",
 | 
			
		||||
		"express": "^4.17.1",
 | 
			
		||||
		"gulp": "^4.0.2",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -186,14 +186,15 @@ const parseData = (data) => {
 | 
			
		|||
 | 
			
		||||
	// convert to us units
 | 
			
		||||
	data.Temperature = celsiusToFahrenheit(data.Temperature);
 | 
			
		||||
	data.TemperatureUnit = 'F';
 | 
			
		||||
	// HACK
 | 
			
		||||
	// data.TemperatureUnit = 'F';
 | 
			
		||||
	data.DewPoint = celsiusToFahrenheit(data.DewPoint);
 | 
			
		||||
	data.Ceiling = Math.round(metersToFeet(data.Ceiling) / 100) * 100;
 | 
			
		||||
	data.CeilingUnit = 'ft.';
 | 
			
		||||
	// data.CeilingUnit = 'ft.';
 | 
			
		||||
	data.Visibility = kilometersToMiles(observations.visibility.value / 1000);
 | 
			
		||||
	data.VisibilityUnit = ' mi.';
 | 
			
		||||
	// data.VisibilityUnit = ' mi.';
 | 
			
		||||
	data.WindSpeed = kphToMph(data.WindSpeed);
 | 
			
		||||
	data.WindUnit = 'MPH';
 | 
			
		||||
	// data.WindUnit = 'MPH';
 | 
			
		||||
	data.Pressure = pascalToInHg(data.Pressure).toFixed(2);
 | 
			
		||||
	data.HeatIndex = celsiusToFahrenheit(data.HeatIndex);
 | 
			
		||||
	data.WindChill = celsiusToFahrenheit(data.WindChill);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ class ExtendedForecast extends WeatherDisplay {
 | 
			
		|||
		try {
 | 
			
		||||
			forecast = await json(weatherParameters.forecast, {
 | 
			
		||||
				data: {
 | 
			
		||||
					units: 'us',
 | 
			
		||||
					units: 'si',
 | 
			
		||||
				},
 | 
			
		||||
				retryCount: 3,
 | 
			
		||||
				stillWaiting: () => this.stillWaiting(),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,8 +64,9 @@ class LatestObservations extends WeatherDisplay {
 | 
			
		|||
		// sort array by station name
 | 
			
		||||
		const sortedConditions = conditions.sort((a, b) => ((a.Name < b.Name) ? -1 : 1));
 | 
			
		||||
 | 
			
		||||
		this.elem.querySelector('.column-headers .temp.english').classList.add('show');
 | 
			
		||||
		this.elem.querySelector('.column-headers .temp.metric').classList.remove('show');
 | 
			
		||||
		//this.elem.querySelector('.column-headers .temp.english').classList.add('show');
 | 
			
		||||
		//this.elem.querySelector('.column-headers .temp.metric').classList.remove('show');
 | 
			
		||||
		this.elem.querySelector('.column-headers .temp.metric').classList.add('show');
 | 
			
		||||
 | 
			
		||||
		const lines = sortedConditions.map((condition) => {
 | 
			
		||||
			const windDirection = directionToNSEW(condition.windDirection.value);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ class LocalForecast extends WeatherDisplay {
 | 
			
		|||
		forecastsElem.append(...templates);
 | 
			
		||||
 | 
			
		||||
		// increase each forecast height to a multiple of container height
 | 
			
		||||
		this.pageHeight = forecastsElem.parentNode.getBoundingClientRect().height;
 | 
			
		||||
		this.pageHeight = forecastsElem.parentNode.scrollHeight;
 | 
			
		||||
		templates.forEach((forecast) => {
 | 
			
		||||
			const newHeight = Math.ceil(forecast.scrollHeight / this.pageHeight) * this.pageHeight;
 | 
			
		||||
			forecast.style.height = `${newHeight}px`;
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +61,7 @@ class LocalForecast extends WeatherDisplay {
 | 
			
		|||
		try {
 | 
			
		||||
			return await json(weatherParameters.forecast, {
 | 
			
		||||
				data: {
 | 
			
		||||
					units: 'us',
 | 
			
		||||
					units: 'si',
 | 
			
		||||
				},
 | 
			
		||||
				retryCount: 3,
 | 
			
		||||
				stillWaiting: () => this.stillWaiting(),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -80,7 +80,7 @@ class RegionalForecast extends WeatherDisplay {
 | 
			
		|||
				// start off the observation task
 | 
			
		||||
				const observationPromise = utils.getRegionalObservation(point, city);
 | 
			
		||||
 | 
			
		||||
				const forecast = await json(`https://api.weather.gov/gridpoints/${point.wfo}/${point.x},${point.y}/forecast`);
 | 
			
		||||
				const forecast = await json(`https://api.weather.gov/gridpoints/${point.wfo}/${point.x},${point.y}/forecast?units=si`);
 | 
			
		||||
 | 
			
		||||
				// get XY on map for city
 | 
			
		||||
				const cityXY = utils.getXYForCity(city, minMaxLatLon.maxLat, minMaxLatLon.minLon, weatherParameters.state);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,9 +3,10 @@
 | 
			
		|||
const round2 = (value, decimals) => Math.trunc(value * 10 ** decimals) / 10 ** decimals;
 | 
			
		||||
 | 
			
		||||
const kphToMph = (Kph) => Math.round(Kph / 1.609_34);
 | 
			
		||||
const celsiusToFahrenheit = (Celsius) => Math.round((Celsius * 9) / 5 + 32);
 | 
			
		||||
const kilometersToMiles = (Kilometers) => Math.round(Kilometers / 1.609_34);
 | 
			
		||||
const metersToFeet = (Meters) => Math.round(Meters / 0.3048);
 | 
			
		||||
// HACK!
 | 
			
		||||
const celsiusToFahrenheit = (Celsius) => Celsius; // Math.round((Celsius * 9) / 5 + 32);
 | 
			
		||||
const kilometersToMiles = (Kilometers) => Kilometers; // Math.round(Kilometers / 1.609_34);
 | 
			
		||||
const metersToFeet = (Meters) => Meters; // Math.round(Meters / 0.3048);
 | 
			
		||||
const pascalToInHg = (Pascal) => round2(Pascal * 0.000_295_3, 2);
 | 
			
		||||
 | 
			
		||||
export {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@ class WeatherDisplay {
 | 
			
		|||
		this.timing = {
 | 
			
		||||
			totalScreens: 1,
 | 
			
		||||
			baseDelay: 9000, // 5 seconds
 | 
			
		||||
			delay: 1, // 1*1second = 1 second total display time
 | 
			
		||||
			delay: 2, // 1*1second = 1 second total display time
 | 
			
		||||
		};
 | 
			
		||||
		this.navBaseCount = 0;
 | 
			
		||||
		this.screenIndex = -1;	// special starting condition
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1921
									
								
								server/scripts/vendor/auto/jquery.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1921
									
								
								server/scripts/vendor/auto/jquery.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										2
									
								
								server/scripts/vendor/auto/luxon.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								server/scripts/vendor/auto/luxon.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2843
									
								
								server/scripts/vendor/auto/luxon.mjs
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2843
									
								
								server/scripts/vendor/auto/luxon.mjs
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										12
									
								
								server/scripts/vendor/auto/swiped-events.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								server/scripts/vendor/auto/swiped-events.js
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -46,12 +46,20 @@
 | 
			
		|||
        // if the user released on a different target, cancel!
 | 
			
		||||
        if (startEl !== e.target) return;
 | 
			
		||||
 | 
			
		||||
        var swipeThreshold = parseInt(getNearestAttribute(startEl, 'data-swipe-threshold', '20'), 10); // default 20px
 | 
			
		||||
        var swipeThreshold = parseInt(getNearestAttribute(startEl, 'data-swipe-threshold', '20'), 10); // default 20 units
 | 
			
		||||
        var swipeUnit = getNearestAttribute(startEl, 'data-swipe-unit', 'px'); // default px
 | 
			
		||||
        var swipeTimeout = parseInt(getNearestAttribute(startEl, 'data-swipe-timeout', '500'), 10);    // default 500ms
 | 
			
		||||
        var timeDiff = Date.now() - timeDown;
 | 
			
		||||
        var eventType = '';
 | 
			
		||||
        var changedTouches = e.changedTouches || e.touches || [];
 | 
			
		||||
 | 
			
		||||
        if (swipeUnit === 'vh') {
 | 
			
		||||
            swipeThreshold = Math.round((swipeThreshold / 100) * document.documentElement.clientHeight); // get percentage of viewport height in pixels
 | 
			
		||||
        }
 | 
			
		||||
        if (swipeUnit === 'vw') {
 | 
			
		||||
            swipeThreshold = Math.round((swipeThreshold / 100) * document.documentElement.clientWidth); // get percentage of viewport height in pixels
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (Math.abs(xDiff) > Math.abs(yDiff)) { // most significant
 | 
			
		||||
            if (Math.abs(xDiff) > swipeThreshold && timeDiff < swipeTimeout) {
 | 
			
		||||
                if (xDiff > 0) {
 | 
			
		||||
| 
						 | 
				
			
			@ -139,7 +147,7 @@
 | 
			
		|||
     */
 | 
			
		||||
    function getNearestAttribute(el, attributeName, defaultValue) {
 | 
			
		||||
 | 
			
		||||
        // walk up the dom tree looking for data-action and data-trigger
 | 
			
		||||
        // walk up the dom tree looking for attributeName
 | 
			
		||||
        while (el && el !== document.documentElement) {
 | 
			
		||||
 | 
			
		||||
            var attributeValue = el.getAttribute(attributeName);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,5 +52,6 @@
 | 
			
		|||
			"editor.defaultFormatter": "j69.ejs-beautify"
 | 
			
		||||
		},
 | 
			
		||||
		"files.exclude": {},
 | 
			
		||||
		"files.eol": "\n",
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in a new issue