mirror of
https://github.com/netbymatt/ws4kp.git
synced 2026-04-21 02:59:31 -07:00
generate and parse querystring
This commit is contained in:
@@ -4,7 +4,7 @@ import {
|
|||||||
message as navMessage, isPlaying, resize, resetStatuses, latLonReceived, stopAutoRefreshTimer, registerRefreshData,
|
message as navMessage, isPlaying, resize, resetStatuses, latLonReceived, stopAutoRefreshTimer, registerRefreshData,
|
||||||
} from './modules/navigation.mjs';
|
} from './modules/navigation.mjs';
|
||||||
import { round2 } from './modules/utils/units.mjs';
|
import { round2 } from './modules/utils/units.mjs';
|
||||||
import { createLink, readLink } from './modules/share.mjs';
|
import { readLink } from './modules/share.mjs';
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
init();
|
init();
|
||||||
@@ -82,10 +82,15 @@ const init = () => {
|
|||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Auto load the previous query
|
// attempt to parse the url parameters
|
||||||
const query = localStorage.getItem('latLonQuery');
|
const parsedParameters = readLink();
|
||||||
const latLon = localStorage.getItem('latLon');
|
|
||||||
const fromGPS = localStorage.getItem('latLonFromGPS');
|
const loadFromParsed = parsedParameters.latLonQuery && parsedParameters.latLon;
|
||||||
|
|
||||||
|
// Auto load the parsed parameters and fall back to the previous query
|
||||||
|
const query = parsedParameters.latLonQuery ?? localStorage.getItem('latLonQuery');
|
||||||
|
const latLon = parsedParameters.latLon ?? localStorage.getItem('latLon');
|
||||||
|
const fromGPS = localStorage.getItem('latLonFromGPS') && !loadFromParsed;
|
||||||
if (query && latLon && !fromGPS) {
|
if (query && latLon && !fromGPS) {
|
||||||
const txtAddress = document.querySelector(TXT_ADDRESS_SELECTOR);
|
const txtAddress = document.querySelector(TXT_ADDRESS_SELECTOR);
|
||||||
txtAddress.value = query;
|
txtAddress.value = query;
|
||||||
@@ -239,14 +244,14 @@ const loadData = (_latLon, haveDataCallback) => {
|
|||||||
|
|
||||||
const swipeCallBack = (direction) => {
|
const swipeCallBack = (direction) => {
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case 'left':
|
case 'left':
|
||||||
btnNavigateNextClick();
|
btnNavigateNextClick();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'right':
|
case 'right':
|
||||||
default:
|
default:
|
||||||
btnNavigatePreviousClick();
|
btnNavigatePreviousClick();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -298,41 +303,41 @@ const documentKeydown = (e) => {
|
|||||||
|
|
||||||
if (document.fullscreenElement || document.activeElement === document.body) {
|
if (document.fullscreenElement || document.activeElement === document.body) {
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case ' ': // Space
|
case ' ': // Space
|
||||||
// don't scroll
|
// don't scroll
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
btnNavigatePlayClick();
|
btnNavigatePlayClick();
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case 'ArrowRight':
|
case 'ArrowRight':
|
||||||
case 'PageDown':
|
case 'PageDown':
|
||||||
// don't scroll
|
// don't scroll
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
btnNavigateNextClick();
|
btnNavigateNextClick();
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case 'ArrowLeft':
|
case 'ArrowLeft':
|
||||||
case 'PageUp':
|
case 'PageUp':
|
||||||
// don't scroll
|
// don't scroll
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
btnNavigatePreviousClick();
|
btnNavigatePreviousClick();
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case 'ArrowUp': // Home
|
case 'ArrowUp': // Home
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
btnNavigateMenuClick();
|
btnNavigateMenuClick();
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case '0': // "O" Restart
|
case '0': // "O" Restart
|
||||||
btnNavigateRefreshClick();
|
btnNavigateRefreshClick();
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case 'F':
|
case 'F':
|
||||||
case 'f':
|
case 'f':
|
||||||
btnFullScreenClick();
|
btnFullScreenClick();
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ const init = () => {
|
|||||||
document.querySelector('#share-link').addEventListener('click', createLink);
|
document.querySelector('#share-link').addEventListener('click', createLink);
|
||||||
};
|
};
|
||||||
|
|
||||||
const createLink = (e) => {
|
const createLink = async (e) => {
|
||||||
// cancel default event (click on hyperlink)
|
// cancel default event (click on hyperlink)
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
// get all checkboxes on page
|
// get all checkboxes on page
|
||||||
@@ -21,7 +21,8 @@ const createLink = (e) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// add the location string
|
// add the location string
|
||||||
queryStringElements.txtAddress = document.querySelector('#txtAddress')?.value ?? '';
|
queryStringElements.latLonQuery = localStorage.getItem('latLonQuery');
|
||||||
|
queryStringElements.latLon = localStorage.getItem('latLon');
|
||||||
|
|
||||||
const queryString = (new URLSearchParams(queryStringElements)).toString();
|
const queryString = (new URLSearchParams(queryStringElements)).toString();
|
||||||
|
|
||||||
@@ -30,9 +31,22 @@ const createLink = (e) => {
|
|||||||
console.log(queryStringElements);
|
console.log(queryStringElements);
|
||||||
console.log(queryString);
|
console.log(queryString);
|
||||||
console.log(url.toString());
|
console.log(url.toString());
|
||||||
|
try {
|
||||||
|
await navigator.clipboard.writeText(url.toString());
|
||||||
|
const confirmSpan = document.querySelector('#share-link-copied');
|
||||||
|
confirmSpan.style.display = 'inline';
|
||||||
|
setTimeout(() => {
|
||||||
|
confirmSpan.style.display = 'none';
|
||||||
|
}, 5000);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const readLink = false;
|
const readLink = () => {
|
||||||
|
const urlSearchParams = new URLSearchParams(window.location.search);
|
||||||
|
return Object.fromEntries(urlSearchParams.entries());
|
||||||
|
};
|
||||||
|
|
||||||
export {
|
export {
|
||||||
createLink,
|
createLink,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
// rewrite some urls for local server
|
// rewrite some urls for local server
|
||||||
const rewriteUrl = (_url) => {
|
const rewriteUrl = (_url) => {
|
||||||
let url = _url;
|
let url = _url;
|
||||||
url = url.replace('https://api.weather.gov/', window.location.href);
|
url = url.replace('https://api.weather.gov/', `${window.location.protocol}//${window.location.host}/`);
|
||||||
url = url.replace('https://www.cpc.ncep.noaa.gov/', window.location.href);
|
url = url.replace('https://www.cpc.ncep.noaa.gov/', `${window.location.protocol}//${window.location.host}/`);
|
||||||
return url;
|
return url;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,5 @@
|
|||||||
@use 'shared/_utils'as u;
|
@use 'shared/_utils'as u;
|
||||||
|
@use 'shared/_colors'as c;
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Star4000";
|
font-family: "Star4000";
|
||||||
@@ -697,4 +698,9 @@ body {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#share-link-copied {
|
||||||
|
color: c.$title-color;
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class='info'>
|
<div class='info'>
|
||||||
<a href='' id='share-link'>Share this configuration</a>
|
<a href='' id='share-link'>Copy Configuration Link</a> <span id="share-link-copied">Link copied to clipboard!</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="divInfo">
|
<div id="divInfo">
|
||||||
|
|||||||
@@ -53,6 +53,9 @@
|
|||||||
},
|
},
|
||||||
"files.exclude": {},
|
"files.exclude": {},
|
||||||
"files.eol": "\n",
|
"files.eol": "\n",
|
||||||
"editor.formatOnSave": true,
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll.eslint": true
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user