tooltips for main numbers
This commit is contained in:
parent
27d2d3bb7a
commit
ae130ff776
1 changed files with 73 additions and 4 deletions
|
|
@ -184,6 +184,16 @@
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Tooltip styling for better native tooltip appearance */
|
||||||
|
[data-bs-toggle="tooltip"] {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced cursor for tooltip elements */
|
||||||
|
[data-bs-toggle="tooltip"]:hover {
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.chart-container {
|
.chart-container {
|
||||||
height: 300px;
|
height: 300px;
|
||||||
|
|
@ -602,25 +612,53 @@
|
||||||
<div class="col-md-3 col-sm-6">
|
<div class="col-md-3 col-sm-6">
|
||||||
<div class="metric-card text-center">
|
<div class="metric-card text-center">
|
||||||
<div class="metric-value" id="total-instances">0</div>
|
<div class="metric-value" id="total-instances">0</div>
|
||||||
<div class="metric-label">Total Instances</div>
|
<div class="metric-label">
|
||||||
|
Total Instances
|
||||||
|
<i class="bi bi-question-circle-fill text-muted ms-1"
|
||||||
|
data-bs-toggle="tooltip"
|
||||||
|
data-bs-placement="top"
|
||||||
|
title="Average final number of cloud instances across all enabled scenarios at the end of your investment timeframe. This represents the scale of your cloud infrastructure business."
|
||||||
|
style="cursor: help; font-size: 0.8rem;"></i>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3 col-sm-6">
|
<div class="col-md-3 col-sm-6">
|
||||||
<div class="metric-card text-center">
|
<div class="metric-card text-center">
|
||||||
<div class="metric-value" id="total-revenue">CHF 0</div>
|
<div class="metric-value" id="total-revenue">CHF 0</div>
|
||||||
<div class="metric-label">Total Revenue</div>
|
<div class="metric-label">
|
||||||
|
Total Revenue
|
||||||
|
<i class="bi bi-question-circle-fill text-muted ms-1"
|
||||||
|
data-bs-toggle="tooltip"
|
||||||
|
data-bs-placement="top"
|
||||||
|
title="Average total revenue generated across all enabled scenarios over your investment timeframe. This includes both CSP revenue (what you keep) and Servala revenue (platform fees)."
|
||||||
|
style="cursor: help; font-size: 0.8rem;"></i>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3 col-sm-6">
|
<div class="col-md-3 col-sm-6">
|
||||||
<div class="metric-card text-center">
|
<div class="metric-card text-center">
|
||||||
<div class="metric-value" id="roi-percentage">0%</div>
|
<div class="metric-value" id="roi-percentage">0%</div>
|
||||||
<div class="metric-label">Average ROI</div>
|
<div class="metric-label">
|
||||||
|
Average ROI
|
||||||
|
<i class="bi bi-question-circle-fill text-muted ms-1"
|
||||||
|
data-bs-toggle="tooltip"
|
||||||
|
data-bs-placement="top"
|
||||||
|
title="Return on Investment: Average percentage return across all enabled scenarios. Calculated as (CSP Revenue - Initial Investment) / Initial Investment × 100%. Shows how much profit you make relative to your initial investment."
|
||||||
|
style="cursor: help; font-size: 0.8rem;"></i>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3 col-sm-6">
|
<div class="col-md-3 col-sm-6">
|
||||||
<div class="metric-card text-center">
|
<div class="metric-card text-center">
|
||||||
<div class="metric-value" id="breakeven-time">N/A</div>
|
<div class="metric-value" id="breakeven-time">N/A</div>
|
||||||
<div class="metric-label">Avg Break-even</div>
|
<div class="metric-label">
|
||||||
|
Avg Break-even
|
||||||
|
<i class="bi bi-question-circle-fill text-muted ms-1"
|
||||||
|
data-bs-toggle="tooltip"
|
||||||
|
data-bs-placement="top"
|
||||||
|
title="Average time in months across all scenarios when your cumulative CSP revenue equals your initial investment. This is when you've recovered your upfront costs and start making pure profit."
|
||||||
|
style="cursor: help; font-size: 0.8rem;"></i>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -1160,10 +1198,41 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
// Initialize calculator
|
// Initialize calculator
|
||||||
calculator = new ROICalculator();
|
calculator = new ROICalculator();
|
||||||
|
|
||||||
|
// Initialize tooltips - check if Bootstrap is available
|
||||||
|
initializeTooltips();
|
||||||
|
|
||||||
// Check if export libraries are loaded and enable/disable buttons accordingly
|
// Check if export libraries are loaded and enable/disable buttons accordingly
|
||||||
checkExportLibraries();
|
checkExportLibraries();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Initialize tooltips with fallback for missing Bootstrap
|
||||||
|
function initializeTooltips() {
|
||||||
|
// Check if Bootstrap is available
|
||||||
|
if (typeof bootstrap !== 'undefined' && bootstrap.Tooltip) {
|
||||||
|
// Use Bootstrap tooltips
|
||||||
|
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
|
||||||
|
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
|
||||||
|
return new bootstrap.Tooltip(tooltipTriggerEl);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// Fallback: Use native title attribute tooltips
|
||||||
|
console.log('Bootstrap not available, using native tooltips');
|
||||||
|
var tooltipElements = document.querySelectorAll('[data-bs-toggle="tooltip"]');
|
||||||
|
tooltipElements.forEach(function(element) {
|
||||||
|
// Move the tooltip content to the native title attribute
|
||||||
|
if (element.getAttribute('title')) {
|
||||||
|
// Title already set, no need to change
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var tooltipContent = element.getAttribute('data-bs-original-title') ||
|
||||||
|
element.getAttribute('title');
|
||||||
|
if (tooltipContent) {
|
||||||
|
element.setAttribute('title', tooltipContent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check if export libraries are loaded
|
// Check if export libraries are loaded
|
||||||
function checkExportLibraries() {
|
function checkExportLibraries() {
|
||||||
const pdfButton = document.querySelector('button[onclick="exportToPDF()"]');
|
const pdfButton = document.querySelector('button[onclick="exportToPDF()"]');
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue