diff --git a/.python-version b/.python-version deleted file mode 100644 index 9f3d4c178faa4fc30416164921d93b92ff78d64b..0000000000000000000000000000000000000000 --- a/.python-version +++ /dev/null @@ -1 +0,0 @@ -3.9.16 diff --git a/assets/css/styles.css b/assets/css/styles.css index 3958404a17d5d565869367af3b2a40f0fd01e549..0cdc0ea308bae7f77a01e04bad629ddfe9dbe510 100644 --- a/assets/css/styles.css +++ b/assets/css/styles.css @@ -1,325 +1,218 @@ -/* Enhanced styles.css */ +/* Main styles for Satellite Latency Viewer */ -/* Set a light background with a gradient for the entire page */ body { - background: linear-gradient(to bottom, #f8f9fa, #e9ecef); - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - margin: 0; - padding: 0; - color: #343a40; - min-height: 100vh; -} - -/* Header styles with improved typography */ -h1 { - color: #2c3e50; - text-align: center; - margin: 30px 0; - font-weight: 600; - letter-spacing: 0.5px; - text-shadow: 1px 1px 2px rgba(0,0,0,0.05); + font-family: 'Source Sans Pro', sans-serif; + background-color: #f8f9fa; + color: #333; } -/* Container styling for content */ -.container { - max-width: 1200px; - margin: 0 auto; - padding: 20px; +/* Header Section */ +.header-section { + background: #003366; + color: white; + padding: 1.5rem 0; + border-radius: 0 0 6px 6px; + margin-bottom: 20px; + box-shadow: 0 2px 10px rgba(0,0,0,0.1); } -/* Date display with improved styling */ -#currentDateDisplay, h3 { - font-size: 1.5rem; - font-weight: 500; - color: #2c3e50; +.app-title { + font-family: 'Merriweather', serif; + font-weight: 700; + font-size: 2rem; text-align: center; - margin: 15px 0; -} - -/* Navigation buttons with better styling */ -.btn-secondary { - background-color: #5a6268; - border: none; - padding: 8px 16px; - border-radius: 5px; - transition: all 0.2s ease; - box-shadow: 0 2px 4px rgba(0,0,0,0.1); + margin-bottom: 0.5rem; + letter-spacing: 0.5px; } -.btn-secondary:hover { - background-color: #4a545a; - transform: translateY(-2px); - box-shadow: 0 4px 8px rgba(0,0,0,0.1); +.date-navigation { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.4rem 1rem; + background-color: rgba(255,255,255,0.15); + border-radius: 4px; + margin: 0.8rem auto; + max-width: 400px; + border: 1px solid rgba(255,255,255,0.2); } -/* Form styling with enhanced aesthetics */ -.data-controls { - background-color: #ffffff; +.date-navigation button { + background: transparent; border: none; - padding: 25px; - border-radius: 10px; - box-shadow: 0 4px 12px rgba(0,0,0,0.08); - margin-bottom: 25px; - transition: all 0.3s ease; -} - -.data-controls:hover { - box-shadow: 0 6px 16px rgba(0,0,0,0.1); -} - -/* Improved select boxes */ -.form-select { - border-radius: 6px; - border: 1px solid #ced4da; - padding: 10px; + color: white; + font-size: 1rem; + cursor: pointer; transition: all 0.2s ease; - box-shadow: inset 0 1px 3px rgba(0,0,0,0.05); -} - -.form-select:focus { - border-color: #4d94ff; - box-shadow: 0 0 0 3px rgba(77, 148, 255, 0.2); + padding: 0.2rem 0.8rem; } -/* Form labels with better styling */ -.form-label { - font-weight: 500; - color: #495057; - margin-bottom: 8px; +.date-navigation button:hover { + background-color: rgba(255,255,255,0.2); + border-radius: 4px; } -/* Enhanced button styling */ -.btn-primary { - background: linear-gradient(to right, #007bff, #0056b3); - border: none; - padding: 12px 24px; - border-radius: 6px; +#currentDateDisplay { + font-size: 1.1rem; font-weight: 500; - letter-spacing: 0.5px; - transition: all 0.3s ease; - box-shadow: 0 4px 6px rgba(0, 123, 255, 0.2); -} - -.btn-primary:hover { - background: linear-gradient(to right, #0062cc, #004494); - transform: translateY(-2px); - box-shadow: 0 6px 8px rgba(0, 123, 255, 0.25); } -/* Load Data button styling */ -#loadButton, button:contains("Load Data") { - width: 100%; - background: linear-gradient(to right, #007bff, #0069d9); - color: white; - font-weight: 500; - letter-spacing: 0.5px; - padding: 12px; +/* Control Panel */ +.control-panel { + background: white; border-radius: 6px; - border: none; - box-shadow: 0 4px 6px rgba(0, 123, 255, 0.2); - transition: all 0.3s ease; + padding: 1.25rem; + margin-bottom: 1.5rem; + box-shadow: 0 1px 6px rgba(0,0,0,0.05); + border: 1px solid #dee2e6; } -#loadButton:hover, button:contains("Load Data"):hover { - background: linear-gradient(to right, #0069d9, #004ec2); - transform: translateY(-2px); - box-shadow: 0 6px 10px rgba(0, 123, 255, 0.3); +.form-label { + font-weight: 600; + color: #003366; + margin-bottom: 0.4rem; } -/* Debug button styling */ -#toggleDebug, .btn-outline-secondary { - border-color: #6c757d; - color: #6c757d; - background-color: transparent; - padding: 6px 12px; +.form-select { + border: 1px solid #ced4da; border-radius: 4px; + padding: 0.5rem; transition: all 0.2s ease; + background-color: #f8f9fa; } -#toggleDebug:hover, .btn-outline-secondary:hover { - background-color: #6c757d; - color: white; -} - -/* Chart container styling */ -.chart-container { - background-color: white; - border-radius: 10px; - padding: 20px; - box-shadow: 0 4px 12px rgba(0,0,0,0.08); - margin-top: 25px; - transition: all 0.3s ease; -} - -.chart-container:hover { - box-shadow: 0 8px 16px rgba(0,0,0,0.12); +.form-select:focus { + border-color: #003366; + box-shadow: 0 0 0 0.2rem rgba(0, 51, 102, 0.25); } -/* Time filter buttons */ -.time-filter-btn { - background-color: #e9ecef; - border: 1px solid #ced4da; - padding: 5px 15px; - border-radius: 20px; - margin-right: 5px; +/* Debug Toggle */ +.debug-toggle { + border-radius: 4px; + font-size: 0.85rem; + padding: 0.3rem 0.8rem; + background-color: #f1f5f9; + color: #003366; + border: 1px solid #d0d7de; transition: all 0.2s ease; - font-size: 0.9rem; } -.time-filter-btn.active { - background-color: #007bff; - color: white; - border-color: #007bff; -} - -.time-filter-btn:hover:not(.active) { - background-color: #dee2e6; +.debug-toggle:hover { + background-color: #e3e8ed; + border-color: #b6bfc9; } -/* Checkbox styling */ -input[type="checkbox"] { - width: 18px; - height: 18px; - margin-right: 8px; - accent-color: #007bff; +/* Debug Info Panel */ +.debug-info { + background-color: #f8f9fa; + border: 1px solid #ddd; + border-radius: 6px; + padding: 15px; + margin-top: 20px; + font-family: monospace; + display: none; + box-shadow: inset 0 0 3px rgba(0,0,0,0.1); } -/* Filter section styling */ -.filter-section { - background-color: white; - border-radius: 10px; +/* Loading and Error Indicators */ +.loading { + display: none; + text-align: center; padding: 20px; - box-shadow: 0 4px 12px rgba(0,0,0,0.08); - margin-bottom: 25px; } -.filter-section h4 { - color: #343a40; - font-size: 1.2rem; - margin-top: 0; - margin-bottom: 15px; - font-weight: 500; +.error-message { + color: #dc3545; + text-align: center; + padding: 15px; + display: none; + border-radius: 6px; + background-color: rgba(220, 53, 69, 0.1); + margin: 1rem 0; } -/* Filter actions styling */ -.filter-actions { +/* Time Range Selector */ +.time-range-selector { + margin-bottom: 15px; display: flex; - justify-content: flex-end; gap: 10px; - margin-top: 10px; } -.filter-actions button { - padding: 6px 12px; - border-radius: 5px; +.time-btn { + padding: 6px 15px; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 4px; font-size: 0.9rem; + cursor: pointer; transition: all 0.2s ease; } -/* Loading indicator styling */ -.loading { - background-color: rgba(255, 255, 255, 0.8); - border-radius: 10px; - box-shadow: 0 4px 12px rgba(0,0,0,0.1); - padding: 30px; +.time-btn:hover { + background-color: #d1d7dc; } -.loading .spinner-border { - width: 3rem; - height: 3rem; - color: #007bff; +.time-btn.active { + background-color: #003366; + color: white; + border-color: #003366; } -/* Error message styling */ -.error-message { - background-color: #f8d7da; - border: 1px solid #f5c6cb; - color: #721c24; +/* Chart Section */ +.chart-wrapper { + background: white; border-radius: 6px; - padding: 15px; - box-shadow: 0 2px 6px rgba(0,0,0,0.08); + padding: 20px 15px; + margin-bottom: 1.5rem; + box-shadow: 0 1px 6px rgba(0,0,0,0.05); + border: 1px solid #dee2e6; + position: relative; } -/* Debug info panel styling */ -.debug-info { - background-color: #f8f9fa; - border: 1px solid #e2e6ea; +.chart-title { + font-family: 'Merriweather', serif; + font-size: 1.5rem; + text-align: center; + margin-bottom: 15px; + color: #002855; + font-weight: 600; +} + +.chart-container { + height: 450px; + width: 100%; + overflow: hidden; +} + +/* Data Table */ +.table-responsive { + background: white; border-radius: 6px; - padding: 15px; - font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; - font-size: 0.9rem; - max-height: 400px; - overflow-y: auto; - box-shadow: inset 0 1px 2px rgba(0,0,0,0.05); + padding: 1rem; + box-shadow: 0 1px 6px rgba(0,0,0,0.05); + border: 1px solid #dee2e6; } /* Responsive adjustments */ @media (max-width: 768px) { - .data-controls { - padding: 15px; + .app-title { + font-size: 1.5rem; } - h1 { - font-size: 1.8rem; + .date-navigation { + max-width: 300px; } - #currentDateDisplay, h3 { - font-size: 1.3rem; + .chart-title { + font-size: 1.2rem; } .chart-container { - padding: 15px; - min-height: 300px; + height: 350px; + } + + .time-btn { + padding: 5px 10px; + font-size: 0.8rem; } -} - -/* Plot controls (zoom, pan, etc) styling */ -.modebar-group { - background-color: rgba(255, 255, 255, 0.9) !important; - border-radius: 4px !important; - box-shadow: 0 2px 4px rgba(0,0,0,0.1) !important; -} - -.modebar-btn { - color: #495057 !important; -} - -/* Table styling */ -.table-responsive { - background-color: white; - border-radius: 8px; - box-shadow: 0 2px 8px rgba(0,0,0,0.08); - overflow: hidden; - margin-top: 25px; -} - -table { - width: 100%; - margin: 0; - border-collapse: collapse; -} - -table th { - background-color: #f1f3f5; - color: #495057; - font-weight: 600; - text-transform: uppercase; - font-size: 0.85rem; - border: 1px solid #dee2e6; - padding: 12px 15px; -} - -table td { - border: 1px solid #dee2e6; - padding: 10px 15px; - color: #212529; -} - -table tr:nth-child(even) { - background-color: #f8f9fa; -} - -table tr:hover { - background-color: #e9ecef; - transition: background-color 0.2s ease; } \ No newline at end of file diff --git a/assets/python/latency_viewer.log b/assets/python/latency_viewer.log new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391