Merge branch 'HEAD' into main

This commit is contained in:
Matt Walsh 2023-09-20 15:41:13 -05:00
commit 3baf6d6870
9 changed files with 3107 additions and 2828 deletions

1
.gitattributes vendored
View file

@ -1,4 +1,5 @@
*.js text eol=lf *.js text eol=lf
*.mjs text eol=lf
*.ejs text eol=lf *.ejs text eol=lf
*.html text eol=lf *.html text eol=lf
*.json text eol=lf *.json text eol=lf

1039
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -25,7 +25,7 @@
"eslint": "^8.21.0", "eslint": "^8.21.0",
"eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-base": "^15.0.0",
"eslint-plugin-import": "^2.26.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", "eslint-plugin-unicorn": "^46.0.0",
"express": "^4.17.1", "express": "^4.17.1",
"gulp": "^4.0.2", "gulp": "^4.0.2",
@ -46,4 +46,4 @@
"terser-webpack-plugin": "^5.3.6", "terser-webpack-plugin": "^5.3.6",
"webpack-stream": "^7.0.0" "webpack-stream": "^7.0.0"
} }
} }

View file

@ -44,7 +44,7 @@ class LocalForecast extends WeatherDisplay {
forecastsElem.append(...templates); forecastsElem.append(...templates);
// increase each forecast height to a multiple of container height // increase each forecast height to a multiple of container height
this.pageHeight = forecastsElem.parentNode.getBoundingClientRect().height; this.pageHeight = forecastsElem.parentNode.scrollHeight;
templates.forEach((forecast) => { templates.forEach((forecast) => {
const newHeight = Math.ceil(forecast.scrollHeight / this.pageHeight) * this.pageHeight; const newHeight = Math.ceil(forecast.scrollHeight / this.pageHeight) * this.pageHeight;
forecast.style.height = `${newHeight}px`; forecast.style.height = `${newHeight}px`;

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -46,12 +46,20 @@
// if the user released on a different target, cancel! // if the user released on a different target, cancel!
if (startEl !== e.target) return; 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 swipeTimeout = parseInt(getNearestAttribute(startEl, 'data-swipe-timeout', '500'), 10); // default 500ms
var timeDiff = Date.now() - timeDown; var timeDiff = Date.now() - timeDown;
var eventType = ''; var eventType = '';
var changedTouches = e.changedTouches || e.touches || []; 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) > Math.abs(yDiff)) { // most significant
if (Math.abs(xDiff) > swipeThreshold && timeDiff < swipeTimeout) { if (Math.abs(xDiff) > swipeThreshold && timeDiff < swipeTimeout) {
if (xDiff > 0) { if (xDiff > 0) {
@ -139,7 +147,7 @@
*/ */
function getNearestAttribute(el, attributeName, defaultValue) { 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) { while (el && el !== document.documentElement) {
var attributeValue = el.getAttribute(attributeName); var attributeValue = el.getAttribute(attributeName);

View file

@ -1,56 +1,57 @@
{ {
"folders": [ "folders": [
{ {
"path": "." "path": "."
} }
], ],
"settings": { "settings": {
"search.exclude": { "search.exclude": {
"**/*.code-search": true, "**/*.code-search": true,
"**/*.css": true, "**/*.css": true,
"**/*.min.js": true, "**/*.min.js": true,
"**/bower_components": true, "**/bower_components": true,
"**/node_modules": true, "**/node_modules": true,
"**/vendor": true, "**/vendor": true,
"dist/**": true "dist/**": true
}, },
"cSpell.enabled": true, "cSpell.enabled": true,
"cSpell.words": [ "cSpell.words": [
"'storm", "'storm",
"arcgis", "arcgis",
"Battaglia", "Battaglia",
"devbridge", "devbridge",
"gifs", "gifs",
"ltrim", "ltrim",
"Noaa", "Noaa",
"nosleep", "nosleep",
"Pngs", "Pngs",
"PRECIP", "PRECIP",
"rtrim", "rtrim",
"sonarjs", "sonarjs",
"T", "T",
"T'storm", "T'storm",
"uscomp", "uscomp",
"Visib", "Visib",
"Waukegan" "Waukegan"
], ],
"cSpell.ignorePaths": [ "cSpell.ignorePaths": [
"**/package-lock.json", "**/package-lock.json",
"**/node_modules/**", "**/node_modules/**",
"**/vscode-extension/**", "**/vscode-extension/**",
"**/.git/objects/**", "**/.git/objects/**",
".vscode", ".vscode",
".vscode-insiders", ".vscode-insiders",
"**/vendor/auto/**", "**/vendor/auto/**",
"**/twc3.js", "**/twc3.js",
], ],
"editor.tabSize": 2, "editor.tabSize": 2,
"emmet.includeLanguages": { "emmet.includeLanguages": {
"ejs": "html", "ejs": "html",
}, },
"[html]": { "[html]": {
"editor.defaultFormatter": "j69.ejs-beautify" "editor.defaultFormatter": "j69.ejs-beautify"
}, },
"files.exclude": {}, "files.exclude": {},
}, "files.eol": "\n",
},
} }