102 lines
3.2 KiB
JavaScript
102 lines
3.2 KiB
JavaScript
// Main application entry point
|
|
import { CONFIG, loadDomainConfig } from './config.js';
|
|
import { hideLoading, showStatus, setViewportDimensions } 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 { UnifiedSearchManager } from './search-manager.js';
|
|
|
|
// Application state
|
|
let refreshInterval = null;
|
|
let unifiedSearchManager = null;
|
|
|
|
// Initialize the application
|
|
document.addEventListener('DOMContentLoaded', async () => {
|
|
// Set initial viewport dimensions and listen for resize events
|
|
setViewportDimensions();
|
|
window.addEventListener('resize', setViewportDimensions);
|
|
window.addEventListener('orientationchange', () => {
|
|
// Add a small delay for orientation change to complete
|
|
setTimeout(setViewportDimensions, 100);
|
|
});
|
|
|
|
console.log('DOM loaded, initializing application...');
|
|
|
|
try {
|
|
// Load domain configuration first
|
|
await loadDomainConfig();
|
|
|
|
// 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 Unified Search
|
|
await initializeUnifiedSearch();
|
|
|
|
} 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 Unified Search
|
|
async function initializeUnifiedSearch() {
|
|
try {
|
|
// Get config from server
|
|
const configResponse = await fetch('/api/config');
|
|
const config = await configResponse.json();
|
|
|
|
unifiedSearchManager = new UnifiedSearchManager({
|
|
mkdocsUrl: config.mkdocsUrl || 'http://localhost:4002',
|
|
minSearchLength: 2
|
|
});
|
|
|
|
const initialized = await unifiedSearchManager.initialize();
|
|
|
|
if (initialized) {
|
|
// Bind to search container
|
|
const searchContainer = document.querySelector('.unified-search-container');
|
|
|
|
if (searchContainer) {
|
|
const bound = unifiedSearchManager.bindToElements(searchContainer);
|
|
if (bound) {
|
|
console.log('Unified search ready');
|
|
} else {
|
|
console.warn('Failed to bind unified search to elements');
|
|
}
|
|
} else {
|
|
console.warn('Unified search container not found');
|
|
}
|
|
} else {
|
|
console.warn('Unified search could not be initialized');
|
|
}
|
|
} catch (error) {
|
|
console.error('Error setting up unified search:', error);
|
|
}
|
|
}
|