diff options
-rw-r--r-- | ethereal/assets/ethereum.js | 28 | ||||
-rw-r--r-- | ethereal/assets/qml/webapp.qml | 158 | ||||
-rw-r--r-- | ethereal/assets/test.html | 37 |
3 files changed, 139 insertions, 84 deletions
diff --git a/ethereal/assets/ethereum.js b/ethereal/assets/ethereum.js index b8908913d..173eaff22 100644 --- a/ethereal/assets/ethereum.js +++ b/ethereal/assets/ethereum.js @@ -12,17 +12,35 @@ function postData(data, cb) { window.eth = { prototype: Object(), - send: function(cb) { - document.getElementById("out").innerHTML = "clicked"; - postData({message: "Hello world"}, cb); - } + // Retrieve block + // + // Either supply a number or a string. Type is determent for the lookup method + // string - Retrieves the block by looking up the hash + // number - Retrieves the block by looking up the block number + getBlock: function(numberOrHash, cb) { + var func; + if(typeof numberOrHash == "string") { + func = "getBlockByHash" + } else { + func = "getBlockByNumber" + } + postData({call: func, args: [numberOrHash]}, cb) + }, + + // Create transaction + // + // Creates a transaction with the current account + // If no recipient is set, the Ethereum API will see it as a contract creation + createTx: function(recipient, value, gas, gasPrice, data, cb) { + postData({call: "createTx", args: [recipient, value, gas, gasPrice, data]}, cb) + }, } window.eth._callbacks = {} function debug(/**/) { var args = arguments; var msg = "" - for(var i=0; i<args.length; i++){ + for(var i = 0; i < args.length; i++){ if(typeof args[i] == "object") { msg += " " + JSON.stringify(args[i]) } else { diff --git a/ethereal/assets/qml/webapp.qml b/ethereal/assets/qml/webapp.qml index 4695903e8..496beb65a 100644 --- a/ethereal/assets/qml/webapp.qml +++ b/ethereal/assets/qml/webapp.qml @@ -7,79 +7,103 @@ import QtQuick.Window 2.1; import Ethereum 1.0 ApplicationWindow { - id: window - title: "Webapp" - width: 900 - height: 600 - minimumHeight: 300 - property alias url: webview.url + id: window + title: "Ethereum" + width: 900 + height: 600 + minimumHeight: 300 - Item { - id: root - anchors.fill: parent - state: "inspectorShown" + property alias url: webview.url + property alias webView: webview - WebView { - id: webview - anchors { - left: parent.left - right: parent.right - bottom: sizeGrip.top - top: parent.top - } - onTitleChanged: { window.title = title } - experimental.preferences.javascriptEnabled: true - experimental.preferences.navigatorQtObjectEnabled: true - experimental.preferences.developerExtrasEnabled: true - experimental.userScripts: [ui.assetPath("ethereum.js")] - experimental.onMessageReceived: { - console.log("[onMessageReceived]: ", message.data) - var data = JSON.parse(message.data) + Item { + objectName: "root" + id: root + anchors.fill: parent + state: "inspectorShown" - webview.experimental.postMessage(JSON.stringify({data: {message: data.message}, _seed: data._seed})) - } - } + WebView { + objectName: "webView" + id: webview + anchors { + left: parent.left + right: parent.right + bottom: sizeGrip.top + top: parent.top + } - Rectangle { - id: sizeGrip - color: "gray" - visible: true - height: 10 - anchors { - left: root.left - right: root.right - } - y: Math.round(root.height * 2 / 3) + onTitleChanged: { window.title = title } + experimental.preferences.javascriptEnabled: true + experimental.preferences.navigatorQtObjectEnabled: true + experimental.preferences.developerExtrasEnabled: true + experimental.userScripts: [ui.assetPath("ethereum.js")] + experimental.onMessageReceived: { + console.log("[onMessageReceived]: ", message.data) + var data = JSON.parse(message.data) - MouseArea { - anchors.fill: parent - drag.target: sizeGrip - drag.minimumY: 0 - drag.maximumY: root.height - drag.axis: Drag.YAxis - } - } + switch(data.call) { + case "getBlockByNumber": + var block = eth.getBlock("b9b56cf6f907fbee21db0cd7cbc0e6fea2fe29503a3943e275c5e467d649cb06") + postData(data._seed, block) + break + case "getBlockByHash": + var block = eth.getBlock("b9b56cf6f907fbee21db0cd7cbc0e6fea2fe29503a3943e275c5e467d649cb06") + postData(data._seed, block) + break + case "createTx": + if(data.args.length < 5) { + postData(data._seed, null) + } else { + var tx = eth.createTx(data.args[0], data.args[1],data.args[2],data.args[3],data.args[4]) + postData(data._seed, tx) + } + } + } + function postData(seed, data) { + webview.experimental.postMessage(JSON.stringify({data: data, _seed: seed})) + } + } - WebView { - id: inspector - visible: true - url: webview.experimental.remoteInspectorUrl - anchors { - left: root.left - right: root.right - top: sizeGrip.bottom - bottom: root.bottom - } - } + Rectangle { + id: sizeGrip + color: "gray" + visible: true + height: 10 + anchors { + left: root.left + right: root.right + } + y: Math.round(root.height * 2 / 3) - states: [ - State { - name: "inspectorShown" - PropertyChanges { - target: inspector - url: webview.experimental.remoteInspectorUrl + MouseArea { + anchors.fill: parent + drag.target: sizeGrip + drag.minimumY: 0 + drag.maximumY: root.height + drag.axis: Drag.YAxis + } + } + + WebView { + id: inspector + visible: true + url: webview.experimental.remoteInspectorUrl + anchors { + left: root.left + right: root.right + top: sizeGrip.bottom + bottom: root.bottom + } + } + + states: [ + State { + name: "inspectorShown" + PropertyChanges { + target: inspector + url: webview.experimental.remoteInspectorUrl + } + } + ] } - } - ] - } } diff --git a/ethereal/assets/test.html b/ethereal/assets/test.html index bd8711d38..eb55bf667 100644 --- a/ethereal/assets/test.html +++ b/ethereal/assets/test.html @@ -1,27 +1,40 @@ <html> <head> -<title>Epic Works (TM)</title> +<title>jeffcoin</title> <body> -<h1>It just works!</h1> +<h1>Jeff Coin</h1> -<p>Play with me...</p> +<img src="file:///Users/jeffrey/Desktop/iconnew.png"> -<button onclick="test();">test</button> -<div id="out"></div> -<div id="in"></div> -<div id="debug"></div> +<div id="transactions"> + <input id="addr" type="text" placeholder="Receiver address"></input><br> + <input id="amount" type="text" placeholder="Amount"></input><br> + <button onclick="createTransaction();">Send Tx</button> +</div> + +<div><button onclick="test();">Tests</button></div> <script type="text/javascript"> -function test() { - eth.send(function(data) { - debug(data) - document.getElementById("in").innerHTML ="and the other way around " + data.message; +function createTransaction() { + debug("test") + var addr = document.querySelector("#addr").value; + var amount = document.querySelector("#amount").value; + + eth.createTx(addr, amount, "100", "250", "", function(tx) { + debug("received tx hash:", tx) }) } - +// Any test related actions here please +function tests() { + eth.getBlock(1, function(block) { + debug("queried block:", block) + }) +} </script> +<div id="debug" style="border: 1px solid block"></div> + </body> </html> |