tfrere's picture
tfrere HF Staff
update
6bda4a6
/**
* Exemple d'utilisation de la configuration DebugUMAP
* Ce fichier montre comment personnaliser la configuration
*/
import { setConfig, getConfig, validateConfig } from './mapConfig.js';
// ============================================================================
// EXEMPLES D'UTILISATION
// ============================================================================
// 1. Lire une valeur de configuration
const zoomMin = getConfig('zoom.scaleExtent.0', 0.3); // Premier élément du tableau
const zoomMax = getConfig('zoom.scaleExtent.1', 3.0); // Deuxième élément du tableau
console.log(`Zoom range: ${zoomMin} - ${zoomMax}`);
// 2. Modifier une valeur de configuration
setConfig('zoom.initialScale', 0.9); // Zoom initial à 90%
setConfig('glyph.batchLoading.batchSize', 50); // Charger 50 glyphes par batch
// 3. Ajouter une nouvelle couleur de catégorie
const currentColors = getConfig('color.categories', {});
setConfig('color.categories', {
...currentColors,
'script': '#e67e22' // Nouvelle catégorie
});
// 4. Personnaliser les centroïdes
setConfig('centroid.text.fontSize', 18); // Taille de police plus grande
setConfig('centroid.text.strokeWidth', 6); // Bordure plus épaisse
// 5. Activer le mode debug
setConfig('debug.enabled', true);
setConfig('debug.verbose', true);
// ============================================================================
// CONFIGURATIONS PRÉDÉFINIES
// ============================================================================
/**
* Configuration pour un affichage haute performance
*/
export function setHighPerformanceConfig() {
setConfig('glyph.batchLoading.batchSize', 100);
setConfig('glyph.batchLoading.delay', 5);
setConfig('performance.monitoring.enabled', false);
setConfig('centroid.behavior.adaptiveSize', false);
}
/**
* Configuration pour un affichage haute qualité
*/
export function setHighQualityConfig() {
setConfig('glyph.batchLoading.batchSize', 20);
setConfig('glyph.batchLoading.delay', 20);
setConfig('centroid.text.strokeWidth', 6);
setConfig('zoom.transitionDuration', 1000);
}
/**
* Configuration pour mobile
*/
export function setMobileConfig() {
setConfig('ui.responsive.adaptiveUI', true);
setConfig('glyph.batchLoading.batchSize', 30);
setConfig('centroid.text.fontSize', 14);
setConfig('ui.positions.leva', { top: 10, left: 10 });
}
/**
* Configuration pour le développement
*/
export function setDevelopmentConfig() {
setConfig('debug.enabled', true);
setConfig('debug.verbose', true);
setConfig('performance.monitoring.logLevel', 'debug');
setConfig('data.validation.strictMode', true);
}
// ============================================================================
// VALIDATION ET DIAGNOSTIC
// ============================================================================
/**
* Valider la configuration actuelle
*/
export function validateCurrentConfig() {
const result = validateConfig();
if (!result.valid) {
console.error('Configuration invalide:', result.errors);
return false;
}
if (result.warnings.length > 0) {
console.warn('Avertissements de configuration:', result.warnings);
}
console.log('Configuration valide ✅');
return true;
}
/**
* Afficher un résumé de la configuration
*/
export function showConfigSummary() {
console.log('=== RÉSUMÉ DE LA CONFIGURATION ===');
console.log('Zoom:', getConfig('zoom.scaleExtent', []));
console.log('Glyphes par batch:', getConfig('glyph.batchLoading.batchSize', 40));
console.log('Taille de police centroïdes:', getConfig('centroid.text.fontSize', 16));
console.log('Mode debug:', getConfig('debug.enabled', false));
console.log('================================');
}
// ============================================================================
// UTILITAIRES AVANCÉS
// ============================================================================
/**
* Sauvegarder la configuration dans localStorage
*/
export function saveConfigToStorage() {
try {
const config = getConfig('', {});
localStorage.setItem('debugUMAP_config', JSON.stringify(config));
console.log('Configuration sauvegardée dans localStorage');
} catch (error) {
console.error('Erreur lors de la sauvegarde:', error);
}
}
/**
* Charger la configuration depuis localStorage
*/
export function loadConfigFromStorage() {
try {
const saved = localStorage.getItem('debugUMAP_config');
if (saved) {
const config = JSON.parse(saved);
// Appliquer la configuration sauvegardée
Object.keys(config).forEach(key => {
setConfig(key, config[key]);
});
console.log('Configuration chargée depuis localStorage');
return true;
}
} catch (error) {
console.error('Erreur lors du chargement:', error);
}
return false;
}
/**
* Réinitialiser la configuration aux valeurs par défaut
*/
export function resetConfigToDefaults() {
// Recharger le module pour réinitialiser
window.location.reload();
}