()
| 28 | } |
| 29 | |
| 30 | function updateFilterUI() { |
| 31 | // Remove existing filter indicator |
| 32 | const existingIndicator = document.getElementById("filter-indicator"); |
| 33 | if (existingIndicator) { |
| 34 | existingIndicator.remove(); |
| 35 | } |
| 36 | |
| 37 | // Add filter indicator if a file is selected |
| 38 | if (selectedFile) { |
| 39 | const indicator = document.createElement("div"); |
| 40 | indicator.id = "filter-indicator"; |
| 41 | indicator.style.cssText = ` |
| 42 | position: fixed; |
| 43 | top: 10px; |
| 44 | right: 10px; |
| 45 | background: #007bff; |
| 46 | color: white; |
| 47 | padding: 10px 15px; |
| 48 | border-radius: 5px; |
| 49 | font-size: 14px; |
| 50 | font-weight: bold; |
| 51 | box-shadow: 0 2px 10px rgba(0,0,0,0.3); |
| 52 | z-index: 1000; |
| 53 | cursor: pointer; |
| 54 | `; |
| 55 | indicator.innerHTML = ` |
| 56 | Showing: ${selectedFile.replace(/\./g, " ").replace(/-/g, " ")} |
| 57 | <br><small style="opacity: 0.9;">Click to show all files</small> |
| 58 | `; |
| 59 | indicator.addEventListener("click", () => { |
| 60 | selectedFile = null; |
| 61 | refreshCharts(); |
| 62 | }); |
| 63 | document.body.appendChild(indicator); |
| 64 | } |
| 65 | } |
| 66 | |
| 67 | const PERFORMANCE_THRESHOLDS = { |
| 68 | processing_time: { |
no test coverage detected