mirror of
https://github.com/netbymatt/ws4kp.git
synced 2026-04-22 19:49:31 -07:00
add "share" link
This commit is contained in:
@@ -4,6 +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';
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
init();
|
init();
|
||||||
@@ -176,7 +177,7 @@ const enterFullScreen = () => {
|
|||||||
|
|
||||||
// Supports most browsers and their versions.
|
// Supports most browsers and their versions.
|
||||||
const requestMethod = element.requestFullScreen || element.webkitRequestFullScreen
|
const requestMethod = element.requestFullScreen || element.webkitRequestFullScreen
|
||||||
|| element.mozRequestFullScreen || element.msRequestFullscreen;
|
|| element.mozRequestFullScreen || element.msRequestFullscreen;
|
||||||
|
|
||||||
if (requestMethod) {
|
if (requestMethod) {
|
||||||
// Native full screen.
|
// Native full screen.
|
||||||
@@ -238,14 +239,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;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -297,41 +298,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;
|
||||||
|
|||||||
40
server/scripts/modules/share.mjs
Normal file
40
server/scripts/modules/share.mjs
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
document.addEventListener('DOMContentLoaded', () => init());
|
||||||
|
|
||||||
|
const init = () => {
|
||||||
|
// add action to existing link
|
||||||
|
document.querySelector('#share-link').addEventListener('click', createLink);
|
||||||
|
};
|
||||||
|
|
||||||
|
const createLink = (e) => {
|
||||||
|
// cancel default event (click on hyperlink)
|
||||||
|
e.preventDefault();
|
||||||
|
// get all checkboxes on page
|
||||||
|
const checkboxes = document.querySelectorAll('input[type=checkbox]');
|
||||||
|
|
||||||
|
// list to receive checkbox statuses
|
||||||
|
const queryStringElements = {};
|
||||||
|
|
||||||
|
[...checkboxes].forEach((elem) => {
|
||||||
|
if (elem?.id) {
|
||||||
|
queryStringElements[elem.id] = elem?.checked ?? false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// add the location string
|
||||||
|
queryStringElements.txtAddress = document.querySelector('#txtAddress')?.value ?? '';
|
||||||
|
|
||||||
|
const queryString = (new URLSearchParams(queryStringElements)).toString();
|
||||||
|
|
||||||
|
const url = new URL(`?${queryString}`, document.location.href);
|
||||||
|
|
||||||
|
console.log(queryStringElements);
|
||||||
|
console.log(queryString);
|
||||||
|
console.log(url.toString());
|
||||||
|
};
|
||||||
|
|
||||||
|
const readLink = false;
|
||||||
|
|
||||||
|
export {
|
||||||
|
createLink,
|
||||||
|
readLink,
|
||||||
|
};
|
||||||
@@ -151,6 +151,10 @@
|
|||||||
<div id='settings'>
|
<div id='settings'>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class='info'>
|
||||||
|
<a href='' id='share-link'>Share this configuration</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="divInfo">
|
<div id="divInfo">
|
||||||
Location: <span id="spanCity"></span> <span id="spanState"></span><br />
|
Location: <span id="spanCity"></span> <span id="spanState"></span><br />
|
||||||
Station Id: <span id="spanStationId"></span><br />
|
Station Id: <span id="spanStationId"></span><br />
|
||||||
|
|||||||
Reference in New Issue
Block a user