implement header on map page (not fully functional yet)
This commit is contained in:
		| @@ -1,3 +1,11 @@ | ||||
| @import url("openwebrx-header.css"); | ||||
| @import url("openwebrx-globals.css"); | ||||
| 
 | ||||
| /* expandable photo not implemented on map page */ | ||||
| #webrx-top-photo-clip { | ||||
|     max-height: 67px; | ||||
| } | ||||
| 
 | ||||
| html, body, .openwebrx-map { | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
							
								
								
									
										8
									
								
								htdocs/css/openwebrx-globals.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								htdocs/css/openwebrx-globals.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| html, body | ||||
| { | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
|     height: 100%; | ||||
|     font-family: "DejaVu Sans", Verdana, Geneva, sans-serif; | ||||
|     overflow: hidden; | ||||
| } | ||||
							
								
								
									
										201
									
								
								htdocs/css/openwebrx-header.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										201
									
								
								htdocs/css/openwebrx-header.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,201 @@ | ||||
| #webrx-top-container | ||||
| { | ||||
|     position: relative; | ||||
|     z-index:1000; | ||||
| } | ||||
|  | ||||
| #webrx-top-photo | ||||
| { | ||||
|     width: 100%; | ||||
|     display: block; | ||||
| } | ||||
|  | ||||
| #webrx-top-photo-clip | ||||
| { | ||||
|     min-height: 67px; | ||||
|     max-height: 350px; | ||||
|     overflow: hidden; | ||||
|     position: relative; | ||||
| } | ||||
|  | ||||
| .webrx-top-bar-parts | ||||
| { | ||||
|     height:67px; | ||||
| } | ||||
|  | ||||
| #webrx-top-bar | ||||
| { | ||||
|     background: rgba(128, 128, 128, 0.15); | ||||
|     margin:0; | ||||
|     padding:0; | ||||
|     user-select: none; | ||||
|     -webkit-touch-callout: none; | ||||
|     -webkit-user-select: none; | ||||
|     -khtml-user-select: none; | ||||
|     -moz-user-select: none; | ||||
|     -ms-user-select: none; | ||||
|     overflow: hidden; | ||||
|     position: absolute; | ||||
|     left: 0; | ||||
|     top: 0; | ||||
|     right: 0; | ||||
| } | ||||
|  | ||||
| #webrx-top-logo | ||||
| { | ||||
|     padding: 12px; | ||||
|     float: left; | ||||
| } | ||||
|  | ||||
| #webrx-ha5kfu-top-logo | ||||
| { | ||||
|     float: right; | ||||
|     padding: 15px; | ||||
| } | ||||
|  | ||||
| #webrx-rx-avatar-background | ||||
| { | ||||
|     cursor:pointer; | ||||
|     background-image: url(../gfx/openwebrx-avatar-background.png); | ||||
|     background-origin: content-box; | ||||
|     background-repeat: no-repeat; | ||||
|     float: left; | ||||
|     width: 54px; | ||||
|     height: 54px; | ||||
|     padding: 7px; | ||||
| } | ||||
|  | ||||
| #webrx-rx-avatar | ||||
| { | ||||
|     cursor:pointer; | ||||
|     width: 46px; | ||||
|     height: 46px; | ||||
|     padding: 4px; | ||||
|     border-radius: 8px; | ||||
| } | ||||
|  | ||||
| #webrx-rx-texts { | ||||
|     float: left; | ||||
|     padding: 10px; | ||||
| } | ||||
|  | ||||
| #webrx-rx-texts div { | ||||
|     padding: 3px; | ||||
| } | ||||
|  | ||||
| #webrx-rx-title | ||||
| { | ||||
|     white-space:nowrap; | ||||
|     overflow: hidden; | ||||
|     cursor:pointer; | ||||
|     font-family: "DejaVu Sans", Verdana, Geneva, sans-serif; | ||||
|     color: #909090; | ||||
|     font-size: 11pt; | ||||
|     font-weight: bold; | ||||
| } | ||||
|  | ||||
| #webrx-rx-desc | ||||
| { | ||||
|     white-space:nowrap; | ||||
|     overflow: hidden; | ||||
|     cursor:pointer; | ||||
|     font-size: 10pt; | ||||
|     color: #909090; | ||||
| } | ||||
|  | ||||
| #webrx-rx-desc a | ||||
| { | ||||
|     color: #909090; | ||||
| } | ||||
|  | ||||
| #openwebrx-rx-details-arrow | ||||
| { | ||||
|     cursor:pointer; | ||||
|     position: absolute; | ||||
|     left: 470px; | ||||
|     top: 51px; | ||||
| } | ||||
|  | ||||
| #openwebrx-rx-details-arrow a | ||||
| { | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
| } | ||||
|  | ||||
| #openwebrx-rx-details-arrow-down | ||||
| { | ||||
|     display:none; | ||||
| } | ||||
|  | ||||
| #openwebrx-main-buttons ul | ||||
| { | ||||
|     display: table; | ||||
|     margin:0; | ||||
| } | ||||
|  | ||||
|  | ||||
| #openwebrx-main-buttons ul li | ||||
| { | ||||
|     display: table-cell; | ||||
|     padding-left: 5px; | ||||
|     padding-right: 5px; | ||||
|     cursor:pointer; | ||||
| } | ||||
|  | ||||
| #openwebrx-main-buttons a { | ||||
|     color: inherit; | ||||
|     text-decoration: inherit; | ||||
| } | ||||
|  | ||||
| #openwebrx-main-buttons li:hover | ||||
| { | ||||
|     background-color: rgba(255, 255, 255, 0.3); | ||||
| } | ||||
|  | ||||
| #openwebrx-main-buttons li:active | ||||
| { | ||||
|     background-color: rgba(255, 255, 255, 0.55); | ||||
| } | ||||
|  | ||||
|  | ||||
| #openwebrx-main-buttons | ||||
| { | ||||
|     float: right; | ||||
|     margin:0; | ||||
|     color: white; | ||||
|     text-shadow: 0px 0px 4px #000000; | ||||
|     text-align: center; | ||||
|     font-size: 9pt; | ||||
|     font-weight: bold; | ||||
| } | ||||
|  | ||||
| #webrx-rx-photo-title | ||||
| { | ||||
|     position: absolute; | ||||
|     left: 15px; | ||||
|     top: 78px; | ||||
|     color: White; | ||||
|     font-size: 16pt; | ||||
|     text-shadow: 1px 1px 4px #444; | ||||
|     opacity: 1; | ||||
| } | ||||
|  | ||||
| #webrx-rx-photo-desc | ||||
| { | ||||
|     position: absolute; | ||||
|     left: 15px; | ||||
|     top: 109px; | ||||
|     color: White; | ||||
|     font-size: 10pt; | ||||
|     font-weight: bold; | ||||
|     text-shadow: 0px 0px 6px #444; | ||||
|     opacity: 1; | ||||
|     line-height: 1.5em; | ||||
| } | ||||
|  | ||||
| #webrx-rx-photo-desc a | ||||
| { | ||||
|     color: #5ca8ff; | ||||
|     text-shadow: none; | ||||
| } | ||||
|  | ||||
							
								
								
									
										30
									
								
								htdocs/include/header.include.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								htdocs/include/header.include.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| <div id="webrx-top-container"> | ||||
|     <div id="webrx-top-photo-clip"> | ||||
|         <img src="static/gfx/openwebrx-top-photo.jpg" id="webrx-top-photo"/> | ||||
|         <div id="webrx-top-bar" class="webrx-top-bar-parts"> | ||||
|             <a href="https://sdr.hu/openwebrx" target="_blank"><img src="static/gfx/openwebrx-top-logo.png" id="webrx-top-logo" /></a> | ||||
|             <a href="http://ha5kfu.sch.bme.hu/" target="_blank"><img src="static/gfx/openwebrx-ha5kfu-top-logo.png" id="webrx-ha5kfu-top-logo" /></a> | ||||
|             <div id="webrx-rx-avatar-background"> | ||||
|                 <img id="webrx-rx-avatar" src="static/gfx/openwebrx-avatar.png" onclick="toggle_rx_photo();"/> | ||||
|             </div> | ||||
|             <div id="webrx-rx-texts"> | ||||
|                 <div id="webrx-rx-title" onclick="toggle_rx_photo();"></div> | ||||
|                 <div id="webrx-rx-desc" onclick="toggle_rx_photo();"></div> | ||||
|             </div> | ||||
|             <div id="openwebrx-rx-details-arrow"> | ||||
|                 <a id="openwebrx-rx-details-arrow-up" onclick="toggle_rx_photo();"><img src="static/gfx/openwebrx-rx-details-arrow-up.png" /></a> | ||||
|                 <a id="openwebrx-rx-details-arrow-down" onclick="toggle_rx_photo();"><img src="static/gfx/openwebrx-rx-details-arrow.png" /></a> | ||||
|             </div> | ||||
|             <section id="openwebrx-main-buttons"> | ||||
|                 <ul> | ||||
|                     <li onmouseup="toggle_panel('openwebrx-panel-status');"><img src="static/gfx/openwebrx-panel-status.png" /><br/>Status</li> | ||||
|                     <li onmouseup="toggle_panel('openwebrx-panel-log');"><img  src="static/gfx/openwebrx-panel-log.png" /><br/>Log</li> | ||||
|                     <li onmouseup="toggle_panel('openwebrx-panel-receiver');"><img src="static/gfx/openwebrx-panel-receiver.png" /><br/>Receiver</li> | ||||
|                     <li><a href="/map" target="_blank"><img src="static/gfx/openwebrx-panel-map.png" /><br/>Map</a></li> | ||||
|                 </ul> | ||||
|             </section> | ||||
|         </div> | ||||
|         <div id="webrx-rx-photo-title"></div> | ||||
|         <div id="webrx-rx-photo-desc"></div> | ||||
|     </div> | ||||
| </div> | ||||
| @@ -33,36 +33,7 @@ | ||||
|     </head> | ||||
|     <body onload="openwebrx_init();"> | ||||
| <div id="webrx-page-container"> | ||||
|     <div id="webrx-top-container"> | ||||
|         <div id="webrx-top-photo-clip"> | ||||
|             <img src="static/gfx/openwebrx-top-photo.jpg" id="webrx-top-photo"/> | ||||
|             <div id="webrx-top-bar" class="webrx-top-bar-parts"> | ||||
|                 <a href="https://sdr.hu/openwebrx" target="_blank"><img src="static/gfx/openwebrx-top-logo.png" id="webrx-top-logo" /></a> | ||||
|                 <a href="http://ha5kfu.sch.bme.hu/" target="_blank"><img src="static/gfx/openwebrx-ha5kfu-top-logo.png" id="webrx-ha5kfu-top-logo" /></a> | ||||
|                 <div id="webrx-rx-avatar-background"> | ||||
|                     <img id="webrx-rx-avatar" src="static/gfx/openwebrx-avatar.png" onclick="toggle_rx_photo();"/> | ||||
|                 </div> | ||||
|                 <div id="webrx-rx-texts"> | ||||
|                     <div id="webrx-rx-title" onclick="toggle_rx_photo();"></div> | ||||
|                     <div id="webrx-rx-desc" onclick="toggle_rx_photo();"></div> | ||||
|                 </div> | ||||
|                 <div id="openwebrx-rx-details-arrow"> | ||||
|                     <a id="openwebrx-rx-details-arrow-up" onclick="toggle_rx_photo();"><img src="static/gfx/openwebrx-rx-details-arrow-up.png" /></a> | ||||
|                     <a id="openwebrx-rx-details-arrow-down" onclick="toggle_rx_photo();"><img src="static/gfx/openwebrx-rx-details-arrow.png" /></a> | ||||
|                 </div> | ||||
|                 <section id="openwebrx-main-buttons"> | ||||
|                     <ul> | ||||
|                         <li onmouseup="toggle_panel('openwebrx-panel-status');"><img src="static/gfx/openwebrx-panel-status.png" /><br/>Status</li> | ||||
|                         <li onmouseup="toggle_panel('openwebrx-panel-log');"><img  src="static/gfx/openwebrx-panel-log.png" /><br/>Log</li> | ||||
|                         <li onmouseup="toggle_panel('openwebrx-panel-receiver');"><img src="static/gfx/openwebrx-panel-receiver.png" /><br/>Receiver</li> | ||||
|                         <li><a href="/map" target="_blank"><img src="static/gfx/openwebrx-panel-map.png" /><br/>Map</a></li> | ||||
|                     </ul> | ||||
|                 </section> | ||||
|             </div> | ||||
|             <div id="webrx-rx-photo-title"></div> | ||||
|             <div id="webrx-rx-photo-desc"></div> | ||||
|         </div> | ||||
|     </div> | ||||
|     ${header} | ||||
|     <div id="webrx-main-container"> | ||||
|             <div id="openwebrx-scale-container"> | ||||
|                 <canvas id="openwebrx-scale-canvas" width="0" height="0"></canvas> | ||||
|   | ||||
| @@ -5,10 +5,11 @@ | ||||
|     <script src="static/lib/jquery-3.2.1.min.js"></script> | ||||
|     <script src="static/map.js"></script> | ||||
|     <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="static/map.css" /> | ||||
|     <link rel="stylesheet" type="text/css" href="static/css/map.css" /> | ||||
|     <meta charset="utf-8"> | ||||
| </head> | ||||
| <body> | ||||
|     ${header} | ||||
|     <div class="openwebrx-map"></div> | ||||
| </body> | ||||
| </html> | ||||
|   | ||||
| @@ -18,15 +18,8 @@ | ||||
|     along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  | ||||
| */ | ||||
|  | ||||
| html, body | ||||
| { | ||||
| 	margin: 0; | ||||
| 	padding: 0; | ||||
| 	height: 100%; | ||||
| 	font-family: "DejaVu Sans", Verdana, Geneva, sans-serif; | ||||
| 	overflow: hidden; | ||||
| } | ||||
| @import url("css/openwebrx-header.css"); | ||||
| @import url("css/openwebrx-globals.css"); | ||||
|  | ||||
| select | ||||
| { | ||||
| @@ -147,179 +140,12 @@ input[type=range]:focus::-ms-fill-upper | ||||
| 	background: #B6B6B6; | ||||
| } | ||||
|  | ||||
| #webrx-top-container | ||||
| { | ||||
| 	position: relative; | ||||
| 	z-index:1000; | ||||
| } | ||||
|  | ||||
| .webrx-top-bar-parts | ||||
| { | ||||
| 	height:67px; | ||||
| } | ||||
|  | ||||
| #webrx-top-bar | ||||
| { | ||||
| 	background: rgba(128, 128, 128, 0.15); | ||||
| 	margin:0; | ||||
| 	padding:0; | ||||
| 	user-select: none; | ||||
|     -webkit-touch-callout: none; | ||||
|     -webkit-user-select: none; | ||||
|     -khtml-user-select: none; | ||||
|     -moz-user-select: none; | ||||
|     -ms-user-select: none; | ||||
|     overflow: hidden; | ||||
|     position: absolute; | ||||
|     left: 0; | ||||
|     top: 0; | ||||
|     right: 0; | ||||
| } | ||||
|  | ||||
| #webrx-top-logo | ||||
| { | ||||
|     padding: 12px; | ||||
|     float: left; | ||||
| } | ||||
|  | ||||
| #webrx-ha5kfu-top-logo | ||||
| { | ||||
|     float: right; | ||||
|     padding: 15px; | ||||
| } | ||||
|  | ||||
| #webrx-top-photo | ||||
| { | ||||
| 	width: 100%; | ||||
| 	display: block; | ||||
| } | ||||
|  | ||||
| #webrx-rx-avatar-background | ||||
| { | ||||
| 	cursor:pointer; | ||||
|     background-image: url(gfx/openwebrx-avatar-background.png); | ||||
|     background-origin: content-box; | ||||
|     background-repeat: no-repeat; | ||||
|     float: left; | ||||
|     width: 54px; | ||||
|     height: 54px; | ||||
|     padding: 7px; | ||||
| } | ||||
|  | ||||
| #webrx-rx-avatar | ||||
| { | ||||
| 	cursor:pointer; | ||||
| 	width: 46px; | ||||
| 	height: 46px; | ||||
| 	padding: 4px; | ||||
| 	border-radius: 8px; | ||||
| } | ||||
|  | ||||
| #webrx-top-photo-clip | ||||
| { | ||||
|     min-height: 67px; | ||||
| 	max-height: 350px; | ||||
| 	overflow: hidden; | ||||
| 	position: relative; | ||||
| } | ||||
|  | ||||
| #webrx-page-container | ||||
| { | ||||
|    min-height:100%; | ||||
|    position:relative; | ||||
| } | ||||
|  | ||||
| #webrx-rx-photo-title | ||||
| { | ||||
| 	position: absolute; | ||||
| 	left: 15px; | ||||
| 	top: 78px; | ||||
| 	color: White; | ||||
| 	font-size: 16pt; | ||||
| 	text-shadow: 1px 1px 4px #444; | ||||
| 	opacity: 1; | ||||
| } | ||||
|  | ||||
| #webrx-rx-photo-desc | ||||
| { | ||||
| 	position: absolute; | ||||
| 	left: 15px; | ||||
| 	top: 109px; | ||||
| 	color: White; | ||||
| 	font-size: 10pt; | ||||
| 	font-weight: bold; | ||||
| 	text-shadow: 0px 0px 6px #444; | ||||
| 	opacity: 1; | ||||
| 	line-height: 1.5em; | ||||
| } | ||||
|  | ||||
| #webrx-rx-photo-desc a | ||||
| { | ||||
| 	color: #5ca8ff; | ||||
| 	text-shadow: none; | ||||
| } | ||||
|  | ||||
| #webrx-rx-texts { | ||||
|     float: left; | ||||
|     padding: 10px; | ||||
| } | ||||
|  | ||||
| #webrx-rx-texts div { | ||||
|     padding: 3px; | ||||
| } | ||||
|  | ||||
| #webrx-rx-title | ||||
| { | ||||
| 	white-space:nowrap; | ||||
| 	overflow: hidden; | ||||
| 	cursor:pointer; | ||||
| 	font-family: "DejaVu Sans", Verdana, Geneva, sans-serif; | ||||
| 	color: #909090; | ||||
| 	font-size: 11pt; | ||||
| 	font-weight: bold; | ||||
| } | ||||
|  | ||||
| #webrx-rx-desc | ||||
| { | ||||
| 	white-space:nowrap; | ||||
| 	overflow: hidden; | ||||
| 	cursor:pointer; | ||||
| 	font-size: 10pt; | ||||
| 	color: #909090; | ||||
| } | ||||
|  | ||||
| #webrx-rx-desc a | ||||
| { | ||||
| 	color: #909090; | ||||
| } | ||||
|  | ||||
| #openwebrx-rx-details-arrow | ||||
| { | ||||
| 	cursor:pointer; | ||||
| 	position: absolute; | ||||
| 	left: 470px; | ||||
| 	top: 51px; | ||||
| } | ||||
|  | ||||
| #openwebrx-rx-details-arrow a | ||||
| { | ||||
| 	margin: 0; | ||||
| 	padding: 0; | ||||
| } | ||||
|  | ||||
| #openwebrx-rx-details-arrow-down | ||||
| { | ||||
| 	display:none; | ||||
| } | ||||
|  | ||||
| /*canvas#waterfall-canvas | ||||
| { | ||||
| 	border-style: none; | ||||
| 	border-width: 1px; | ||||
| 	height: 150px; | ||||
| 	width: 100%; | ||||
| }*/ | ||||
|  | ||||
| #openwebrx-scale-container | ||||
| { | ||||
| 	height: 47px; | ||||
| @@ -638,52 +464,6 @@ img.openwebrx-mirror-img | ||||
| 	height: 20px; | ||||
| } | ||||
|  | ||||
| #openwebrx-main-buttons img | ||||
| { | ||||
| } | ||||
|  | ||||
| #openwebrx-main-buttons ul | ||||
| { | ||||
| 	display: table; | ||||
| 	margin:0; | ||||
| } | ||||
|  | ||||
|  | ||||
| #openwebrx-main-buttons ul li | ||||
| { | ||||
| 	display: table-cell; | ||||
| 	padding-left: 5px; | ||||
| 	padding-right: 5px; | ||||
| 	cursor:pointer; | ||||
| } | ||||
|  | ||||
| #openwebrx-main-buttons a { | ||||
|     color: inherit; | ||||
|     text-decoration: inherit; | ||||
| } | ||||
|  | ||||
| #openwebrx-main-buttons li:hover | ||||
| { | ||||
| 	background-color: rgba(255, 255, 255, 0.3); | ||||
| } | ||||
|  | ||||
| #openwebrx-main-buttons li:active | ||||
| { | ||||
| 	background-color: rgba(255, 255, 255, 0.55); | ||||
| } | ||||
|  | ||||
|  | ||||
| #openwebrx-main-buttons | ||||
| { | ||||
|     float: right; | ||||
| 	margin:0; | ||||
| 	color: white; | ||||
| 	text-shadow: 0px 0px 4px #000000; | ||||
| 	text-align: center; | ||||
| 	font-size: 9pt; | ||||
| 	font-weight: bold; | ||||
| } | ||||
|  | ||||
| #openwebrx-panel-receiver | ||||
| { | ||||
| 	width:110px; | ||||
|   | ||||
| @@ -2,6 +2,7 @@ import os | ||||
| import mimetypes | ||||
| import json | ||||
| from datetime import datetime | ||||
| from string import Template | ||||
| from owrx.websocket import WebSocketConnection | ||||
| from owrx.config import PropertyManager | ||||
| from owrx.source import ClientRegistry | ||||
| @@ -72,14 +73,36 @@ class AssetsController(Controller): | ||||
|         filename = self.request.matches.group(1) | ||||
|         self.serve_file(filename) | ||||
|  | ||||
| class IndexController(AssetsController): | ||||
|     def handle_request(self): | ||||
|         self.serve_file("index.html") | ||||
| class TemplateController(Controller): | ||||
|     def render_template(self, file, **vars): | ||||
|         f = open('htdocs/' + file, 'r') | ||||
|         template = Template(f.read()) | ||||
|         f.close() | ||||
|  | ||||
| class MapController(AssetsController): | ||||
|         return template.safe_substitute(**vars) | ||||
|  | ||||
|     def serve_template(self, file, **vars): | ||||
|         self.send_response(self.render_template(file, **vars), content_type = 'text/html') | ||||
|  | ||||
|     def default_variables(self): | ||||
|         return {} | ||||
|  | ||||
|  | ||||
| class WebpageController(TemplateController): | ||||
|     def template_variables(self): | ||||
|         header = self.render_template('include/header.include.html') | ||||
|         return { "header": header } | ||||
|  | ||||
|  | ||||
| class IndexController(WebpageController): | ||||
|     def handle_request(self): | ||||
|         self.serve_template("index.html", **self.template_variables()) | ||||
|  | ||||
|  | ||||
| class MapController(WebpageController): | ||||
|     def handle_request(self): | ||||
|         #TODO check if we have a google maps api key first? | ||||
|         self.serve_file("map.html") | ||||
|         self.serve_template("map.html", **self.template_variables()) | ||||
|  | ||||
| class FeatureController(AssetsController): | ||||
|     def handle_request(self): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jakob Ketterl
					Jakob Ketterl