1
0
mirror of https://shylinux.com/x/ContextOS synced 2025-04-26 09:14:06 +08:00
ContextOS/usr/template/travel.html
2018-07-09 09:30:32 +08:00

439 lines
10 KiB
HTML

{{define "head"}}
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<style>
legend {
font-size:16px;
font-weight:bold;
}
th {
cursor:pointer;
background-color:lightgray;
}
.name {
padding-left:10px;
text-align:left;
}
.help {
padding-left:10px;
text-align:left;
}
.status {
padding-left:10px;
text-align:left;
}
.stream {
padding-left:10px;
text-align:left;
}
.result {
background-color:black;
color:white;
padding:10px;
margin:0px;
}
code {
font-size:14px;
}
</style>
</head>
<body>
{{end}}
{{define "cache"}}
<fieldset><legend>cache</legend>
<table>
<colgroup>{{range .append}}<col class="{{.}}">{{end}}</colgroup>
<tr>{{range .append}}<th class="{{.}}" onclick="list('{{.}}')">{{.}}</th>{{end}}</tr>
{{$l := index .append|len}}
{{if gt $l 0}}
{{$meta := .}} {{$first := index .append 0}}
{{range $i, $k := index . $first}}
<tr>
{{range $key := index $meta "append"}}
<td class="{{$key}}">
<code>{{index $meta $key $i}}</code>
</td>
{{end}}
</tr>
{{end}}
{{end}}
</table>
</fieldset>
{{end}}
{{define "config"}}
<fieldset><legend>config</legend>
<table>
<colgroup>{{range .append}}<col class="{{.}}">{{end}}</colgroup>
<tr>{{range .append}}<th class="{{.}}" onclick="list('{{.}}')">{{.}}</th>{{end}}</tr>
{{$l := index .append|len}}
{{if gt $l 0}}
{{$meta := .}} {{$first := index .append 0}}
{{range $i, $k := index . $first}}
<tr>{{$config := index $meta "key" $i}}
{{range $key := index $meta "append"}}
{{if eq $key "input"}}
<td class="{{$key}}">
<input type="text" name="{{$config}}" onkeydown="return Config(event, '{{$config}}')">
<code>{{index $meta $key $i}}</code>
</td>
{{else}}
<td class="{{$key}}">
<code>{{index $meta $key $i}}</code>
</td>
{{end}}
{{end}}
</tr>
{{end}}
{{end}}
</table>
</fieldset>
<script>
function Config(event, name) {
if (event.keyCode == 13) {
ctx.Conf(name, event.currentTarget.value, function(msg) {ctx.Refresh()});
}
}
</script>
{{end}}
{{define "command2"}}
{{$meta := .}}
<fieldset><legend>command</legend>
<div>
{{$l := index .append|len}}
{{if gt $l 0}}
{{$first := index .append 0}}
{{range $i, $k := index . $first}}
{{$command := index $meta "key" $i}}
<div>
<div>
<code>
{{$command}}:
<a href="" onclick="return shell(event, '{{$command}}')">{{index $meta "name" $i}}</a>
{{index $meta "help" $i}}
</code>
</div>
<div id="argument_{{$command}}">
<button onclick="return Argument(event, 'add', '{{$command}}')">add</button>
<button onclick="return Argument(event, 'del', '{{$command}}')">del</button>
</div>
<pre class="result" hidden><code id="result_{{$command}}"></code></pre>
<table id="append_{{$command}}" hidden></table>
</div>
{{end}}
{{end}}
</div>
</fieldset>
<fieldset><legend><input id="direct" type="text" onkeydown="return shell(event)"></legend>
<pre class="result"><code id="result2"></code></pre>
</fieldset>
<script>
function Result(msg, command) {
var result = document.getElementById("result"+command);
result.innerHTML = msg.result.join("");
var append = document.getElementById("append"+command);
var tr = document.createElement("tr");
append.appendChild(tr)
for (var k in msg.append) {
var th = document.createElement("th");
th.innerHTML = k;
}
}
function show(msg, command) {
console.log(msg);
if (msg.result) {
var result = document.getElementById("result_"+command);
if (!result) {
var result = document.getElementById("result2");
}
result.innerHTML = msg.result.join("");
}
var append = document.getElementById("append_"+command);
append.innerHTML = "";
if (msg.append) {
append.hidden = false;
var tr = document.createElement("tr");
append.appendChild(tr)
for (var k in msg.append) {
var th = document.createElement("th");
th.innerHTML = msg.append[k];
tr.appendChild(th)
}
for (var i in msg[msg.append[0]]) {
var tr = document.createElement("tr");
append.appendChild(tr)
for (var k in msg.append) {
var td = document.createElement("td");
td.innerHTML = msg[msg.append[k]][i]
tr.appendChild(td)
}
}
}
}
function Argument(event, action, command) {
var argument = document.getElementById("argument_"+command);
switch (action) {
case "add":
var arg = document.createElement("input");
arg.type = "text";
argument.appendChild(arg);
break;
case "del":
var arg = argument.lastElementChild;
if (arg.type == "text") {
argument.removeChild(arg);
}
break;
}
}
function shell(event, command) {
console.log(event);
switch (event.type) {
case "keydown":
if (event.key != "Enter") {
return true;
}
command = event.target.value
// no break
case "click":
var detail = [];
var result = document.getElementById("result_"+command);
var append = document.getElementById("append_"+command);
if (!result) {
var result = document.getElementById("result2");
} else {
var div = document.getElementById("argument_"+command);
var input = div.getElementsByTagName("input");
for (var i in input) {
if (input[i].value) {
detail.push(input[i].value);
}
}
result = result.parentElement;
result.hidden = !result.hidden;
append.hidden = result.hidden;
}
if (!result.hidden) {
ctx.Cmd(command, detail, function(msg) {
show(msg, command);
if (!msg.result) {
}
});
}
return false;
}
return true;
}
function Command(event, name) {
if (event.keyCode == 13) {
var direct = document.getElementById("direct");
if (name) {
direct.value = name;
ctx.Cmd(name, event.currentTarget.value, Result);
} else {
ctx.Cmd(event.currentTarget.value, "", Result);
}
}
}
function Direct(event, name, value) {
debugger;
console.log(event)
if (!name) {
name = event.currentTarget.value;
}
var direct = document.getElementById("direct");
direct.value = name;
ctx.Cmd(name, value, function(msg){
Result(msg, name);
});
return false;
}
</script>
{{end}}
{{define "command"}}
<fieldset><legend>command</legend>
<table>
<colgroup>{{range .append}}<col class="{{.}}">{{end}}</colgroup>
<tr>{{range .append}}<th class="{{.}}" onclick="list('{{.}}')">{{.}}</th>{{end}}</tr>
{{$l := index .append|len}}
{{if gt $l 0}}
{{$meta := .}} {{$first := index .append 0}}
{{range $i, $k := index . $first}}
<tr>{{$command := index $meta "key" $i}}
{{range $key := index $meta "append"}}
<td class="{{$key}}">
{{if eq $key "input"}}
<input type="text" name="{{$command}}" onkeydown="return Command(event, '{{$command}}')">
{{else if eq $key "key"}}
<code><a href="" onclick="return Direct(event, '{{$command}}')">{{index $meta $key $i}}</a></code>
{{else}}
<code>{{index $meta $key $i}}</code>
{{end}}
</td>
{{end}}
</tr>
{{end}}
{{end}}
</table>
</fieldset>
<fieldset><legend><input id="direct" type="text" onkeydown="return Command(event)"></legend>
<table id="append"></table>
<pre class="result"><code id="result"></code></pre>
</fieldset>
<script>
function Result(msg) {
var result = document.getElementById("result");
result.innerHTML = msg.result.join("");
var append = document.getElementById("append");
var tr = document.createElement("tr");
append.appendChild(tr)
for (var k in msg.append) {
var th = document.createElement("th");
th.innerHTML = k;
}
}
function Command(event, name) {
if (event.keyCode == 13) {
var direct = document.getElementById("direct");
if (name) {
direct.value = name;
ctx.Cmd(name, event.currentTarget.value, Result);
} else {
ctx.Cmd(event.currentTarget.value, "", Result);
}
}
}
function Direct(event, name, value) {
console.log(event)
if (!name) {
name = event.currentTarget.value;
}
var direct = document.getElementById("direct");
direct.value = name;
ctx.Cmd(name, value, Result);
return false;
}
</script>
{{end}}
{{define "module"}}
<fieldset><legend><input type="text" id="module" value="{{index .current_module 0}}" onkeydown="return Change(event, 'module')"></legend>
<table>
<colgroup>{{range .append}}<col class="{{.}}">{{end}}</colgroup>
<tr>{{range .append}}<th class="{{.}}" onclick="list('{{.}}')">{{.}}</th>{{end}}</tr>
{{$l := index .append|len}}
{{if gt $l 0}}
{{$meta := .}} {{$first := index .append 0}}
{{range $i, $k := index . $first}}
<tr>
{{range $key := index $meta "append"}}
{{if eq $key "name"}}
<td class="{{$key}}">
<code><a href="" onclick="ctx.Search('module', '{{index $meta "module" $i}}'); return false">{{index $meta $key $i}}</a></code>
</td>
{{else}}
<td class="{{$key}}">
<code>{{index $meta $key $i}}</code>
</td>
{{end}}
{{end}}
</tr>
{{end}}
{{end}}
</table>
</fieldset>
{{end}}
{{define "domain"}}
<fieldset><legend><input type="text" id="domain" value="{{index . "current_domain" 0}}" onkeydown="return Change(event, 'domain')"></legend>
<table>
<colgroup>{{range .append}}<col class="{{.}}">{{end}}</colgroup>
<tr>{{range .append}}<th class="{{.}}" onclick="list('{{.}}')">{{.}}</th>{{end}}</tr>
{{$l := index .append|len}}
{{if gt $l 0}}
{{$meta := .}} {{$first := index .append 0}}
{{range $i, $k := index . $first}}
<tr>
{{range $key := index $meta "append"}}
{{if eq $key "name"}}
<td class="{{$key}}">
<code><a href="" onclick="ctx.Search('domain', '{{index $meta "domain" $i}}'); return false">{{index $meta $key $i}}</a></code>
</td>
{{else}}
<td class="{{$key}}">
<code>{{index $meta $key $i}}</code>
</td>
{{end}}
{{end}}
</tr>
{{end}}
{{end}}
</table>
</fieldset>
{{end}}
{{define "tail"}}
<script src="library/context.js"></script>
<script>
function Change(event, key) {
if (event.keyCode == 13) {
ctx.Search(key, event.target.value);
}
}
function list(what) {
ctx.Cookie("list", what);
ctx.Cookie("order", ctx.Cookie("order")*1 + 1);
location.assign(location.href);
}
</script>
</body>
{{end}}
{{define "main"}}
{{$msg := .}}
{{$meta := .Meta}}
{{$sess := $msg.Sessions}}
{{range .Meta.tmpl}}
{{if eq . "login"}}
{{template "login" $meta}}
{{else if eq . "userinfo"}}
{{template "userinfo" $msg}}
{{else if eq . "share"}}
{{template "share" $sess.share}}
{{else if eq . "cache"}}
{{template "cache" $sess.cache.Meta}}
{{else if eq . "config"}}
{{template "config" $sess.config.Meta}}
{{else if eq . "command"}}
{{template "command" $sess.command.Meta}}
{{template "command2" $sess.command.Meta}}
{{else if eq . "module"}}
{{template "module" $sess.module.Meta}}
{{else if eq . "domain"}}
{{template "domain" $sess.domain.Meta}}
{{end}}
{{end}}
{{end}}