Skip to content

Commit 905d936

Browse files
committed
Science Commit 5.
1 parent d4c246c commit 905d936

67 files changed

Lines changed: 870 additions & 27 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

california/cia/servlets/servlet/src/main/webapp/index.jsp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
2020
<title>CaliforniaCIA™ — Intelligence Reporting Module</title>
2121
<link rel="stylesheet" href="css/style.css"/>
22+
<script src="js/scroll-preserve.js"></script>
2223
</head>
2324
<body>
2425
<nav class="nav"><div class="nav-inner">
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* NitroWebExpress™ — Scroll Position Preservation
3+
* Saves and restores scroll position across page reloads, form submissions,
4+
* and navigation within the same page. Uses sessionStorage keyed by URL path.
5+
*
6+
* Include in <head> or before </body> on any JSP page:
7+
* <script src="${pageContext.request.contextPath}/js/scroll-preserve.js"></script>
8+
*
9+
* MEARVK LLC — 2026
10+
*/
11+
(function() {
12+
'use strict';
13+
14+
var STORAGE_KEY = 'nwe-scroll-' + window.location.pathname;
15+
16+
// Restore scroll position on page load
17+
function restoreScroll() {
18+
var saved = sessionStorage.getItem(STORAGE_KEY);
19+
if (saved) {
20+
var pos = JSON.parse(saved);
21+
window.scrollTo(pos.x, pos.y);
22+
}
23+
}
24+
25+
// Save scroll position
26+
function saveScroll() {
27+
var pos = { x: window.scrollX || window.pageXOffset, y: window.scrollY || window.pageYOffset };
28+
try {
29+
sessionStorage.setItem(STORAGE_KEY, JSON.stringify(pos));
30+
} catch (e) { /* sessionStorage full or unavailable */ }
31+
}
32+
33+
// Save on scroll (debounced)
34+
var scrollTimer = null;
35+
window.addEventListener('scroll', function() {
36+
if (scrollTimer) clearTimeout(scrollTimer);
37+
scrollTimer = setTimeout(saveScroll, 150);
38+
}, { passive: true });
39+
40+
// Save before unload (navigation, reload, form submit)
41+
window.addEventListener('beforeunload', saveScroll);
42+
43+
// Restore after DOM is ready
44+
if (document.readyState === 'complete' || document.readyState === 'interactive') {
45+
setTimeout(restoreScroll, 0);
46+
} else {
47+
document.addEventListener('DOMContentLoaded', restoreScroll);
48+
}
49+
})();

california/cia/servlets/servlet/src/main/webapp/report.jsp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
<%@ page import="java.sql.*, java.util.Properties, java.io.*" %>
33
<!DOCTYPE html>
44
<html lang="en">
5-
<head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Report — CaliforniaCIA™</title><link rel="stylesheet" href="css/style.css"/></head>
5+
<head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Report — CaliforniaCIA™</title><link rel="stylesheet" href="css/style.css"/><script src="js/scroll-preserve.js"></script>
6+
</head>
67
<body>
78
<nav class="nav"><div class="nav-inner"><span class="nav-brand">CaliforniaCIA™</span><ul class="nav-links"><li><a href="index.jsp">Overview</a></li><li><a href="report.jsp" class="active">Report</a></li><li><a href="foia.jsp">FOIA</a></li><li><a href="search.jsp">Search</a></li><li><a href="status.jsp">Status</a></li></ul></div></nav>
89
<section class="hero" style="padding:4rem 2rem;"><div class="hero-inner"><span class="hero-tag">Intelligence Reporting</span><h1>Submit Information</h1><p>Report intelligence information to local database. AI-categorized and queued for review.</p></div></section>

california/fbi/servlets/servlet/src/main/webapp/index.jsp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
2222
<title>CaliforniaFBI™ — Crime Reporting Module</title>
2323
<link rel="stylesheet" href="css/style.css"/>
24+
<script src="js/scroll-preserve.js"></script>
2425
</head>
2526
<body>
2627
<nav class="nav"><div class="nav-inner">
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* NitroWebExpress™ — Scroll Position Preservation
3+
* Saves and restores scroll position across page reloads, form submissions,
4+
* and navigation within the same page. Uses sessionStorage keyed by URL path.
5+
*
6+
* Include in <head> or before </body> on any JSP page:
7+
* <script src="${pageContext.request.contextPath}/js/scroll-preserve.js"></script>
8+
*
9+
* MEARVK LLC — 2026
10+
*/
11+
(function() {
12+
'use strict';
13+
14+
var STORAGE_KEY = 'nwe-scroll-' + window.location.pathname;
15+
16+
// Restore scroll position on page load
17+
function restoreScroll() {
18+
var saved = sessionStorage.getItem(STORAGE_KEY);
19+
if (saved) {
20+
var pos = JSON.parse(saved);
21+
window.scrollTo(pos.x, pos.y);
22+
}
23+
}
24+
25+
// Save scroll position
26+
function saveScroll() {
27+
var pos = { x: window.scrollX || window.pageXOffset, y: window.scrollY || window.pageYOffset };
28+
try {
29+
sessionStorage.setItem(STORAGE_KEY, JSON.stringify(pos));
30+
} catch (e) { /* sessionStorage full or unavailable */ }
31+
}
32+
33+
// Save on scroll (debounced)
34+
var scrollTimer = null;
35+
window.addEventListener('scroll', function() {
36+
if (scrollTimer) clearTimeout(scrollTimer);
37+
scrollTimer = setTimeout(saveScroll, 150);
38+
}, { passive: true });
39+
40+
// Save before unload (navigation, reload, form submit)
41+
window.addEventListener('beforeunload', saveScroll);
42+
43+
// Restore after DOM is ready
44+
if (document.readyState === 'complete' || document.readyState === 'interactive') {
45+
setTimeout(restoreScroll, 0);
46+
} else {
47+
document.addEventListener('DOMContentLoaded', restoreScroll);
48+
}
49+
})();

california/fbi/servlets/servlet/src/main/webapp/report.jsp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
88
<title>Report — CaliforniaFBI™</title>
99
<link rel="stylesheet" href="css/style.css"/>
10+
<script src="js/scroll-preserve.js"></script>
1011
</head>
1112
<body>
1213
<nav class="nav"><div class="nav-inner">

california/fbi/servlets/servlet/src/main/webapp/search.jsp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
88
<title>Search — CaliforniaFBI™</title>
99
<link rel="stylesheet" href="css/style.css"/>
10+
<script src="js/scroll-preserve.js"></script>
1011
</head>
1112
<body>
1213
<nav class="nav"><div class="nav-inner">

california/fbi/servlets/servlet/src/main/webapp/status.jsp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
88
<title>Status — CaliforniaFBI™</title>
99
<link rel="stylesheet" href="css/style.css"/>
10+
<script src="js/scroll-preserve.js"></script>
1011
</head>
1112
<body>
1213
<nav class="nav"><div class="nav-inner">

california/nsa/servlets/servlet/src/main/webapp/index.jsp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
2020
<title>CaliforniaNSA™ — Cybersecurity Module</title>
2121
<link rel="stylesheet" href="css/style.css"/>
22+
<script src="js/scroll-preserve.js"></script>
2223
</head>
2324
<body>
2425
<nav class="nav"><div class="nav-inner">
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* NitroWebExpress™ — Scroll Position Preservation
3+
* Saves and restores scroll position across page reloads, form submissions,
4+
* and navigation within the same page. Uses sessionStorage keyed by URL path.
5+
*
6+
* Include in <head> or before </body> on any JSP page:
7+
* <script src="${pageContext.request.contextPath}/js/scroll-preserve.js"></script>
8+
*
9+
* MEARVK LLC — 2026
10+
*/
11+
(function() {
12+
'use strict';
13+
14+
var STORAGE_KEY = 'nwe-scroll-' + window.location.pathname;
15+
16+
// Restore scroll position on page load
17+
function restoreScroll() {
18+
var saved = sessionStorage.getItem(STORAGE_KEY);
19+
if (saved) {
20+
var pos = JSON.parse(saved);
21+
window.scrollTo(pos.x, pos.y);
22+
}
23+
}
24+
25+
// Save scroll position
26+
function saveScroll() {
27+
var pos = { x: window.scrollX || window.pageXOffset, y: window.scrollY || window.pageYOffset };
28+
try {
29+
sessionStorage.setItem(STORAGE_KEY, JSON.stringify(pos));
30+
} catch (e) { /* sessionStorage full or unavailable */ }
31+
}
32+
33+
// Save on scroll (debounced)
34+
var scrollTimer = null;
35+
window.addEventListener('scroll', function() {
36+
if (scrollTimer) clearTimeout(scrollTimer);
37+
scrollTimer = setTimeout(saveScroll, 150);
38+
}, { passive: true });
39+
40+
// Save before unload (navigation, reload, form submit)
41+
window.addEventListener('beforeunload', saveScroll);
42+
43+
// Restore after DOM is ready
44+
if (document.readyState === 'complete' || document.readyState === 'interactive') {
45+
setTimeout(restoreScroll, 0);
46+
} else {
47+
document.addEventListener('DOMContentLoaded', restoreScroll);
48+
}
49+
})();

0 commit comments

Comments
 (0)