OUAREDAEK commited on
Commit
97a78da
·
verified ·
1 Parent(s): 1e2dfca

Upload templates/index.html with huggingface_hub

Browse files
Files changed (1) hide show
  1. templates/index.html +74 -11
templates/index.html CHANGED
@@ -1667,7 +1667,7 @@ textarea:focus {
1667
  </div>
1668
 
1669
  <!-- Canvas pour le heatmap -->
1670
- <canvas id="heatmap" width="800" height="250" style="max-width: 100%; height: auto;"></canvas>
1671
 
1672
  <!-- Légende des niveaux d'activité compacte -->
1673
  <div class="compact-enriched-legend">
@@ -2777,9 +2777,10 @@ function drawCompactEnrichedHeatmap(scenario) {
2777
  if (!canvas) return;
2778
 
2779
  const ctx = canvas.getContext("2d");
2780
- const cellSize = 15;
2781
- const padding = 1;
2782
  const days = ["L", "M", "M", "J", "V", "S", "D"];
 
2783
  const weeks = 4;
2784
  const totalDays = weeks * 7;
2785
 
@@ -2866,18 +2867,45 @@ function drawCompactEnrichedHeatmap(scenario) {
2866
  pattern: "Schéma à analyser"
2867
  };
2868
 
2869
- ctx.font = "bold 14px Arial";
2870
  ctx.fillStyle = "#1976D2";
2871
  ctx.textAlign = "center";
2872
- ctx.fillText(`${scenarioInfo.emoji} ${scenarioInfo.title}`, canvas.width / 2, 20);
2873
 
2874
- ctx.font = "12px Arial";
2875
  ctx.fillStyle = "#666";
2876
- ctx.fillText(`${scenarioInfo.pattern}`, canvas.width / 2, 40);
2877
 
2878
  // Générer les données d'activité selon le scénario
2879
  const activityData = generateCompactPersistenceData(scenario.id, totalDays);
2880
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2881
  // Dessiner la heatmap
2882
  const colors = ["#EBEDF0", "#C6E48B", "#7BC96F", "#239A3B", "#196127"];
2883
 
@@ -2885,8 +2913,8 @@ function drawCompactEnrichedHeatmap(scenario) {
2885
  const week = Math.floor(day / 7);
2886
  const weekday = day % 7;
2887
 
2888
- const x = 30 + week * (cellSize * 7 + padding * 7) + weekday * (cellSize + padding);
2889
- const y = 60 + weekday * (cellSize + padding);
2890
 
2891
  const intensity = activityData[day];
2892
 
@@ -2894,17 +2922,52 @@ function drawCompactEnrichedHeatmap(scenario) {
2894
  ctx.fillStyle = colors[intensity];
2895
  ctx.fillRect(x, y, cellSize, cellSize);
2896
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2897
  // Bordure avec indication des échéances (vendredi = jour important)
2898
  if (weekday === 4) { // Vendredi
2899
  ctx.strokeStyle = "#FF6B6B";
2900
- ctx.lineWidth = 1.5;
 
 
 
 
 
 
2901
  } else {
2902
  ctx.strokeStyle = intensity > 0 ? "#239A3B" : "#eee";
2903
  ctx.lineWidth = 0.5;
 
2904
  }
2905
- ctx.strokeRect(x, y, cellSize, cellSize);
2906
  }
2907
 
 
 
 
 
 
 
 
 
 
 
2908
  // Analyser et afficher les métriques de persévérance compactes
2909
  analyzeCompactPersistenceMetrics(activityData, scenario.id);
2910
  }
 
1667
  </div>
1668
 
1669
  <!-- Canvas pour le heatmap -->
1670
+ <canvas id="heatmap" width="800" height="300" style="max-width: 100%; height: auto;"></canvas>
1671
 
1672
  <!-- Légende des niveaux d'activité compacte -->
1673
  <div class="compact-enriched-legend">
 
2777
  if (!canvas) return;
2778
 
2779
  const ctx = canvas.getContext("2d");
2780
+ const cellSize = 18;
2781
+ const padding = 2;
2782
  const days = ["L", "M", "M", "J", "V", "S", "D"];
2783
+ const dayNames = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"];
2784
  const weeks = 4;
2785
  const totalDays = weeks * 7;
2786
 
 
2867
  pattern: "Schéma à analyser"
2868
  };
2869
 
2870
+ ctx.font = "bold 16px Arial";
2871
  ctx.fillStyle = "#1976D2";
2872
  ctx.textAlign = "center";
2873
+ ctx.fillText(`${scenarioInfo.emoji} ${scenarioInfo.title}`, canvas.width / 2, 25);
2874
 
2875
+ ctx.font = "14px Arial";
2876
  ctx.fillStyle = "#666";
2877
+ ctx.fillText(`${scenarioInfo.pattern}`, canvas.width / 2, 45);
2878
 
2879
  // Générer les données d'activité selon le scénario
2880
  const activityData = generateCompactPersistenceData(scenario.id, totalDays);
2881
 
2882
+ // Labels des semaines
2883
+ ctx.font = "bold 12px Arial";
2884
+ ctx.fillStyle = "#333";
2885
+ ctx.textAlign = "center";
2886
+ ctx.textBaseline = "middle";
2887
+
2888
+ for (let week = 0; week < weeks; week++) {
2889
+ const x = 60 + week * (cellSize * 7 + padding * 7) + (cellSize * 7) / 2;
2890
+ const y = 90;
2891
+ ctx.fillText(`Semaine ${week + 1}`, x, y);
2892
+ }
2893
+
2894
+ // Labels des jours
2895
+ ctx.font = "bold 11px Arial";
2896
+ ctx.fillStyle = "#555";
2897
+
2898
+ for (let day = 0; day < 7; day++) {
2899
+ const y = 120 + day * (cellSize + padding) + cellSize / 2;
2900
+ ctx.textAlign = "right";
2901
+ ctx.fillText(`${days[day]}`, 55, y);
2902
+
2903
+ // Version complète au survol (tooltip serait mieux)
2904
+ ctx.font = "9px Arial";
2905
+ ctx.fillStyle = "#888";
2906
+ ctx.fillText(`(${dayNames[day]})`, 55, y + 10);
2907
+ }
2908
+
2909
  // Dessiner la heatmap
2910
  const colors = ["#EBEDF0", "#C6E48B", "#7BC96F", "#239A3B", "#196127"];
2911
 
 
2913
  const week = Math.floor(day / 7);
2914
  const weekday = day % 7;
2915
 
2916
+ const x = 60 + week * (cellSize * 7 + padding * 7) + weekday * (cellSize + padding);
2917
+ const y = 110 + weekday * (cellSize + padding);
2918
 
2919
  const intensity = activityData[day];
2920
 
 
2922
  ctx.fillStyle = colors[intensity];
2923
  ctx.fillRect(x, y, cellSize, cellSize);
2924
 
2925
+ // Ajouter un indicateur de caractère dans la cellule
2926
+ ctx.font = "bold 10px Arial";
2927
+ ctx.fillStyle = intensity < 2 ? "#666" : "white";
2928
+ ctx.textAlign = "center";
2929
+ ctx.textBaseline = "middle";
2930
+
2931
+ // Caractère selon l'intensité
2932
+ let char = "";
2933
+ switch(intensity) {
2934
+ case 0: char = "∅"; break; // Aucune
2935
+ case 1: char = "·"; break; // Faible
2936
+ case 2: char = "○"; break; // Modérée
2937
+ case 3: char = "●"; break; // Élevée
2938
+ case 4: char = "■"; break; // Intense
2939
+ }
2940
+
2941
+ // Dessiner le caractère au centre de la cellule
2942
+ ctx.fillText(char, x + cellSize/2, y + cellSize/2);
2943
+
2944
  // Bordure avec indication des échéances (vendredi = jour important)
2945
  if (weekday === 4) { // Vendredi
2946
  ctx.strokeStyle = "#FF6B6B";
2947
+ ctx.lineWidth = 2;
2948
+ ctx.strokeRect(x, y, cellSize, cellSize);
2949
+
2950
+ // Indicateur spécial pour vendredi
2951
+ ctx.fillStyle = "#FF6B6B";
2952
+ ctx.font = "bold 8px Arial";
2953
+ ctx.fillText("V", x + cellSize - 6, y + 8);
2954
  } else {
2955
  ctx.strokeStyle = intensity > 0 ? "#239A3B" : "#eee";
2956
  ctx.lineWidth = 0.5;
2957
+ ctx.strokeRect(x, y, cellSize, cellSize);
2958
  }
 
2959
  }
2960
 
2961
+ // Légende des caractères en bas
2962
+ ctx.font = "10px Arial";
2963
+ ctx.fillStyle = "#666";
2964
+ ctx.textAlign = "center";
2965
+
2966
+ const legendChars = ["∅ Aucune", "· Faible", "○ Modérée", "● Élevée", "■ Intense"];
2967
+ const legendX = canvas.width / 2;
2968
+ const legendY = canvas.height - 15;
2969
+
2970
+
2971
  // Analyser et afficher les métriques de persévérance compactes
2972
  analyzeCompactPersistenceMetrics(activityData, scenario.id);
2973
  }