mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Extracted common JavaScript utilities from debug_allowed.html, debug_check.html, and debug_rules.html into a new _debug_common_functions.html include template. This eliminates code duplication and improves maintainability. The shared functions include: - populateFormFromURL(): Populates form fields from URL query parameters - updateURL(formId, page): Updates browser URL with form values - escapeHtml(text): HTML escaping utility 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
70 lines
1.8 KiB
HTML
70 lines
1.8 KiB
HTML
<script>
|
|
// Common utility functions for debug pages
|
|
|
|
// Populate form from URL parameters on page load
|
|
function populateFormFromURL() {
|
|
const params = new URLSearchParams(window.location.search);
|
|
|
|
const action = params.get('action');
|
|
if (action) {
|
|
const actionField = document.getElementById('action');
|
|
if (actionField) {
|
|
actionField.value = action;
|
|
}
|
|
}
|
|
|
|
const parent = params.get('parent');
|
|
if (parent) {
|
|
const parentField = document.getElementById('parent');
|
|
if (parentField) {
|
|
parentField.value = parent;
|
|
}
|
|
}
|
|
|
|
const child = params.get('child');
|
|
if (child) {
|
|
const childField = document.getElementById('child');
|
|
if (childField) {
|
|
childField.value = child;
|
|
}
|
|
}
|
|
|
|
const pageSize = params.get('page_size');
|
|
if (pageSize) {
|
|
const pageSizeField = document.getElementById('page_size');
|
|
if (pageSizeField) {
|
|
pageSizeField.value = pageSize;
|
|
}
|
|
}
|
|
|
|
return params;
|
|
}
|
|
|
|
// Update URL with current form values
|
|
function updateURL(formId, page = 1) {
|
|
const form = document.getElementById(formId);
|
|
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);
|
|
}
|
|
|
|
// HTML escape function
|
|
function escapeHtml(text) {
|
|
if (text === null || text === undefined) return '';
|
|
const div = document.createElement('div');
|
|
div.textContent = text;
|
|
return div.innerHTML;
|
|
}
|
|
</script>
|