UNPKG

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
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; } }