generate and parse querystring

This commit is contained in:
Matt Walsh
2024-04-11 23:42:51 -05:00
parent 5d00cf4608
commit 941bcacfad
8 changed files with 78 additions and 50 deletions

View File

@@ -4,7 +4,7 @@ import {
message as navMessage, isPlaying, resize, resetStatuses, latLonReceived, stopAutoRefreshTimer, registerRefreshData,
} from './modules/navigation.mjs';
import { round2 } from './modules/utils/units.mjs';
import { createLink, readLink } from './modules/share.mjs';
import { readLink } from './modules/share.mjs';
document.addEventListener('DOMContentLoaded', () => {
init();
@@ -82,10 +82,15 @@ const init = () => {
return false;
};
// Auto load the previous query
const query = localStorage.getItem('latLonQuery');
const latLon = localStorage.getItem('latLon');
const fromGPS = localStorage.getItem('latLonFromGPS');
// attempt to parse the url parameters
const parsedParameters = readLink();
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) {
const txtAddress = document.querySelector(TXT_ADDRESS_SELECTOR);
txtAddress.value = query;
@@ -239,14 +244,14 @@ const loadData = (_latLon, haveDataCallback) => {
const swipeCallBack = (direction) => {
switch (direction) {
case 'left':
btnNavigateNextClick();
break;
case 'left':
btnNavigateNextClick();
break;
case 'right':
default:
btnNavigatePreviousClick();
break;
case 'right':
default:
btnNavigatePreviousClick();
break;
}
};
@@ -298,41 +303,41 @@ const documentKeydown = (e) => {
if (document.fullscreenElement || document.activeElement === document.body) {
switch (key) {
case ' ': // Space
// don't scroll
e.preventDefault();
btnNavigatePlayClick();
return false;
case ' ': // Space
// don't scroll
e.preventDefault();
btnNavigatePlayClick();
return false;
case 'ArrowRight':
case 'PageDown':
// don't scroll
e.preventDefault();
btnNavigateNextClick();
return false;
case 'ArrowRight':
case 'PageDown':
// don't scroll
e.preventDefault();
btnNavigateNextClick();
return false;
case 'ArrowLeft':
case 'PageUp':
// don't scroll
e.preventDefault();
btnNavigatePreviousClick();
return false;
case 'ArrowLeft':
case 'PageUp':
// don't scroll
e.preventDefault();
btnNavigatePreviousClick();
return false;
case 'ArrowUp': // Home
e.preventDefault();
btnNavigateMenuClick();
return false;
case 'ArrowUp': // Home
e.preventDefault();
btnNavigateMenuClick();
return false;
case '0': // "O" Restart
btnNavigateRefreshClick();
return false;
case '0': // "O" Restart
btnNavigateRefreshClick();
return false;
case 'F':
case 'f':
btnFullScreenClick();
return false;
case 'F':
case 'f':
btnFullScreenClick();
return false;
default:
default:
}
}
return false;

View File

@@ -5,7 +5,7 @@ const init = () => {
document.querySelector('#share-link').addEventListener('click', createLink);
};
const createLink = (e) => {
const createLink = async (e) => {
// cancel default event (click on hyperlink)
e.preventDefault();
// get all checkboxes on page
@@ -21,7 +21,8 @@ const createLink = (e) => {
});
// 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();
@@ -30,9 +31,22 @@ const createLink = (e) => {
console.log(queryStringElements);
console.log(queryString);
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 {
createLink,

View File

@@ -1,8 +1,8 @@
// rewrite some urls for local server
const rewriteUrl = (_url) => {
let url = _url;
url = url.replace('https://api.weather.gov/', window.location.href);
url = url.replace('https://www.cpc.ncep.noaa.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.protocol}//${window.location.host}/`);
return url;
};