diff options
| author | Kristian Lyngstol <kristian@bohemians.org> | 2015-05-08 12:25:50 +0200 | 
|---|---|---|
| committer | Kristian Lyngstol <kristian@bohemians.org> | 2015-05-08 12:25:50 +0200 | 
| commit | 80c10810cfcb9225eb68b876bc843ea5204dff3d (patch) | |
| tree | 68e2c4b42519dc79c6074b0be2e0e11be02e0e39 /web | |
| parent | b504bf15f738c7ae3633af3dec14148e79b778f7 (diff) | |
| parent | 99bde7c69fb4adf34bfa5450293aec995bc7cb74 (diff) | |
Merge branch 'master' of github.com:tech-server/tgmanage
Diffstat (limited to 'web')
| -rw-r--r-- | web/nms.gathering.org/index.html | 2 | ||||
| -rw-r--r-- | web/nms.gathering.org/nms2/index.html | 46 | ||||
| -rw-r--r-- | web/nms.gathering.org/nms2/js/nms-map-handlers.js | 3 | ||||
| -rw-r--r-- | web/nms.gathering.org/nms2/js/nms.js | 128 | 
4 files changed, 123 insertions, 56 deletions
| diff --git a/web/nms.gathering.org/index.html b/web/nms.gathering.org/index.html index ffcb09b..8043c7d 100644 --- a/web/nms.gathering.org/index.html +++ b/web/nms.gathering.org/index.html @@ -6,7 +6,7 @@      <p>tg light & magic. :-)</p>      <ul> -      <li><a href="nms2/map.html">NMS 2 NG (Ping, Temp, Uplink, Trafikk, Info)</a> +      <li><a href="nms2/">NMS 2 NG (Ping, Temp, Uplink, Trafikk, Info)</a>      	<br /><i>Trykk på svitsjene (Work in progress)</i>  	</li>  	<br /> diff --git a/web/nms.gathering.org/nms2/index.html b/web/nms.gathering.org/nms2/index.html index 304cece..81f68e5 100644 --- a/web/nms.gathering.org/nms2/index.html +++ b/web/nms.gathering.org/nms2/index.html @@ -46,12 +46,11 @@  	    <span class="icon-bar"></span>  	    <span class="icon-bar"></span>  	  </button> -	  <a class="navbar-brand" onclick="toggleLayer('aboutBox'); //document.getElementById('aboutBox').style.display = 'block'; hideSwitch();" style="cursor: pointer;" >NMS</a>  	</div>  	<div id="navbar" class="navbar-collapse collapse">  	  <ul class="nav navbar-nav">  	    <li class="dropdown"> -	      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Map mode +	      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Menu  		<span class="caret"></span>  	      </a>  	      <ul class="dropdown-menu" role="menu"> @@ -66,45 +65,36 @@  		<li><a href="#" onclick="toggleLayer('nowPickerBox');document.getElementById('nowPicker').focus();">Travel in time</a></li>  		<li><a href="#" onclick="startReplay();" title="Replay from opening 120 minutes per second">Replay TG</a></li>  		<li class="divider"> </li> -		<li><a onclick="showTimerDebug(); hideSwitch();" style="cursor: pointer;" >Debug timers</a></li> -	      </ul> -	    </li> -	    <li class="dropdown"> -	      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">View<span class="caret"></span></a> -	      <ul class="dropdown-menu" role="menu"> +		<li class="dropdown-header">View</li>  		<li><a href="#" onclick="toggleNightMode()">Toggle Night Mode</a></li>  		<li><a href="#" onclick="showBlurBox()">Tweak Night Mode blur</a></li>  		<li><a href="#" onclick='showLayer("layerVisibility");'>Set layer visibility</a></li>  		<li class="divider"> </li>  		<li class="dropdown-header">Map scale</li>  		<li><a href="#"><label id="scaler-text" for='scaler'></label><input type="range" id="scaler" name="points" min="0.2" max="3" step="0.01" onchange="scaleChange()" /></a></li> +		<li class="divider"> </li> +		<li class="dropdown-header">Help</li> +		<li><a href="#" onclick="toggleLayer('aboutData');">About TG15 data</a></li> +	  	<li><a href="#" onclick="toggleLayer('aboutBox');" >About NMS</a></li> +	  	<li><a href="#" onclick="toggleLayer('aboutPerformance');" >About Performance</a></li> +	  	<li><a href="#" onclick="toggleLayer('aboutKeybindings');" >Keyboard Shortcuts</a></li> +		<li><a onclick="showTimerDebug(); hideSwitch();" style="cursor: pointer;" >Debug timers</a></li>  	      </ul>  	    </li>  	    <li><p id="updater_name" class="navbar-text"></p></li>  	    <div class="navbar-form navbar-left">  	      <div class="form-group"> -		<button class="btn btn-default" id="legend-1"></button> -		<button class="btn btn-default" id="legend-2"></button> -		<button class="btn btn-default" id="legend-3"></button> -		<button class="btn btn-default" id="legend-4"></button> -		<button class="btn btn-default" id="legend-5"></button> +		<button class="btn btn-default btn-xs" id="legend-1"></button> +		<button class="btn btn-default btn-xs" id="legend-2"></button> +		<button class="btn btn-default btn-xs" id="legend-3"></button> +		<button class="btn btn-default btn-xs" id="legend-4"></button> +		<button class="btn btn-default btn-xs" id="legend-5"></button>  	      </div>  	    </div>  	    </li>  	  </ul>  	  <ul class="nav navbar-nav navbar-right">  	    <li><p id="speed" class="navbar-text" title="Client port speed / Total port speed"></p></li> -	    <li class="dropdown"> -	      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Help -		<span class="caret"></span> -	      </a> -	      <ul class="dropdown-menu" role="menu"> -		<li><a href="#" onclick="toggleLayer('aboutData');">About TG15 data</a></li> -	  	<li><a href="#" onclick="toggleLayer('aboutBox');" >About NMS</a></li> -	  	<li><a href="#" onclick="toggleLayer('aboutPerformance');" >About Performance</a></li> -	  	<li><a href="#" onclick="toggleLayer('aboutKeybindings');" >Keyboard Shortcuts</a></li> -	      </ul> -	    </li>  	  </ul>  	</div><!--/.nav-collapse -->        </div> @@ -494,6 +484,13 @@  		</td>  	      </tr>  	      <tr> +		<td>TextInfo</td> +		<td> +		  <button onclick='hideLayer("textInfoCanvas");'>Hide</button> +		  <button onclick='showLayer("textInfoCanvas");'>Show</button> +		</td> +	      </tr> +	      <tr>  		<td>Timestamp</td>  		<td>  		  <button onclick='hideLayer("topCanvas");'>Hide</button> @@ -509,6 +506,7 @@  	<canvas id="blurCanvas" width="1920" height="1032" style="position: absolute; z-index: 20;"> </canvas>  	<canvas id="switchCanvas" width="1920" height="1032" style="position: absolute; z-index: 30;"> </canvas>  	<canvas id="textCanvas" width="1920" height="1032" style="position: absolute; z-index: 40;"> </canvas> +	<canvas id="textInfoCanvas" width="1920" height="1032" style="position: absolute; z-index: 45;"> </canvas>  	<canvas id="topCanvas" width="1920" height="1032" style="position: absolute; z-index: 50;"> </canvas>  	<canvas id="inputCanvas" width="1920" height="1032" style="position: absolute; z-index: 60; cursor: pointer;" onclick="canvasClick(event)">  	</canvas> diff --git a/web/nms.gathering.org/nms2/js/nms-map-handlers.js b/web/nms.gathering.org/nms2/js/nms-map-handlers.js index 9b2d44c..ddb50a1 100644 --- a/web/nms.gathering.org/nms2/js/nms-map-handlers.js +++ b/web/nms.gathering.org/nms2/js/nms-map-handlers.js @@ -232,11 +232,14 @@ function tempUpdater()  {  	for (sw in nms.switches_now["switches"]) {  		var t = "white"; +		var temp = "";  		if (nms.switches_now["switches"][sw]["temp"]) {  			t = temp_color(nms.switches_now["switches"][sw]["temp"]); +			temp = nms.switches_now["switches"][sw]["temp"] + "°C";  		}  		setSwitchColor(sw, t); +		switchInfoText(sw, temp);  	}  } diff --git a/web/nms.gathering.org/nms2/js/nms.js b/web/nms.gathering.org/nms2/js/nms.js index d4cf4e8..30d6ba8 100644 --- a/web/nms.gathering.org/nms2/js/nms.js +++ b/web/nms.gathering.org/nms2/js/nms.js @@ -7,6 +7,8 @@ var nms = {  	ping_data:undefined, // JSON data for ping history.  	drawn:false, // Set to 'true' when switches are drawn  	switch_showing:"", // Which switch we are displaying (if any). +	switchInfo:{}, +	switchInfoDrawn:{},  	repop_switch:false, // True if we need to repopulate the switch info when port state updates (e.g.: added comments);  	repop_time:false, // Timestamp in case we get a cached result  	nightMode:false,  @@ -23,7 +25,8 @@ var nms = {  	textDrawn:{}, // Have we drawn text for this switch?  	now:false, // Date we are looking at (false for current date).  	fontSize:16, // This is scaled too, but 16 seems to make sense. -	fontFace:"Arial Black", +	fontFace:"Verdana", +	fontLineFactor:3,  	/*  	 * This is used to track outbound AJAX requests and skip updates if  	 * we have too many outstanding requests. The ajaxOverflow is a @@ -203,6 +206,9 @@ function initDrawing() {  	dr['text'] = {};  	dr['text']['c'] = document.getElementById("textCanvas");  	dr['text']['ctx'] = dr['text']['c'].getContext('2d'); +	dr['textInfo'] = {}; +	dr['textInfo']['c'] = document.getElementById("textInfoCanvas"); +	dr['textInfo']['ctx'] = dr['textInfo']['c'].getContext('2d');  	dr['top'] = {};  	dr['top']['c'] = document.getElementById("topCanvas");  	dr['top']['ctx'] = dr['top']['c'].getContext('2d'); @@ -649,6 +655,7 @@ function setUpdater(fo)  {  	nms.updater = undefined;  	resetColors(); +	resetTextInfo();  	fo.init();  	nms.updater = fo;  	var foo = document.getElementById("updater_name"); @@ -932,8 +939,8 @@ function updateSpeed()  	nms.speed = speed_in;  	nms.speed_full = speed_full;  	if (speedele) { -		speedele.innerHTML = byteCount(8 * parseInt(nms.speed)) + "bit/s"; -		speedele.innerHTML += " / " + byteCount(8 * parseInt(nms.speed_full)) + "bit/s"; +		speedele.innerHTML = byteCount(8 * parseInt(nms.speed)) + "b/s"; +		speedele.innerHTML += " / " + byteCount(8 * parseInt(nms.speed_full)) + "b/s";  	}  } @@ -1008,10 +1015,11 @@ function drawSwitch(sw)  		drawBox(box['x'],box['y'],box['width'],box['height']);  		dr.switch.ctx.shadowBlur = 0;  		if (!nms.textDrawn[sw]) { -			if ((box['width'] + 10 )< box['height']) -				drawSideways(sw,box['x'],box['y'],box['width'],box['height']); -			else -				drawRegular(sw,box['x'],box['y'],box['width'],box['height']); +			if ((box['width'] + 10 )< box['height']) { +				drawSideways(dr.text.ctx, sw,box['x'],box['y'],box['width'],box['height']); +			} else { +				drawRegular(dr.text.ctx,sw,box['x'],box['y'],box['width'],box['height']); +			}  			nms.textDrawn[sw] = true;  		} @@ -1046,6 +1054,15 @@ function drawSwitches()  	}  	nms.drawn = true;  } +function drawSwitchInfo() +{ +	if (!nms.switches_now || !nms.switches_now.switches) +		return; +	for (var sw in nms.switchInfo) { +		switchInfoText(sw, nms.switchInfo[sw]); +	} +	nms.drawn = true; +}  /*   * Draw current time-window @@ -1063,9 +1080,9 @@ function drawNow()  	dr.top.ctx.clearRect(0,0,Math.floor(800 * canvas.scale),Math.floor(100 * canvas.scale));  	dr.top.ctx.fillStyle = "white";  	dr.top.ctx.strokeStyle = "black"; -	dr.top.ctx.lineWidth = Math.floor(2 * canvas.scale); +	dr.top.ctx.lineWidth = Math.floor(nms.fontLineFactor * canvas.scale);  	if (dr.top.ctx.lineWidth == 0) { -		dr.top.ctx.lineWidth = Math.round(2 * canvas.scale); +		dr.top.ctx.lineWidth = Math.round(nms.fontLineFactor * canvas.scale);  	}  	dr.top.ctx.strokeText(now, 0 + margin.text, 25 * canvas.scale);  	dr.top.ctx.fillText(now, 0 + margin.text, 25 * canvas.scale); @@ -1083,8 +1100,10 @@ function drawNow()  function drawScene()  {  	dr.text.ctx.font = Math.floor(nms.fontSize * canvas.scale) + "px " + nms.fontFace; +	dr.textInfo.ctx.font = Math.floor(nms.fontSize * canvas.scale) + "px " + nms.fontFace;  	drawLinknets();  	drawSwitches(); +	drawSwitchInfo();  }  /* @@ -1096,11 +1115,17 @@ function setScale()  	canvas.height =  orig.height * canvas.scale ;  	canvas.width = orig.width * canvas.scale ;  	for (var a in dr) { +		/* +		 * Resizing this to a too small size breaks gradients on smaller screens. +		 */ +		if (a == 'hidden') +			continue;  		dr[a].c.height = canvas.height;  		dr[a].c.width = canvas.width;  	}  	nms.nightBlur = {};  	nms.textDrawn = {}; +	nms.switchInfoDrawn = {};  	if (nms.gradients)  		drawGradient(nms.gradients);  	drawBG(); @@ -1192,6 +1217,15 @@ function resetColors()  	}  } +function resetTextInfo() +{ +	if (!nms.switches_now) +		return; +	for (var sw in nms.switches_now.switches) { +		switchInfoText(sw, undefined); +	} + +}  /*   * onclick handler for the canvas.   * @@ -1259,6 +1293,26 @@ function setNightMode(toggle) {  	}  	setScale();  } + +function switchInfoText(sw, text) +{ +	var box = nms.switches_now['switches'][sw]['placement']; +	var c = canvas.scale; +	if (nms.switchInfo[sw] == text && nms.switchInfoDrawn[sw]) { +		return; +	} +	nms.switchInfo[sw] = text; +	nms.switchInfoDrawn[sw] = true; +	dr.textInfo.ctx.clearRect(c* box['x'], c*box['y'], c*box['width'], c*box['height']); +	if (text != undefined && text != "") { +		if ((box['width'] + 10 )< box['height']) { +			drawSideways(dr.textInfo.ctx, text,box['x'],box['y'],box['width'],box['height'],"end"); +		} else { +			drawRegular(dr.textInfo.ctx, text,box['x'],box['y'],box['width'],box['height'],"end"); +		} +	} +} +  /*   * Draw a box (e.g.: switch).   */ @@ -1269,9 +1323,9 @@ function drawBox(x,y,boxw,boxh)  	var myX2 = Math.floor((boxw) * canvas.scale);  	var myY2 = Math.floor((boxh) * canvas.scale);  	dr.switch.ctx.fillRect(myX,myY, myX2, myY2); -	dr.switch.ctx.lineWidth = Math.floor(0.5 * canvas.scale); +	dr.switch.ctx.lineWidth = Math.floor(1.0 * canvas.scale);  	if (canvas.scale < 1.0) { -		dr.switch.ctx.lineWidth = 0.5; +		dr.switch.ctx.lineWidth = 1.0;  	}  	dr.switch.ctx.strokeStyle = "#000000";  	dr.switch.ctx.strokeRect(myX,myY, myX2, myY2); @@ -1293,19 +1347,25 @@ function drawBoxBlur(x,y,boxw,boxh)   *   * XXX: This is pretty nasty and should also probably take a box as input.   */ -function drawSideways(text,x,y,w,h) +function drawSideways(ctx,text,x,y,w,h,align)  { -	dr.text.ctx.rotate(Math.PI * 3 / 2); -	dr.text.ctx.fillStyle = "white"; -	dr.text.ctx.strokeStyle = "black"; -	dr.text.ctx.lineWidth = Math.floor(3 * canvas.scale); -	if (dr.text.ctx.lineWidth == 0) { -		dr.text.ctx.lineWidth = Math.round(3 * canvas.scale); +	ctx.rotate(Math.PI * 3 / 2); +	ctx.fillStyle = "white"; +	ctx.strokeStyle = "black"; +	if (align == "end") { +		ctx.textAlign = align; +		y = y-h + margin.text*2; +	} else { +		ctx.textAlign = "start"; +	} +	ctx.lineWidth = Math.floor(nms.fontLineFactor * canvas.scale); +	if (ctx.lineWidth == 0) { +		ctx.lineWidth = Math.round(nms.fontLineFactor * canvas.scale);  	} -	dr.text.ctx.strokeText(text, - canvas.scale * (y + h - margin.text),canvas.scale * (x + w - margin.text) ); -	dr.text.ctx.fillText(text, - canvas.scale * (y + h - margin.text),canvas.scale * (x + w - margin.text) ); +	ctx.strokeText(text, - canvas.scale * (y + h - margin.text),canvas.scale * (x + w - margin.text) ); +	ctx.fillText(text, - canvas.scale * (y + h - margin.text),canvas.scale * (x + w - margin.text) ); -	dr.text.ctx.rotate(Math.PI / 2); +	ctx.rotate(Math.PI / 2);  }  /* @@ -1336,16 +1396,22 @@ function invertCanvas() {   *   * XXX: Both should be renamed to have 'text' or something in them   */ -function drawRegular(text,x,y,w,h) { - -	dr.text.ctx.fillStyle = "white"; -	dr.text.ctx.strokeStyle = "black"; -	dr.text.ctx.lineWidth = Math.floor(3 * canvas.scale); -	if (dr.text.ctx.lineWidth == 0) { -		dr.text.ctx.lineWidth = Math.round(3 * canvas.scale); +function drawRegular(ctx,text,x,y,w,h,align) { + +	ctx.fillStyle = "white"; +	ctx.strokeStyle = "black"; +	ctx.lineWidth = Math.floor(nms.fontLineFactor * canvas.scale); +	if (align == "end") { +		ctx.textAlign = align; +		x = x+w - margin.text*2; +	} else { +		ctx.textAlign = "start"; +	} +	if (ctx.lineWidth == 0) { +		ctx.lineWidth = Math.round(nms.fontLineFactor * canvas.scale);  	} -	dr.text.ctx.strokeText(text, (x + margin.text) * canvas.scale, (y + h - margin.text) * canvas.scale); -	dr.text.ctx.fillText(text, (x + margin.text) * canvas.scale, (y + h - margin.text) * canvas.scale); +	ctx.strokeText(text, (x + margin.text) * canvas.scale, (y + h - margin.text) * canvas.scale); +	ctx.fillText(text, (x + margin.text) * canvas.scale, (y + h - margin.text) * canvas.scale);  }  /* @@ -1397,7 +1463,7 @@ function initNMS() {  	nms.timers.ping = new nmsTimer(updatePing, 1000, "Ping updater", "AJAX request to update ping data");  	nms.timers.ping.start(); -	nms.timers.replay = new nmsTimer(timeReplay, 500, "Time machine", "Handler used to change time"); +	nms.timers.replay = new nmsTimer(timeReplay, 1000, "Time machine", "Handler used to change time");  	detectHandler();  	updatePorts();  	updatePing(); | 
