Network Health Panel with mining
This commit is contained in:
		
							parent
							
								
									dea6584018
								
							
						
					
					
						commit
						21c373b55d
					
				| @ -17,7 +17,6 @@ | ||||
| 
 | ||||
| // this function is included locally, but you can also include separately via a header definition
 | ||||
| 
 | ||||
| console.log("loaded?"); | ||||
| 
 | ||||
| document.onkeydown = function(evt) { | ||||
|     // This functions keeps track of keyboard inputs in order to allow copy, paste and other features
 | ||||
|  | ||||
| @ -46,12 +46,13 @@ ApplicationWindow { | ||||
|         walletWeb.view.url = "http://ethereum-dapp-wallet.meteor.com/"; | ||||
|         walletWeb.menuItem.title = "Wallet"; | ||||
| 
 | ||||
|         addPlugin("./views/miner.qml", {noAdd: true, close: false, section: "ethereum", active: false}); | ||||
|         addPlugin("./views/miner.qml", {noAdd: true, close: false, section: "legacy", active: false}); | ||||
|         addPlugin("./views/network.qml", {noAdd: true, close: false, section: "ethereum", active: false}); | ||||
| 
 | ||||
|         var whisperTab = addPlugin("./views/browser.qml", {noAdd: true, close: true, section: "ethereum", active: false}); | ||||
|        /* var whisperTab = addPlugin("./views/browser.qml", {noAdd: true, close: true, section: "ethereum", active: false}); | ||||
|         whisperTab.view.url = "http://ethereum-dapp-whisper-client.meteor.com/"; | ||||
|         whisperTab.menuItem.title = "Whisper Chat"; | ||||
| 
 | ||||
| */ | ||||
|         addPlugin("./views/wallet.qml", {noAdd: true, close: false, section: "legacy"});         | ||||
|         addPlugin("./views/transaction.qml", {noAdd: true, close: false, section: "legacy"}); | ||||
|         addPlugin("./views/whisper.qml", {noAdd: true, close: false, section: "legacy"}); | ||||
| @ -536,6 +537,8 @@ ApplicationWindow { | ||||
| 
 | ||||
|                      Text { | ||||
|                          id: secondary | ||||
|                          //only shows secondary title if there's no badge | ||||
|                          visible: (badgeContent == "icon" || badgeContent == "number" )? false : true | ||||
|                          font.family: sourceSansPro.name  | ||||
|                          font.weight: Font.Light | ||||
|                          anchors { | ||||
| @ -730,18 +733,14 @@ ApplicationWindow { | ||||
|                  Rectangle { | ||||
|                      height: 19 | ||||
|                      color: "#00ff00" | ||||
|                      visible: (menuApps.children.length > 0) | ||||
| 
 | ||||
|                      Text { | ||||
|                          text: "APPS" | ||||
|                          font.family: sourceSansPro.name  | ||||
|                          font.weight: Font.Regular | ||||
|                          anchors.fill: parent | ||||
|                          anchors.leftMargin: 16 | ||||
| 
 | ||||
|                          // anchors { | ||||
|                          //     left: parent.left | ||||
|                          //     top: parent.top | ||||
|                          //     leftMargin: 16 | ||||
|                          // } | ||||
|                          color: "#AAA0A0" | ||||
|                      } | ||||
|                  } | ||||
| @ -749,6 +748,8 @@ ApplicationWindow { | ||||
|                  ColumnLayout { | ||||
|                      id: menuApps | ||||
|                      spacing: 3 | ||||
| 
 | ||||
| 
 | ||||
|                      anchors { | ||||
|                          left: parent.left | ||||
|                          right: parent.right | ||||
| @ -775,7 +776,7 @@ ApplicationWindow { | ||||
| 
 | ||||
|                  ColumnLayout { | ||||
|                      id: menuLegacy | ||||
|                      visible: false | ||||
|                      visible: true | ||||
|                      spacing: 3 | ||||
|                      anchors { | ||||
|                          left: parent.left | ||||
|  | ||||
| @ -19,20 +19,9 @@ Rectangle { | ||||
|             id: lastBlockLabel | ||||
|             objectName: "lastBlockLabel" | ||||
|             text: "---" | ||||
| 	    onTextChanged: { | ||||
| 		//menuItem.secondaryTitle = text | ||||
| 	    } | ||||
|         } | ||||
| 
 | ||||
|         Label { | ||||
|             objectName: "miningLabel" | ||||
|             visible: false | ||||
|             font.pixelSize: 10 | ||||
|             anchors.right: lastBlockLabel.left | ||||
|             anchors.rightMargin: 5 | ||||
| 	    onTextChanged: { | ||||
| 		menuItem.secondaryTitle = text | ||||
| 	    } | ||||
| 	   	 	onTextChanged: { | ||||
| 			//menuItem.secondaryTitle = text | ||||
| 	    	} | ||||
|         } | ||||
| 
 | ||||
| 	ColumnLayout { | ||||
|  | ||||
							
								
								
									
										163
									
								
								cmd/mist/assets/qml/views/network.qml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								cmd/mist/assets/qml/views/network.qml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,163 @@ | ||||
| import QtQuick 2.0 | ||||
| import QtQuick.Controls 1.0; | ||||
| import QtQuick.Controls.Styles 1.0 | ||||
| import QtQuick.Layouts 1.0; | ||||
| import QtWebEngine 1.0 | ||||
| import QtWebEngine.experimental 1.0 | ||||
| import QtQuick.Window 2.0; | ||||
| import Ethereum 1.0 | ||||
| import Qt.WebSockets 1.0 | ||||
| //import "qwebchannel.js" as WebChannel | ||||
| 	 | ||||
| 
 | ||||
| 
 | ||||
| Rectangle { | ||||
| 	id: window | ||||
| 	anchors.fill: parent | ||||
| 	color: "#00000000" | ||||
| 
 | ||||
| 	property var title: "Network" | ||||
| 	property var iconSource: "../mining-icon.png" | ||||
| 	property var menuItem | ||||
| 	property var hideUrl: true | ||||
| 
 | ||||
| 	property alias url: webview.url | ||||
| 	property alias windowTitle: webview.title | ||||
| 	property alias webView: webview | ||||
| 
 | ||||
| 	property var cleanPath: false | ||||
| 	property var open: function(url) { | ||||
| 		if(!window.cleanPath) { | ||||
| 			var uri = url; | ||||
| 			if(!/.*\:\/\/.*/.test(uri)) { | ||||
| 				uri = "http://" + uri; | ||||
| 			} | ||||
| 
 | ||||
| 			var reg = /(^https?\:\/\/(?:www\.)?)([a-zA-Z0-9_\-]*\.eth)(.*)/ | ||||
| 
 | ||||
| 			if(reg.test(uri)) { | ||||
| 				uri.replace(reg, function(match, pre, domain, path) { | ||||
| 					uri = pre; | ||||
| 
 | ||||
| 					var lookup = eth.lookupDomain(domain.substring(0, domain.length - 4)); | ||||
| 					var ip = []; | ||||
| 					for(var i = 0, l = lookup.length; i < l; i++) { | ||||
| 						ip.push(lookup.charCodeAt(i)) | ||||
| 					} | ||||
| 
 | ||||
| 					if(ip.length != 0) { | ||||
| 						uri += lookup; | ||||
| 					} else { | ||||
| 						uri += domain; | ||||
| 					} | ||||
| 
 | ||||
| 					uri += path; | ||||
| 				}); | ||||
| 			} | ||||
| 
 | ||||
| 			window.cleanPath = true; | ||||
| 
 | ||||
| 			webview.url = uri; | ||||
| 
 | ||||
| 			//uriNav.text = uri.text.replace(/(^https?\:\/\/(?:www\.)?)([a-zA-Z0-9_\-]*\.\w{2,3})(.*)/, "$1$2<span style='color:#CCC'>$3</span>"); | ||||
| 			uriNav.text = uri; | ||||
| 
 | ||||
| 		} else { | ||||
| 			// Prevent inf loop. | ||||
| 			window.cleanPath = false; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	Label { | ||||
|         objectName: "miningLabel" | ||||
|         visible: false | ||||
|         font.pixelSize: 10 | ||||
|         anchors.right: lastBlockLabel.left | ||||
|         anchors.rightMargin: 5 | ||||
|     	onTextChanged: { | ||||
| 			menuItem.secondaryTitle =  eth.miner().mining()? eth.miner().hashRate() + " Khash"  : "" | ||||
|     	} | ||||
|     } | ||||
| 
 | ||||
| 	Item { | ||||
| 		objectName: "root" | ||||
| 		id: root | ||||
| 		anchors.fill: parent | ||||
| 		state: "inspectorShown" | ||||
| 
 | ||||
| 		Timer { | ||||
| 	         interval: 1000; running: true; repeat: true | ||||
| 	         onTriggered: { | ||||
| 	         	webview.runJavaScript("Miner.mining", function(miningSliderValue) {   | ||||
| 
 | ||||
| 	         			// Check if it's mining and set it accordingly       				 | ||||
|          				if (miningSliderValue > 0 && !eth.miner().mining()) { | ||||
| 							eth.setGasPrice("10000000000000"); | ||||
| 							 | ||||
| 	         				eth.miner().start(); | ||||
| 	         			} else if (miningSliderValue == 0 && eth.miner().mining()) { | ||||
| 	         				eth.miner().stop(); | ||||
| 	         			} else if (eth.miner().mining()) { | ||||
| 	         				 | ||||
| 	         				webview.runJavaScript('console.log(localStorage.timeSpent); Miner.timeSpentMining++; Miner.hashrate = ' + eth.miner().hashRate() ); | ||||
| 
 | ||||
| 
 | ||||
| 	         			} else if (miningSliderValue == "undefined") { | ||||
| 	         				 | ||||
| 	         				webview.runJavaScript('Miner.mining = 0' ); | ||||
| 	         				 | ||||
| 	         			}					 | ||||
| 				}); | ||||
| 
 | ||||
| 	         } | ||||
| 	    } | ||||
| 
 | ||||
| 		WebEngineView { | ||||
| 			objectName: "webView" | ||||
| 			id: webview | ||||
| 			anchors.fill: parent | ||||
| 
 | ||||
| 			url: "http://localhost:3000/" | ||||
| 
 | ||||
| 			experimental.settings.javascriptCanAccessClipboard: true | ||||
| 
 | ||||
| 
 | ||||
| 			onJavaScriptConsoleMessage: { | ||||
| 				console.log(sourceID + ":" + lineNumber + ":" + JSON.stringify(message)); | ||||
| 			} | ||||
| 
 | ||||
| 			onLoadingChanged: { | ||||
| 				if (loadRequest.status == WebEngineView.LoadSucceededStatus) { | ||||
|                     webview.runJavaScript(eth.readFile("mist.js")); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		WebEngineView { | ||||
| 			id: inspector | ||||
| 			visible: false | ||||
| 			z:10 | ||||
| 			anchors { | ||||
| 				left: root.left | ||||
| 				right: root.right | ||||
| 				top: root.top | ||||
| 				bottom: root.bottom | ||||
| 			} | ||||
| 
 | ||||
| 		} | ||||
| 
 | ||||
| 		states: [ | ||||
| 			State { | ||||
| 				name: "inspectorShown" | ||||
| 				PropertyChanges { | ||||
| 					target: inspector | ||||
| 				} | ||||
| 			} | ||||
| 		] | ||||
| 	} | ||||
| } | ||||
| @ -419,8 +419,7 @@ func (gui *Gui) update() { | ||||
| 		case <-generalUpdateTicker.C: | ||||
| 			statusText := "#" + gui.eth.ChainManager().CurrentBlock().Number().String() | ||||
| 			lastBlockLabel.Set("text", statusText) | ||||
| 			miningLabel.Set("text", "Mining @ "+strconv.FormatInt(gui.uiLib.Miner().HashRate(), 10)+"/Khash") | ||||
| 
 | ||||
| 			//miningLabel.Set("text", strconv.FormatInt(gui.uiLib.Miner().HashRate(), 10))
 | ||||
| 		case <-statsUpdateTicker.C: | ||||
| 			gui.setStatsPane() | ||||
| 		} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user