86 lines
2.6 KiB
JavaScript
86 lines
2.6 KiB
JavaScript
// Main application entry point
|
|
import { CONFIG } from './config.js';
|
|
import { hideLoading, showStatus } from './utils.js';
|
|
import { checkAuth } from './auth.js';
|
|
import { initializeMap } from './map-manager.js';
|
|
import { loadLocations } from './location-manager.js';
|
|
import { setupEventListeners } from './ui-controls.js';
|
|
import { MkDocsSearch } from './mkdocs-search.js';
|
|
|
|
// Application state
|
|
let refreshInterval = null;
|
|
let mkdocsSearch = null;
|
|
|
|
// Initialize the application
|
|
document.addEventListener('DOMContentLoaded', async () => {
|
|
console.log('DOM loaded, initializing application...');
|
|
|
|
try {
|
|
// First check authentication
|
|
await checkAuth();
|
|
|
|
// Then initialize the map
|
|
await initializeMap();
|
|
|
|
// Only load locations after map is ready
|
|
await loadLocations();
|
|
|
|
// Setup other features
|
|
setupEventListeners();
|
|
setupAutoRefresh();
|
|
|
|
// Initialize MkDocs search
|
|
await initializeMkDocsSearch();
|
|
|
|
} catch (error) {
|
|
console.error('Initialization error:', error);
|
|
showStatus('Failed to initialize application', 'error');
|
|
} finally {
|
|
hideLoading();
|
|
}
|
|
});
|
|
|
|
function setupAutoRefresh() {
|
|
refreshInterval = setInterval(() => {
|
|
loadLocations();
|
|
}, CONFIG.REFRESH_INTERVAL);
|
|
}
|
|
|
|
// Clean up on page unload
|
|
window.addEventListener('beforeunload', () => {
|
|
if (refreshInterval) {
|
|
clearInterval(refreshInterval);
|
|
}
|
|
});
|
|
|
|
// Initialize MkDocs search
|
|
async function initializeMkDocsSearch() {
|
|
try {
|
|
// Get config from server
|
|
const configResponse = await fetch('/api/config');
|
|
const config = await configResponse.json();
|
|
|
|
mkdocsSearch = new MkDocsSearch({
|
|
mkdocsUrl: config.mkdocsUrl || 'http://localhost:4002',
|
|
minSearchLength: 2
|
|
});
|
|
|
|
const initialized = await mkdocsSearch.initialize();
|
|
|
|
if (initialized) {
|
|
// Bind to search input
|
|
const searchInput = document.getElementById('docs-search-input');
|
|
const searchResults = document.getElementById('docs-search-results');
|
|
|
|
if (searchInput && searchResults) {
|
|
mkdocsSearch.bindToInput(searchInput, searchResults);
|
|
console.log('Documentation search ready');
|
|
}
|
|
} else {
|
|
console.warn('Documentation search could not be initialized');
|
|
}
|
|
} catch (error) {
|
|
console.error('Error setting up documentation search:', error);
|
|
}
|
|
}
|