|
5 | 5 |
|
6 | 6 | <div class="card" style="width:1000px"> |
7 | 7 | <p> |
8 | | - Python-expressions here: |
| 8 | + |
9 | 9 | </p> |
10 | 10 | <form name="console" onSubmit="return handleIt()"> |
11 | 11 |
|
12 | 12 | <div style="display: flex;"> |
13 | | - <span>Code:</span> |
| 13 | + <span>Python-expressions here:</span> |
| 14 | + <tool-tip width="500px"> |
| 15 | + <h4 slot="title">How to use the Console</h4> |
| 16 | + <span slot="paragraph"> |
| 17 | + Try these things: |
| 18 | + <b>'help'</b> will give you a list of commands and objects available<br> |
| 19 | + Use a trailing '.' to get available methods and propeties, e.g. try: <b>'app.specter.'</b> <br> |
| 20 | + The command <b>'run'</b> can execute python scripts, e.g., run('myscript.py') |
| 21 | + </span> |
| 22 | + </tool-tip> |
14 | 23 | </div> |
15 | | - <p><input type="text" id="msgBody" name="msgBody" value="app.specter"></p> |
| 24 | + <input type="text" id="msgBody" name="msgBody" value="app.specter."> |
| 25 | + |
16 | 26 |
|
17 | 27 | <br><br> |
18 | 28 | <input name="Submit" class="btn" type="submit" value="Submit" /> |
19 | 29 | </form> |
| 30 | + you can also do that in any javascript.console with: |
| 31 | + <pre> |
| 32 | + await pythonCommand("app.specter") |
| 33 | + </pre> |
| 34 | + Some usefull idioms: |
| 35 | + <pre> |
| 36 | + list(flask_login.current_user.wallet_manager.wallets) |
| 37 | + </pre> |
20 | 38 |
|
21 | 39 | <p> |
22 | 40 | Output |
23 | 41 | </p> |
24 | | - <pre> |
25 | | - <div id="output"></div> |
26 | | - </pre> |
| 42 | + <div id="start"> |
| 43 | + |
| 44 | + </div> |
27 | 45 | </div> |
28 | 46 |
|
29 | 47 |
|
|
32 | 50 |
|
33 | 51 | {% block scripts %} |
34 | 52 | <script type="text/javascript"> |
| 53 | + var counter = 0 |
35 | 54 | function handleIt() { |
36 | | - var msgBody = document.getElementById("msgBody").value; |
37 | | - a = pythonCommand(msgBody).then((data) => { |
38 | | - document.getElementById("output").append(data) |
39 | | - document.getElementById("output").append("\n") |
| 55 | + start = document.getElementById("start") |
| 56 | + |
| 57 | +
|
| 58 | + var command = document.getElementById("msgBody").value; |
| 59 | + console.log(msgBody) |
| 60 | +
|
| 61 | +
|
| 62 | + a = pythonCommand(command).then((result) => { |
| 63 | + var pre = document.createElement("pre"); |
| 64 | + pre.append(counter + " > " + command + "\n") |
| 65 | + if (command.endsWith(".") && (! (typeof(result) == "string"))) { |
| 66 | + start.insertBefore(pre,start.children[0]) |
| 67 | + |
| 68 | + var varHider = document.createElement("input"); |
| 69 | + varHider.type = "button" |
| 70 | + varHider.value="vars" |
| 71 | + start.insertBefore(varHider,start.children[1]) |
| 72 | + var vars = document.createElement("pre"); |
| 73 | + vars.id = "var" + counter |
| 74 | + varHider.onclick = function() { |
| 75 | + if (document.getElementById(vars.id ).style.display=='none') { |
| 76 | + document.getElementById(vars.id ).style.display='block' |
| 77 | + } else { |
| 78 | + document.getElementById(vars.id ).style.display='none' |
| 79 | + } |
| 80 | + |
| 81 | + } |
| 82 | + vars.style.display='none' |
| 83 | + console.log(result.vars) |
| 84 | + for (const key in result.vars) { |
| 85 | + vars.appendChild(document.createTextNode((`${key}: ${result.vars[key]}\n`))) |
| 86 | + } |
| 87 | + start.insertBefore(vars,start.children[2]) |
| 88 | +
|
| 89 | + var dirHider = document.createElement("input"); |
| 90 | + dirHider.type = "button" |
| 91 | + dirHider.value="dirs" |
| 92 | + start.insertBefore(dirHider,start.children[3]) |
| 93 | + var dirs = document.createElement("pre"); |
| 94 | + dirs.id = "dirs" + counter |
| 95 | + dirHider.onclick = function() { |
| 96 | + if (document.getElementById(dirs.id ).style.display=='none') { |
| 97 | + document.getElementById(dirs.id ).style.display='block' |
| 98 | + } else { |
| 99 | + document.getElementById(dirs.id ).style.display='none' |
| 100 | + } |
| 101 | + |
| 102 | + } |
| 103 | + dirs.style.display='none' |
| 104 | + console.log(result.dirs) |
| 105 | + result.dir.forEach((elem) => { |
| 106 | + dirs.appendChild(document.createTextNode((`${elem}\n`))) |
| 107 | + }); |
| 108 | + start.insertBefore(dirs,start.children[4]) |
| 109 | +
|
| 110 | +
|
| 111 | + } else { |
| 112 | + if (result == "") { |
| 113 | + result = "(empty string)" |
| 114 | + } |
| 115 | + pre.append(" " + result.toString() + "\n") |
| 116 | + start.insertBefore(pre,start.children[0]) |
| 117 | + } |
| 118 | +
|
40 | 119 | }) |
41 | | - console.log(a) |
| 120 | + counter++ |
42 | 121 | return false |
43 | 122 | } |
44 | 123 |
|
|
0 commit comments