nmea-streamer
Version:
The plugin streams a file with NMEA0183 messages to the SignalK server at a configurable speed. It also provides a web app with play controls.
231 lines (201 loc) • 4.51 kB
CSS
body {
font-family: Arial, sans-serif;
font-size: 20px;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #333;
color: white;
margin: 0;
position: relative;
}
.container {
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
}
/* Progress Container */
.progress-container {
width: 100%;
max-width: 800px;
padding: 30px 40px 30px 40px;
background-color: #222;
border-radius: 15px;
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.6);
display: flex;
justify-content: center;
}
.file-info {
width: 100%;
max-width: 800px;
padding: 20px;
background-color: #222;
border-radius: 15px;
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.6);
display: flex;
justify-content: center;
}
/* Progress Bar */
.progress-bar {
position: relative;
width: 100%;
height: 10px;
background-color: #555;
border-radius: 5px;
}
.loop-start,
.loop-end {
position: absolute;
width: 4px;
height: 20px;
background-color: #00ff00; /* Green color for loop markers */
top: -5px;
border-radius: 2px;
display: block; /* Temporarily set to block to check visibility */
cursor: pointer;
}
.loop-start {
left: 0;
}
.loop-end {
right: 0;
}
.playhead {
position: absolute;
height: 100%;
width: 10px;
background-color: #f00;
border-radius: 5px;
transform: translateX(-50%);
display: inline-block;
}
.target {
position: absolute;
height: 100%;
width: 10px;
background-color: #00f;
border-radius: 5px;
transform: translateX(-50%);
display: inline-block;
visibility: hidden;
}
.marker {
font-size: 12px;
visibility: visible;
width: 60px;
background-color: transparent;
color: #fff;
text-align: center;
border-radius: 5px;
padding: 5px;
position: absolute;
bottom: 100%; /* Position the tooltip above the text */
left: 50%;
margin-left: -36px; /* Center the tooltip */
cursor: pointer;
}
.start .end {
bottom: 100%; /* Position the tooltip above the text */
}
.current {
bottom: -300%;
}
.tooltiptext {
font-size: 12px;
visibility: visible;
width: 120px;
background-color: transparent;
color: #fff;
text-align: center;
border-radius: 5px;
padding: 5px;
position: absolute;
z-index: 1;
bottom: 100%; /* Position the tooltip above the text */
left: 50%;
margin-left: -60px; /* Center the tooltip */
opacity: 0;
transition: opacity 0.3s;
}
/* Control Buttons Area */
.dvd-controls {
display: flex;
align-items: center;
gap: 20px;
padding: 20px;
background-color: #222;
border-radius: 15px;
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.6);
width: 100%;
max-width: 800px;
padding: 30px 40px 30px 40px;
justify-content: space-between; /* Add this line */
}
.control-button {
color: #fff;
background-color: #555;
border: none;
border-radius: 50%;
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: background-color 0.3s, transform 0.1s;
box-shadow: 0 3px 5px rgba(0, 0, 0, 0.3);
}
.control-button:hover {
background-color: #777;
}
.control-button:active {
transform: scale(0.95);
border: 1px solid rgba(0, 0, 0, 0.3);
}
.control-button:focus {
outline: none;
}
.speed-container {
margin-left: auto; /* Push the speed controls to the right */
display: flex;
align-items: center;
}
.speed-label {
margin-right: 8px;
}
.speed-select {
font-size: inherit;
padding: 8px;
border: none;
border-radius: 8px;
background-color: #555;
color: white;
cursor: pointer;
}
.speed-select:focus {
outline: none;
}
#status {
text-align: center;
}
/* Responsive styles */
@media (max-width: 600px) {
body {
font-size: 16px;
}
.container {
gap: 10px;
}
.progress-container, .file-info, .dvd-controls {
padding: 10px;
}
.control-button {
width: 30px;
height: 30px;
}
.speed-label, .speed-select {
font-size: 14px;
}
}