changemaker.lite/map/app/public/js/admin-cuts.js
bunker-admin a77306fac2 Initial v2 commit: complete rebuild with unified API + React admin
Phase 1-14 complete:
- Unified Express.js API (TypeScript, Prisma ORM, PostgreSQL 16)
- React Admin GUI (Vite + Ant Design + Zustand)
- JWT auth with refresh tokens
- Influence: Campaigns, Representatives, Responses, Email Queue
- Map: Locations, Cuts, Shifts, Canvassing System
- NAR data import infrastructure (2025 format)
- Listmonk newsletter integration
- Landing page builder (GrapesJS)
- MkDocs + Code Server integration
- Volunteer portal with GPS tracking
- Monitoring stack (Prometheus, Grafana, Alertmanager)
- Pangolin tunnel integration

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-11 10:05:04 -07:00

111 lines
2.8 KiB
JavaScript

/**
* Admin Cuts Management Module
* Main initialization file that imports and orchestrates all cut management modules
*/
// Global admin cuts manager instance
let adminCutsManager = null;
// Initialize the admin cuts system when DOM is ready
document.addEventListener('DOMContentLoaded', async function() {
console.log('DOM loaded, initializing admin cuts system...');
try {
// Wait for all module classes to be loaded
if (typeof AdminCutsManager === 'undefined') {
console.error('AdminCutsManager class not loaded');
return;
}
if (typeof CutDrawing === 'undefined') {
console.error('CutDrawing class not loaded');
return;
}
if (typeof CutLocationManager === 'undefined') {
console.error('CutLocationManager class not loaded');
return;
}
if (typeof CutPrintUtils === 'undefined') {
console.error('CutPrintUtils class not loaded');
return;
}
// Create manager instance
adminCutsManager = new AdminCutsManager();
// Initialize the system
await adminCutsManager.initialize();
console.log('Admin cuts system initialized successfully');
// Make manager globally accessible for debugging
window.adminCutsManager = adminCutsManager;
} catch (error) {
console.error('Failed to initialize admin cuts system:', error);
// Show error notification if available
if (typeof showNotification === 'function') {
showNotification('Failed to initialize cuts management system', 'error');
}
}
});
// Global functions for backward compatibility
function startDrawing() {
if (adminCutsManager && adminCutsManager.cutDrawing) {
adminCutsManager.handleStartDrawing();
}
}
function finishDrawing() {
if (adminCutsManager && adminCutsManager.cutDrawing) {
adminCutsManager.cutDrawing.finishDrawing();
}
}
function cancelDrawing() {
if (adminCutsManager && adminCutsManager.cutDrawing) {
adminCutsManager.cutDrawing.cancelDrawing();
}
}
function resetForm() {
if (adminCutsManager) {
adminCutsManager.resetForm();
}
}
function exportCuts() {
if (adminCutsManager) {
adminCutsManager.exportCuts();
}
}
function refreshCuts() {
if (adminCutsManager) {
adminCutsManager.loadCuts();
}
}
// Debug functions
function debugFormState() {
if (adminCutsManager) {
adminCutsManager.debugFormState();
}
}
function debugOpacityState() {
if (adminCutsManager) {
adminCutsManager.debugOpacityState();
}
}
function forceUpdateDrawingStyle() {
if (adminCutsManager) {
adminCutsManager.forceUpdateDrawingStyle();
}
}