File size: 5,027 Bytes
6bda4a6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/**
 * 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();
}