freealberta/map/test_print_debug.html

90 lines
3.8 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>Print Debug Test</title>
<script>
// Simple test to verify our changes
function testPrintUtils() {
console.log('Testing CutPrintUtils improvements...');
// Mock objects for testing
const mockMap = {
getContainer: () => document.createElement('div'),
getBounds: () => ({
getNorth: () => 53.6,
getSouth: () => 53.4,
getEast: () => -113.3,
getWest: () => -113.7
}),
getCenter: () => ({ lat: 53.5, lng: -113.5 }),
getZoom: () => 12
};
const mockLocationManager = {
currentCutId: '123',
currentCutLocations: [
{ latitude: 53.5, longitude: -113.5, first_name: 'Test', last_name: 'User', support_level: '1' }
],
showingLocations: false,
loadCutLocations: async () => console.log('Mock loadCutLocations called'),
displayLocationsOnMap: (locations) => {
console.log('Mock displayLocationsOnMap called with', locations.length, 'locations');
mockLocationManager.showingLocations = true;
},
getSupportColor: (level) => '#28a745'
};
const mockCutsManager = {
allCuts: [{ id: '123', name: 'Test Cut' }],
currentCutLayer: null
};
// Test our enhanced print utils
const printUtils = new CutPrintUtils(mockMap, mockCutsManager, mockLocationManager);
console.log('CutPrintUtils created successfully with enhanced features');
console.log('Available methods:', Object.getOwnPropertyNames(CutPrintUtils.prototype));
return true;
}
// Run test when page loads
window.addEventListener('load', () => {
if (typeof CutPrintUtils !== 'undefined') {
testPrintUtils();
} else {
console.log('CutPrintUtils not loaded - this is expected in test environment');
}
});
</script>
</head>
<body>
<h1>Print Debug Test</h1>
<p>Check the browser console for test results.</p>
<p>This tests the enhanced CutPrintUtils functionality.</p>
<h2>Key Improvements Made:</h2>
<ul>
<li>✅ Auto-load locations when printing if not already loaded</li>
<li>✅ Auto-display locations on map for print capture</li>
<li>✅ Enhanced map capture with html2canvas (priority #1)</li>
<li>✅ Improved dom-to-image capture with better filtering</li>
<li>✅ Better UI state management (toggle button updates)</li>
<li>✅ Enhanced debugging and logging</li>
<li>✅ Auto-show locations when viewing cuts (if enabled)</li>
</ul>
<h2>Root Cause Analysis:</h2>
<p>The issue was that locations were not automatically displayed on the map when viewing a cut or printing.
The print function expected locations to be visible but they were only shown when the user manually clicked "Show Locations".</p>
<h2>Solution:</h2>
<ol>
<li><strong>Print Enhancement:</strong> The print function now ensures locations are loaded and displayed before capturing the map</li>
<li><strong>View Enhancement:</strong> When viewing a cut, locations are automatically loaded if the cut has show_locations enabled</li>
<li><strong>Capture Enhancement:</strong> Improved map capture methods with html2canvas as primary method</li>
<li><strong>State Management:</strong> Better synchronization between location visibility and UI state</li>
</ol>
</body>
</html>