1
0
mirror of https://shylinux.com/x/ContextOS synced 2025-04-26 01:04:06 +08:00
ContextOS/usr/travel.html
2018-05-24 15:12:33 +08:00

263 lines
5.8 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;
}
code {
font-size:14px;
}
.result {
background-color:black;
color:white;
padding:10px;
margin:0px;
}
</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>
{{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>
<pre class="result"><code id="result">
</code></pre>
</fieldset>
{{end}}
{{define "context"}}
<fieldset><legend>context</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="/travel?dir={{index $meta "module" $i}}">{{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>
function Cookie(name, value) {
if (value == undefined) {
var pattern = new RegExp(name+"=([^;]*);?");
var result = pattern.exec(document.cookie);
if (result && result.length > 0) {
return result[1];
}
return "";
}
document.cookie = name+"="+value;
return Cookie(name);
}
function Search(name) {
var pattern = new RegExp(name+"=([^&#]*)");
var result = pattern.exec(location.search);
if (result && result.length > 0) {
return result[1];
}
return "";
}
function POST(url, form, cb) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
switch (xhr.readyState) {
case 4:
switch (xhr.status) {
case 200:
var msg = JSON.parse(xhr.responseText);
console.log(msg)
typeof cb == "function" && cb(msg)
}
break;
}
}
xhr.open("POST", url);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
if (!("dir" in form)) {
form = form || {}
form["dir"] = Search("dir")
}
var args = [];
for (k in form) {
args.push(k+"="+encodeURIComponent(form[k]));
}
var arg = args.join("&");
console.log(url)
console.log(arg)
xhr.send(arg);
}
function Refresh() {
location.assign(location.href);
}
function Config(event, name) {
if (event.keyCode == 13) {
POST("", {ccc:"config", name:name, value:event.currentTarget.value}, function(msg) {Refresh()})
}
}
function Result(msg) {
var result = document.getElementById("result");
result.innerHTML = msg.result.join("");
}
function Command(event, name) {
if (event.keyCode == 13) {
var direct = document.getElementById("direct");
if (name) {
direct.value = name;
POST("", {ccc:"command", name:name, value:event.currentTarget.value}, Result)
} else {
POST("", {ccc:"command", name: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;
POST("", {ccc:"command", name:name, value:value||""}, Result)
return false;
}
function list(what) {
Cookie("list", what);
Cookie("order", Cookie("order")*1 + 1);
location.assign(location.href);
}
</script>
</body>
{{end}}