diff --git a/datasette/templates/_debug_common_functions.html b/datasette/templates/_debug_common_functions.html
new file mode 100644
index 00000000..6dd5a9d9
--- /dev/null
+++ b/datasette/templates/_debug_common_functions.html
@@ -0,0 +1,70 @@
+
diff --git a/datasette/templates/debug_allowed.html b/datasette/templates/debug_allowed.html
index 5f22b6a4..031ff07d 100644
--- a/datasette/templates/debug_allowed.html
+++ b/datasette/templates/debug_allowed.html
@@ -5,6 +5,7 @@
{% block extra_head %}
{% include "_permission_ui_styles.html" %}
+{% include "_debug_common_functions.html" %}
{% endblock %}
{% block content %}
@@ -81,70 +82,31 @@ const pagination = document.getElementById('pagination');
const submitBtn = document.getElementById('submit-btn');
let currentData = null;
-// Populate form from URL parameters on page load
-function populateFormFromURL() {
- const params = new URLSearchParams(window.location.search);
-
- const action = params.get('action');
- if (action) {
- document.getElementById('action').value = action;
- }
-
- const parent = params.get('parent');
- if (parent) {
- document.getElementById('parent').value = parent;
- }
-
- const child = params.get('child');
- if (child) {
- document.getElementById('child').value = child;
- }
-
- const pageSize = params.get('page_size');
- if (pageSize) {
- document.getElementById('page_size').value = pageSize;
- }
-
- const page = params.get('page');
-
- // If parameters are present, automatically fetch results
- if (action) {
- fetchResults(page ? parseInt(page) : 1, false);
- }
-}
-
-// Update URL with current form values and page
-function updateURL(page = 1) {
- const formData = new FormData(form);
- const params = new URLSearchParams();
-
- for (const [key, value] of formData.entries()) {
- if (value) {
- params.append(key, value);
- }
- }
-
- if (page > 1) {
- params.set('page', page.toString());
- }
-
- const newURL = window.location.pathname + (params.toString() ? '?' + params.toString() : '');
- window.history.pushState({}, '', newURL);
-}
-
form.addEventListener('submit', async (ev) => {
ev.preventDefault();
- updateURL(1);
+ updateURL('allowed-form', 1);
await fetchResults(1, false);
});
// Handle browser back/forward
window.addEventListener('popstate', () => {
- populateFormFromURL();
+ const params = populateFormFromURL();
+ const action = params.get('action');
+ const page = params.get('page');
+ if (action) {
+ fetchResults(page ? parseInt(page) : 1, false);
+ }
});
// Populate form on initial load
-populateFormFromURL();
+(function() {
+ const params = populateFormFromURL();
+ const action = params.get('action');
+ const page = params.get('page');
+ if (action) {
+ fetchResults(page ? parseInt(page) : 1, false);
+ }
+})();
async function fetchResults(page = 1, updateHistory = true) {
submitBtn.disabled = true;
@@ -230,7 +192,7 @@ function displayResults(data) {
prevLink.textContent = '← Previous';
prevLink.addEventListener('click', (e) => {
e.preventDefault();
- updateURL(data.page - 1);
+ updateURL('allowed-form', data.page - 1);
fetchResults(data.page - 1, false);
});
pagination.appendChild(prevLink);
@@ -246,7 +208,7 @@ function displayResults(data) {
nextLink.textContent = 'Next →';
nextLink.addEventListener('click', (e) => {
e.preventDefault();
- updateURL(data.page + 1);
+ updateURL('allowed-form', data.page + 1);
fetchResults(data.page + 1, false);
});
pagination.appendChild(nextLink);
@@ -272,13 +234,6 @@ function displayError(data) {
resultsContainer.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}
-function escapeHtml(text) {
- if (text === null || text === undefined) return '';
- const div = document.createElement('div');
- div.textContent = text;
- return div.innerHTML;
-}
-
// Disable child input if parent is empty
const parentInput = document.getElementById('parent');
const childInput = document.getElementById('child');
diff --git a/datasette/templates/debug_check.html b/datasette/templates/debug_check.html
index b8bbd0a6..2e077327 100644
--- a/datasette/templates/debug_check.html
+++ b/datasette/templates/debug_check.html
@@ -4,6 +4,7 @@
{% block extra_head %}
+{% include "_debug_common_functions.html" %}