-
-
-
+
-
-
-
-
- Simulate Pressure Increase
-
-
- Reset to Normal
-
+
`;
+ // Clear gauge container if it exists (no longer needed)
+ if (this.gaugeContainer) {
+ this.gaugeContainer.innerHTML = '';
+ }
+
// Store references
this.elements = {
gaugeFill: document.getElementById('gauge-fill'),
@@ -159,11 +164,11 @@ class PressureChart {
const angle = (level / 100) * 180; // 0-180 degrees
const radians = (angle * Math.PI) / 180;
- // Calculate arc endpoint
+ // Calculate arc endpoint (20% smaller gauge: radius 96 instead of 120)
const centerX = 150;
const centerY = 120;
- const radius = 120;
- const startX = 30;
+ const radius = 96;
+ const startX = 54;
const startY = 120;
const endX = centerX + radius * Math.cos(Math.PI - radians);
const endY = centerY - radius * Math.sin(Math.PI - radians);
@@ -191,12 +196,39 @@ class PressureChart {
}
this.elements.gaugeFill.setAttribute('stroke', color);
+
+ // Update status badge with animation
+ const previousStatus = this.elements.status.textContent;
this.elements.status.textContent = status;
- const statusClasses = 'text-xs font-medium uppercase';
- const colorClass = level < 25 ? 'text-green-600' :
- level < 50 ? 'text-amber-600' :
- level < 75 ? 'text-red-600' : 'text-red-800';
- this.elements.status.className = `${statusClasses} ${colorClass}`;
+
+ // Badge styling based on level
+ const baseClasses = 'px-4 py-2 rounded-full text-sm font-bold uppercase transition-all duration-500';
+ let bgClass, textClass;
+
+ if (level < 25) {
+ bgClass = 'bg-green-100';
+ textClass = 'text-green-700';
+ } else if (level < 50) {
+ bgClass = 'bg-amber-100';
+ textClass = 'text-amber-700';
+ } else if (level < 75) {
+ bgClass = 'bg-red-100';
+ textClass = 'text-red-700';
+ } else {
+ bgClass = 'bg-red-200';
+ textClass = 'text-red-900';
+ }
+
+ // Add pulse animation when status changes
+ const pulseClass = previousStatus !== status ? 'animate-pulse' : '';
+ this.elements.status.className = `${baseClasses} ${bgClass} ${textClass} ${pulseClass}`;
+
+ // Remove pulse after animation
+ if (pulseClass) {
+ setTimeout(() => {
+ this.elements.status.className = `${baseClasses} ${bgClass} ${textClass}`;
+ }, 1000);
+ }
// Update metrics based on pressure level
const tokens = Math.round(level * 2000); // 0-200k tokens
@@ -211,6 +243,13 @@ class PressureChart {
simulate() {
console.log('[PressureChart] Simulate button clicked - starting pressure simulation');
+
+ // Trigger timeline simulation if available
+ if (window.activityTimeline) {
+ console.log('[PressureChart] Triggering governance flow timeline');
+ window.activityTimeline.simulateFlow();
+ }
+
// Simulate pressure increasing from current to 85%
const targetLevels = [30, 50, 70, 85];
let index = 0;
@@ -228,6 +267,13 @@ class PressureChart {
reset() {
console.log('[PressureChart] Reset button clicked');
+
+ // Reset timeline if available
+ if (window.activityTimeline) {
+ console.log('[PressureChart] Resetting governance flow timeline');
+ window.activityTimeline.reset();
+ }
+
this.setLevel(0);
}
}
diff --git a/public/test-pressure-chart.html b/public/test-pressure-chart.html
new file mode 100644
index 00000000..68d6202e
--- /dev/null
+++ b/public/test-pressure-chart.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
Test - Pressure Chart
+
+
+
+
+
Pressure Chart Test Page
+
+
+
+
+
Debug Info:
+
If both buttons are visible here, the issue is in the architecture.html page layout.
+
If buttons are still hidden, the issue is in the JavaScript component itself.
+
+
+
+
+
+
+