forked from x/ContextOS
mac opt code.js
This commit is contained in:
parent
121f016ebd
commit
959a3c04d1
@ -145,9 +145,7 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
|||||||
"time_close": &ctx.Config{Name: "time_close(open/close)", Value: "open", Help: "时间区间"},
|
"time_close": &ctx.Config{Name: "time_close(open/close)", Value: "open", Help: "时间区间"},
|
||||||
|
|
||||||
"cmd_script": &ctx.Config{Name: "cmd_script", Value: map[string]interface{}{
|
"cmd_script": &ctx.Config{Name: "cmd_script", Value: map[string]interface{}{
|
||||||
"sh": "bash",
|
"sh": "bash", "shy": "source", "py": "python",
|
||||||
"py": "python",
|
|
||||||
"shy": "source",
|
|
||||||
}, Help: "系统命令超时"},
|
}, Help: "系统命令超时"},
|
||||||
|
|
||||||
"source_list": &ctx.Config{Name: "source_list", Value: []interface{}{}, Help: "系统命令超时"},
|
"source_list": &ctx.Config{Name: "source_list", Value: []interface{}{}, Help: "系统命令超时"},
|
||||||
@ -311,7 +309,7 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
|||||||
if msg.Cmd(detail); msg.Hand {
|
if msg.Cmd(detail); msg.Hand {
|
||||||
m.Cap("ps_target", msg.Cap("module"))
|
m.Cap("ps_target", msg.Cap("module"))
|
||||||
} else {
|
} else {
|
||||||
msg.Copy(m, "target").Detail(-1, "system")
|
msg.Copy(m, "target").Copy(m, "result").Detail(-1, "system")
|
||||||
msg.Cmd()
|
msg.Cmd()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,7 +334,8 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(rest) > 0 {
|
if len(rest) > 0 {
|
||||||
pipe := m.Spawn().Copy(msg, "option").Copy(msg, "append").Cmd("cmd", rest)
|
m.Log("fuck", "%v", msg.Meta)
|
||||||
|
pipe := m.Spawn().Copy(msg, "option").Copy(msg, "append").Copy(msg, "result").Cmd("cmd", rest)
|
||||||
|
|
||||||
msg.Set("result").Set("append")
|
msg.Set("result").Set("append")
|
||||||
msg.Copy(pipe, "result").Copy(pipe, "append")
|
msg.Copy(pipe, "result").Copy(pipe, "append")
|
||||||
@ -757,6 +756,14 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
|||||||
"cmd_active(true/false): 是否交互", "cmd_timeout: 命令超时", "cmd_env: 环境变量", "cmd_dir: 工作目录"},
|
"cmd_active(true/false): 是否交互", "cmd_timeout: 命令超时", "cmd_env: 环境变量", "cmd_dir: 工作目录"},
|
||||||
Form: map[string]int{"cmd_active": 1, "cmd_timeout": 1, "cmd_env": 2, "cmd_dir": 1, "cmd_error": 0},
|
Form: map[string]int{"cmd_active": 1, "cmd_timeout": 1, "cmd_env": 2, "cmd_dir": 1, "cmd_error": 0},
|
||||||
Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
|
if len(m.Meta["result"]) > 0 {
|
||||||
|
for _, v := range m.Meta["result"] {
|
||||||
|
if strings.TrimSpace(v) != "" {
|
||||||
|
arg = append(arg, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
conf := map[string]interface{}{}
|
conf := map[string]interface{}{}
|
||||||
if m.Confv("cmd_combine", arg[0]) != nil {
|
if m.Confv("cmd_combine", arg[0]) != nil {
|
||||||
conf = m.Confv("cmd_combine", arg[0]).(map[string]interface{})
|
conf = m.Confv("cmd_combine", arg[0]).(map[string]interface{})
|
||||||
|
@ -16,10 +16,5 @@ func sysinfo(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
|||||||
m.Append("blocks", kit.FmtSize(fs.Blocks*uint64(fs.Bsize)))
|
m.Append("blocks", kit.FmtSize(fs.Blocks*uint64(fs.Bsize)))
|
||||||
m.Append("bavail", kit.FmtSize(fs.Bavail*uint64(fs.Bsize)))
|
m.Append("bavail", kit.FmtSize(fs.Bavail*uint64(fs.Bsize)))
|
||||||
m.Append("bper", fmt.Sprintf("%d%%", fs.Bavail*100/fs.Blocks))
|
m.Append("bper", fmt.Sprintf("%d%%", fs.Bavail*100/fs.Blocks))
|
||||||
|
|
||||||
m.Append("files", fs.Files)
|
|
||||||
m.Append("ffree", fs.Ffree)
|
|
||||||
m.Append("fper", fmt.Sprintf("%d%%", fs.Ffree*100/fs.Files))
|
|
||||||
|
|
||||||
m.Table()
|
m.Table()
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path"
|
"path"
|
||||||
|
"regexp"
|
||||||
"runtime"
|
"runtime"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -72,7 +73,7 @@ func open(m *ctx.Message, name string, arg ...int) (string, *os.File, error) {
|
|||||||
f, e := os.OpenFile(name, flag, 0660)
|
f, e := os.OpenFile(name, flag, 0660)
|
||||||
return name, f, e
|
return name, f, e
|
||||||
}
|
}
|
||||||
func dir(m *ctx.Message, name string, level int, deep bool, trip int, fields []string) {
|
func dir(m *ctx.Message, name string, level int, deep bool, dir_type string, trip int, dir_reg *regexp.Regexp, fields []string, format string) {
|
||||||
back, e := os.Getwd()
|
back, e := os.Getwd()
|
||||||
m.Assert(e)
|
m.Assert(e)
|
||||||
os.Chdir(name)
|
os.Chdir(name)
|
||||||
@ -80,17 +81,16 @@ func dir(m *ctx.Message, name string, level int, deep bool, trip int, fields []s
|
|||||||
|
|
||||||
if fs, e := ioutil.ReadDir("."); m.Assert(e) {
|
if fs, e := ioutil.ReadDir("."); m.Assert(e) {
|
||||||
for _, f := range fs {
|
for _, f := range fs {
|
||||||
if f.Name()[0] == '.' {
|
if f.Name() == "." || f.Name() == ".." {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
f, _ := os.Stat(f.Name())
|
f, _ := os.Stat(f.Name())
|
||||||
if !(m.Confx("dir_type") == "file" && f.IsDir() ||
|
if !(dir_type == "file" && f.IsDir() || dir_type == "dir" && !f.IsDir()) && (dir_reg == nil || dir_reg.MatchString(f.Name())) {
|
||||||
m.Confx("dir_type") == "dir" && !f.IsDir()) {
|
|
||||||
for _, field := range fields {
|
for _, field := range fields {
|
||||||
switch field {
|
switch field {
|
||||||
case "time":
|
case "time":
|
||||||
m.Add("append", "time", f.ModTime().Format(m.Conf("time_format")))
|
m.Add("append", "time", f.ModTime().Format(format))
|
||||||
case "type":
|
case "type":
|
||||||
if m.Assert(e) && f.IsDir() {
|
if m.Assert(e) && f.IsDir() {
|
||||||
m.Add("append", "type", "dir")
|
m.Add("append", "type", "dir")
|
||||||
@ -156,7 +156,7 @@ func dir(m *ctx.Message, name string, level int, deep bool, trip int, fields []s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if f.IsDir() && deep {
|
if f.IsDir() && deep {
|
||||||
dir(m, f.Name(), level+1, deep, trip, fields)
|
dir(m, f.Name(), level+1, deep, dir_type, trip, dir_reg, fields, format)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1169,9 +1169,9 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
|
|||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
|
|
||||||
"dir": &ctx.Command{Name: "dir dir [dir_type both|file|dir] [dir_name name|tree|path|full] [dir_deep] fields...",
|
"dir": &ctx.Command{Name: "dir dir [dir_type both|file|dir] [dir_deep] fields...",
|
||||||
Help: "查看目录, dir: 目录名, dir_type: 文件类型, dir_name: 文件名类型, dir_deep: 递归查询, fields: 查询字段",
|
Help: "查看目录, dir: 目录名, dir_type: 文件类型, dir_deep: 递归查询, fields: 查询字段",
|
||||||
Form: map[string]int{"dir_type": 1, "dir_name": 1, "dir_deep": 0, "dir_sort": 2},
|
Form: map[string]int{"dir_reg": 1, "dir_type": 1, "dir_deep": 0, "dir_sort": 2},
|
||||||
Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
wd, e := os.Getwd()
|
wd, e := os.Getwd()
|
||||||
m.Assert(e)
|
m.Assert(e)
|
||||||
@ -1185,11 +1185,15 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
|
|||||||
dirs = path.Join(m.Option("dir_root"), dirs)
|
dirs = path.Join(m.Option("dir_root"), dirs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rg, e := regexp.Compile(m.Option("dir_reg"))
|
||||||
|
|
||||||
for _, v := range m.Confv("paths").([]interface{}) {
|
for _, v := range m.Confv("paths").([]interface{}) {
|
||||||
d := path.Join(v.(string), dirs)
|
d := path.Join(v.(string), dirs)
|
||||||
if s, e := os.Stat(d); e == nil {
|
if s, e := os.Stat(d); e == nil {
|
||||||
if s.IsDir() {
|
if s.IsDir() {
|
||||||
dir(m, d, 0, ctx.Right(m.Has("dir_deep")), trip, strings.Split(m.Confx("dir_fields", strings.Join(arg[1:], " ")), " "))
|
dir(m, d, 0, ctx.Right(m.Has("dir_deep")), m.Confx("dir_type"), trip, rg,
|
||||||
|
strings.Split(m.Confx("dir_fields", strings.Join(arg[1:], " ")), " "),
|
||||||
|
m.Conf("time_format"))
|
||||||
} else {
|
} else {
|
||||||
m.Append("directory", d)
|
m.Append("directory", d)
|
||||||
return
|
return
|
||||||
|
@ -282,7 +282,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
map[string]interface{}{"componet_name": "head", "template": "head"},
|
map[string]interface{}{"componet_name": "head", "template": "head"},
|
||||||
map[string]interface{}{"componet_name": "clipbaord", "componet_help": "clipbaord", "template": "clipboard"},
|
map[string]interface{}{"componet_name": "clipbaord", "componet_help": "clipbaord", "template": "clipboard"},
|
||||||
map[string]interface{}{"componet_name": "time", "componet_help": "time", "template": "componet",
|
map[string]interface{}{"componet_name": "time", "componet_help": "time", "template": "componet",
|
||||||
"context": "cli", "componet_cmd": "time", "arguments": []interface{}{"@string"},
|
"componet_ctx": "cli", "componet_cmd": "time", "arguments": []interface{}{"@string"},
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "text", "name": "time_format",
|
map[string]interface{}{"type": "text", "name": "time_format",
|
||||||
"label": "format", "value": "2006-01-02 15:04:05",
|
"label": "format", "value": "2006-01-02 15:04:05",
|
||||||
@ -615,7 +615,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
m.Add("append", "order", i)
|
m.Add("append", "order", i)
|
||||||
m.Add("append", "componet_name", value["componet_name"])
|
m.Add("append", "componet_name", value["componet_name"])
|
||||||
m.Add("append", "componet_help", value["componet_help"])
|
m.Add("append", "componet_help", value["componet_help"])
|
||||||
m.Add("append", "context", value["context"])
|
m.Add("append", "componet_ctx", value["componet_ctx"])
|
||||||
m.Add("append", "componet_cmd", value["componet_cmd"])
|
m.Add("append", "componet_cmd", value["componet_cmd"])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -626,7 +626,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
m.Add("append", "order", i)
|
m.Add("append", "order", i)
|
||||||
m.Add("append", "componet_name", value["componet_name"])
|
m.Add("append", "componet_name", value["componet_name"])
|
||||||
m.Add("append", "componet_help", value["componet_help"])
|
m.Add("append", "componet_help", value["componet_help"])
|
||||||
m.Add("append", "context", value["context"])
|
m.Add("append", "componet_ctx", value["componet_ctx"])
|
||||||
m.Add("append", "componet_cmd", value["componet_cmd"])
|
m.Add("append", "componet_cmd", value["componet_cmd"])
|
||||||
}
|
}
|
||||||
m.Table()
|
m.Table()
|
||||||
@ -644,7 +644,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
} else {
|
} else {
|
||||||
m.Confv("componet", []interface{}{arg[0], arg[1]}, map[string]interface{}{
|
m.Confv("componet", []interface{}{arg[0], arg[1]}, map[string]interface{}{
|
||||||
"componet_name": arg[2], "componet_help": arg[3],
|
"componet_name": arg[2], "componet_help": arg[3],
|
||||||
"context": m.Confx("componet_context", arg, 4),
|
"componet_ctx": m.Confx("componet_context", arg, 4),
|
||||||
"componet_cmd": m.Confx("componet_command", arg, 5),
|
"componet_cmd": m.Confx("componet_command", arg, 5),
|
||||||
})
|
})
|
||||||
break
|
break
|
||||||
@ -755,8 +755,8 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
}
|
}
|
||||||
|
|
||||||
context := m.Cap("module")
|
context := m.Cap("module")
|
||||||
if val["context"] != nil {
|
if val["componet_ctx"] != nil {
|
||||||
context = val["context"].(string)
|
context = val["componet_ctx"].(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
msg := m.Find(context)
|
msg := m.Find(context)
|
||||||
|
@ -24,7 +24,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
"login": []interface{}{
|
"login": []interface{}{
|
||||||
map[string]interface{}{"componet_name": "head", "template": "head"},
|
map[string]interface{}{"componet_name": "head", "template": "head"},
|
||||||
map[string]interface{}{"componet_name": "login", "componet_help": "login", "template": "componet",
|
map[string]interface{}{"componet_name": "login", "componet_help": "login", "template": "componet",
|
||||||
"context": "aaa", "componet_cmd": "login", "arguments": []interface{}{"@username", "@password"},
|
"componet_ctx": "aaa", "componet_cmd": "login", "arguments": []interface{}{"@username", "@password"},
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "text", "name": "username", "label": "username"},
|
map[string]interface{}{"type": "text", "name": "username", "label": "username"},
|
||||||
map[string]interface{}{"type": "password", "name": "password", "label": "password"},
|
map[string]interface{}{"type": "password", "name": "password", "label": "password"},
|
||||||
@ -37,7 +37,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
"index": []interface{}{
|
"index": []interface{}{
|
||||||
map[string]interface{}{"componet_name": "head", "template": "head"},
|
map[string]interface{}{"componet_name": "head", "template": "head"},
|
||||||
map[string]interface{}{"componet_name": "login", "componet_help": "login", "template": "componet",
|
map[string]interface{}{"componet_name": "login", "componet_help": "login", "template": "componet",
|
||||||
"context": "aaa", "componet_cmd": "login", "arguments": []interface{}{"@username", "@password"},
|
"componet_ctx": "aaa", "componet_cmd": "login", "arguments": []interface{}{"@username", "@password"},
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "text", "name": "username", "label": "username"},
|
map[string]interface{}{"type": "text", "name": "username", "label": "username"},
|
||||||
map[string]interface{}{"type": "password", "name": "password", "label": "password"},
|
map[string]interface{}{"type": "password", "name": "password", "label": "password"},
|
||||||
@ -46,12 +46,12 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
"display_append": "", "display_result": "",
|
"display_append": "", "display_result": "",
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "userinfo", "componet_help": "userinfo", "template": "componet",
|
map[string]interface{}{"componet_name": "userinfo", "componet_help": "userinfo", "template": "componet",
|
||||||
"context": "aaa", "componet_cmd": "login", "arguments": []interface{}{"@sessid"},
|
"componet_ctx": "aaa", "componet_cmd": "login", "arguments": []interface{}{"@sessid"},
|
||||||
"pre_run": true,
|
"pre_run": true,
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "clipboard", "componet_help": "clipboard", "template": "clipboard"},
|
map[string]interface{}{"componet_name": "clipboard", "componet_help": "clipboard", "template": "clipboard"},
|
||||||
map[string]interface{}{"componet_name": "buffer", "componet_help": "buffer", "template": "componet",
|
map[string]interface{}{"componet_name": "buffer", "componet_help": "buffer", "template": "componet",
|
||||||
"context": "cli", "componet_cmd": "tmux", "arguments": []interface{}{"buffer"}, "inputs": []interface{}{
|
"componet_ctx": "cli", "componet_cmd": "tmux", "arguments": []interface{}{"buffer"}, "inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "text", "name": "limit", "label": "limit", "value": "3"},
|
map[string]interface{}{"type": "text", "name": "limit", "label": "limit", "value": "3"},
|
||||||
map[string]interface{}{"type": "text", "name": "index", "label": "index"},
|
map[string]interface{}{"type": "text", "name": "index", "label": "index"},
|
||||||
map[string]interface{}{"type": "button", "value": "refresh"},
|
map[string]interface{}{"type": "button", "value": "refresh"},
|
||||||
@ -59,7 +59,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
"pre_run": true,
|
"pre_run": true,
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "time", "componet_help": "time", "template": "componet",
|
map[string]interface{}{"componet_name": "time", "componet_help": "time", "template": "componet",
|
||||||
"context": "cli", "componet_cmd": "time", "arguments": []interface{}{"@string"},
|
"componet_ctx": "cli", "componet_cmd": "time", "arguments": []interface{}{"@string"},
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "text", "name": "time_format",
|
map[string]interface{}{"type": "text", "name": "time_format",
|
||||||
"label": "format", "value": "2006-01-02 15:04:05",
|
"label": "format", "value": "2006-01-02 15:04:05",
|
||||||
@ -69,14 +69,14 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "json", "componet_help": "json", "template": "componet",
|
map[string]interface{}{"componet_name": "json", "componet_help": "json", "template": "componet",
|
||||||
"context": "nfs", "componet_cmd": "json", "arguments": []interface{}{"@string"},
|
"componet_ctx": "nfs", "componet_cmd": "json", "arguments": []interface{}{"@string"},
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "text", "name": "string", "label": "string"},
|
map[string]interface{}{"type": "text", "name": "string", "label": "string"},
|
||||||
map[string]interface{}{"type": "button", "value": "refresh"},
|
map[string]interface{}{"type": "button", "value": "refresh"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "dir", "componet_help": "dir", "template": "componet",
|
map[string]interface{}{"componet_name": "dir", "componet_help": "dir", "template": "componet",
|
||||||
"context": "nfs", "componet_cmd": "dir", "arguments": []interface{}{"@dir", "dir_sort", "@sort_order", "@sort_field"},
|
"componet_ctx": "nfs", "componet_cmd": "dir", "arguments": []interface{}{"@dir", "dir_sort", "@sort_order", "@sort_field"},
|
||||||
"pre_run": true, "display_result": "",
|
"pre_run": true, "display_result": "",
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "choice", "name": "dir_type",
|
map[string]interface{}{"type": "choice", "name": "dir_type",
|
||||||
@ -109,7 +109,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "upload", "componet_help": "upload", "template": "componet",
|
map[string]interface{}{"componet_name": "upload", "componet_help": "upload", "template": "componet",
|
||||||
"context": "web", "componet_cmd": "upload", "form_type": "upload",
|
"componet_ctx": "web", "componet_cmd": "upload", "form_type": "upload",
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "file", "name": "upload"},
|
map[string]interface{}{"type": "file", "name": "upload"},
|
||||||
map[string]interface{}{"type": "submit", "value": "submit"},
|
map[string]interface{}{"type": "submit", "value": "submit"},
|
||||||
@ -117,33 +117,17 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
"display_result": "",
|
"display_result": "",
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "download", "componet_help": "download", "template": "componet",
|
map[string]interface{}{"componet_name": "download", "componet_help": "download", "template": "componet",
|
||||||
"context": "cli.shy", "componet_cmd": "source", "arguments": []interface{}{"@cmd"},
|
"componet_ctx": "cli.shy", "componet_cmd": "source", "arguments": []interface{}{"@cmds"},
|
||||||
"display_result": "", "download_file": "",
|
"display_result": "", "download_file": "",
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "text", "name": "download_file", "value": "data_2006_0102_1504.txt", "class": "file_name"},
|
map[string]interface{}{"type": "text", "name": "download_file", "value": "data_2006_0102_1504.txt", "class": "file_name"},
|
||||||
map[string]interface{}{"type": "text", "name": "cmd", "value": "",
|
map[string]interface{}{"type": "text", "name": "cmds", "value": "",
|
||||||
"class": "file_cmd", "clipstack": "clistack",
|
"class": "file_cmd", "clipstack": "clistack",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "command", "componet_help": "command", "template": "componet",
|
map[string]interface{}{"componet_name": "command", "componet_help": "command", "template": "componet",
|
||||||
"context": "cli.shy", "componet_cmd": "source", "arguments": []interface{}{"@cmd"},
|
"componet_ctx": "cli.shy", "componet_cmd": "source", "arguments": []interface{}{"@cmd"},
|
||||||
"inputs": []interface{}{
|
|
||||||
map[string]interface{}{"type": "text", "name": "cmd", "value": "",
|
|
||||||
"class": "cmd", "clipstack": "void",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
map[string]interface{}{"componet_name": "command1", "componet_help": "command1", "template": "componet",
|
|
||||||
"context": "cli.shy", "componet_cmd": "source", "arguments": []interface{}{"@cmd"},
|
|
||||||
"inputs": []interface{}{
|
|
||||||
map[string]interface{}{"type": "text", "name": "cmd", "value": "",
|
|
||||||
"class": "cmd", "clipstack": "void",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
map[string]interface{}{"componet_name": "command2", "componet_help": "command2", "template": "componet",
|
|
||||||
"context": "cli.shy", "componet_cmd": "source", "arguments": []interface{}{"@cmd"},
|
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "text", "name": "cmd", "value": "",
|
map[string]interface{}{"type": "text", "name": "cmd", "value": "",
|
||||||
"class": "cmd", "clipstack": "void",
|
"class": "cmd", "clipstack": "void",
|
||||||
@ -151,7 +135,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "ctx", "componet_help": "ctx", "template": "componet",
|
map[string]interface{}{"componet_name": "ctx", "componet_help": "ctx", "template": "componet",
|
||||||
"context": "cli.shy", "componet_cmd": "context", "arguments": []interface{}{"@ctx", "list"},
|
"componet_ctx": "cli.shy", "componet_cmd": "context", "arguments": []interface{}{"@ctx", "list"},
|
||||||
"display_result": "",
|
"display_result": "",
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "text", "name": "ctx", "value": "shy"},
|
map[string]interface{}{"type": "text", "name": "ctx", "value": "shy"},
|
||||||
@ -159,7 +143,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "ccc", "componet_help": "ccc", "template": "componet",
|
map[string]interface{}{"componet_name": "ccc", "componet_help": "ccc", "template": "componet",
|
||||||
"context": "cli.shy", "componet_cmd": "context", "arguments": []interface{}{"@current_ctx", "@ccc"},
|
"componet_ctx": "cli.shy", "componet_cmd": "context", "arguments": []interface{}{"@current_ctx", "@ccc"},
|
||||||
"display_result": "",
|
"display_result": "",
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "choice", "name": "ccc",
|
map[string]interface{}{"type": "choice", "name": "ccc",
|
||||||
@ -173,21 +157,21 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "cmd", "componet_help": "cmd", "template": "componet",
|
map[string]interface{}{"componet_name": "cmd", "componet_help": "cmd", "template": "componet",
|
||||||
"context": "cli.shy", "componet_cmd": "context", "arguments": []interface{}{"@current_ctx", "command", "list"},
|
"componet_ctx": "cli.shy", "componet_cmd": "context", "arguments": []interface{}{"@current_ctx", "command", "list"},
|
||||||
"pre_run": true, "display_result": "",
|
"pre_run": true, "display_result": "",
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "button", "value": "refresh"},
|
map[string]interface{}{"type": "button", "value": "refresh"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "history", "componet_help": "history", "template": "componet",
|
map[string]interface{}{"componet_name": "history", "componet_help": "history", "template": "componet",
|
||||||
"context": "cli", "componet_cmd": "config", "arguments": []interface{}{"source_list"},
|
"componet_ctx": "cli", "componet_cmd": "config", "arguments": []interface{}{"source_list"},
|
||||||
"pre_run": true, "display_result": "",
|
"pre_run": true, "display_result": "",
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "button", "value": "refresh"},
|
map[string]interface{}{"type": "button", "value": "refresh"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "develop", "componet_help": "develop", "template": "componet",
|
map[string]interface{}{"componet_name": "develop", "componet_help": "develop", "template": "componet",
|
||||||
"context": "web.code", "componet_cmd": "config", "arguments": []interface{}{"counter"},
|
"componet_ctx": "web.code", "componet_cmd": "config", "arguments": []interface{}{"counter"},
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "button", "value": "refresh"},
|
map[string]interface{}{"type": "button", "value": "refresh"},
|
||||||
},
|
},
|
||||||
@ -195,7 +179,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
"display_result": "",
|
"display_result": "",
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "windows", "componet_help": "windows", "template": "componet",
|
map[string]interface{}{"componet_name": "windows", "componet_help": "windows", "template": "componet",
|
||||||
"context": "cli", "componet_cmd": "windows",
|
"componet_ctx": "cli", "componet_cmd": "windows",
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "button", "value": "refresh"},
|
map[string]interface{}{"type": "button", "value": "refresh"},
|
||||||
},
|
},
|
||||||
@ -203,7 +187,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
"display_result": "",
|
"display_result": "",
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "runtime", "componet_help": "runtime", "template": "componet",
|
map[string]interface{}{"componet_name": "runtime", "componet_help": "runtime", "template": "componet",
|
||||||
"context": "cli", "componet_cmd": "runtime",
|
"componet_ctx": "cli", "componet_cmd": "runtime",
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "button", "value": "refresh"},
|
map[string]interface{}{"type": "button", "value": "refresh"},
|
||||||
},
|
},
|
||||||
@ -211,7 +195,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
"display_result": "",
|
"display_result": "",
|
||||||
},
|
},
|
||||||
map[string]interface{}{"componet_name": "sysinfo", "componet_help": "sysinfo", "template": "componet",
|
map[string]interface{}{"componet_name": "sysinfo", "componet_help": "sysinfo", "template": "componet",
|
||||||
"context": "cli", "componet_cmd": "sysinfo",
|
"componet_ctx": "cli", "componet_cmd": "sysinfo",
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
map[string]interface{}{"type": "button", "value": "refresh"},
|
map[string]interface{}{"type": "button", "value": "refresh"},
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,16 @@
|
|||||||
|
var code = {
|
||||||
|
showmap: false,
|
||||||
|
keymap: [],
|
||||||
|
inputs: [],
|
||||||
|
ninput: 0,
|
||||||
|
|
||||||
|
ncommand: 1,
|
||||||
|
show_result: true,
|
||||||
|
show_height: "30px",
|
||||||
|
}
|
||||||
|
|
||||||
function copy_to_clipboard(text) {
|
function copy_to_clipboard(text) {
|
||||||
var clipboard = document.querySelector(".clipboard")
|
var clipboard = modify_node(".clipboard", {"value": text})
|
||||||
clipboard.value = text
|
|
||||||
clipboard.select()
|
clipboard.select()
|
||||||
document.execCommand("copy")
|
document.execCommand("copy")
|
||||||
clipboard.blur()
|
clipboard.blur()
|
||||||
@ -9,6 +19,64 @@ function copy_to_clipboard(text) {
|
|||||||
insert_child(clipstack, "option").value = text
|
insert_child(clipstack, "option").value = text
|
||||||
clipstack.childElementCount > 3 && clipstack.removeChild(clipstack.lastElementChild)
|
clipstack.childElementCount > 3 && clipstack.removeChild(clipstack.lastElementChild)
|
||||||
}
|
}
|
||||||
|
function add_keymap(input) {
|
||||||
|
if (code.ninput < code.keymap.length && input.style.display != "none") {
|
||||||
|
input.title = "keymap: "+code.keymap[code.ninput]
|
||||||
|
input.dataset["keymap"] = code.keymap[code.ninput]
|
||||||
|
insert_before(input, "label", {
|
||||||
|
"innerText": "("+code.keymap[code.ninput]+")",
|
||||||
|
"className": "keymap" + (code.showmap? " show": " hide"),
|
||||||
|
})
|
||||||
|
code.inputs[code.keymap[code.ninput++]] = input
|
||||||
|
}
|
||||||
|
return input
|
||||||
|
}
|
||||||
|
function add_sort(append, field, cb) {
|
||||||
|
append.onclick = function(event) {
|
||||||
|
var target = event.target
|
||||||
|
var dataset = target.dataset
|
||||||
|
var nodes = target.parentElement.childNodes
|
||||||
|
for (var i = 0; i < nodes.length; i++) {
|
||||||
|
if (nodes[i] == target) {
|
||||||
|
if (target.tagName == "TH") {
|
||||||
|
dataset["sort_asc"] = (dataset["sort_asc"] == "1") ? 0: 1
|
||||||
|
sort_table(append, i, dataset["sort_asc"] == "1")
|
||||||
|
} else if (target.tagName == "TD") {
|
||||||
|
var tr = target.parentElement.parentElement.querySelector("tr")
|
||||||
|
if (tr.childNodes[i].innerText == field) {
|
||||||
|
typeof cb == "function" && cb(event)
|
||||||
|
}
|
||||||
|
copy_to_clipboard(target.innerText)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function add_command() {
|
||||||
|
var name = "command"+code.ncommand++
|
||||||
|
|
||||||
|
var fieldset = append_child(document.querySelector("body"), "fieldset")
|
||||||
|
append_child(fieldset, "legend", {"innerText": name})
|
||||||
|
|
||||||
|
var option = append_child(fieldset, "form", {
|
||||||
|
"className": "option "+name,
|
||||||
|
"dataset": {
|
||||||
|
"componet_group": "index",
|
||||||
|
"componet_name": "command",
|
||||||
|
"componet_name_alias": name,
|
||||||
|
"componet_name_order": code.ncommand-1,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
append_child(option, "input", {"style": {"display": "none"}})
|
||||||
|
add_keymap(append_child(option, "input", {
|
||||||
|
"name": "cmd", "className": "cmd",
|
||||||
|
"onkeyup": function(event){onaction(event, "input")}
|
||||||
|
})).focus()
|
||||||
|
|
||||||
|
add_sort(append_child(fieldset, "table", {"className": "append "+name}))
|
||||||
|
append_child(append_child(fieldset, "code", {"className": "result "+name}), "pre")
|
||||||
|
}
|
||||||
|
|
||||||
function send_command(form, cb) {
|
function send_command(form, cb) {
|
||||||
var data = {}
|
var data = {}
|
||||||
@ -23,26 +91,27 @@ function send_command(form, cb) {
|
|||||||
msg = msg[0]
|
msg = msg[0]
|
||||||
|
|
||||||
var name = data["componet_name_alias"] || data["componet_name"]
|
var name = data["componet_name_alias"] || data["componet_name"]
|
||||||
|
|
||||||
var result = document.querySelector("code.result."+name+" pre")
|
var result = document.querySelector("code.result."+name+" pre")
|
||||||
var append = document.querySelector("table.append."+name)
|
var append = document.querySelector("table.append."+name)
|
||||||
if (msg && (msg.append || msg.result)) {
|
|
||||||
result && (result.innerHTML = (msg.result || []).join(""))
|
if (result && msg) {
|
||||||
append && (append.innerHTML = "")
|
result.innerHTML = (msg.result || []).join("")
|
||||||
}
|
}
|
||||||
|
if (append && msg) {
|
||||||
if (append && msg && msg.append) {
|
append.innerHTML = ""
|
||||||
var tr = append_child(append, "tr")
|
if (msg.append) {
|
||||||
for (var i in msg.append) {
|
|
||||||
append_child(tr, "th", msg.append[i])
|
|
||||||
}
|
|
||||||
|
|
||||||
var ncol = msg.append.length
|
|
||||||
var nrow = msg[msg.append[0]].length
|
|
||||||
for (var i = 0; i < nrow; i ++) {
|
|
||||||
var tr = append_child(append, "tr")
|
var tr = append_child(append, "tr")
|
||||||
for (var k in msg.append) {
|
for (var i in msg.append) {
|
||||||
append_child(tr, "td", msg[msg.append[k]][i])
|
append_child(tr, "th", msg.append[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
var ncol = msg.append.length
|
||||||
|
var nrow = msg[msg.append[0]].length
|
||||||
|
for (var i = 0; i < nrow; i ++) {
|
||||||
|
var tr = append_child(append, "tr")
|
||||||
|
for (var k in msg.append) {
|
||||||
|
append_child(tr, "td", msg[msg.append[k]][i])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -51,7 +120,7 @@ function send_command(form, cb) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function check_argument(form, target) {
|
function check_option(form, target) {
|
||||||
for (var i = 0; i < form.length-1; i++) {
|
for (var i = 0; i < form.length-1; i++) {
|
||||||
if (form[i] == target) {
|
if (form[i] == target) {
|
||||||
if (form[i+1].type == "button") {
|
if (form[i+1].type == "button") {
|
||||||
@ -64,79 +133,188 @@ function check_argument(form, target) {
|
|||||||
}
|
}
|
||||||
send_command(form)
|
send_command(form)
|
||||||
}
|
}
|
||||||
|
function add_history(input, cmd) {
|
||||||
|
var dataset = event.target.dataset
|
||||||
|
var history = JSON.parse(input.dataset["history"] || "[]")
|
||||||
|
if (history.length == 0 || cmd != history[history.length-1]) {
|
||||||
|
history.push(cmd)
|
||||||
|
}
|
||||||
|
dataset["history_last"] = history.length-1
|
||||||
|
dataset["history"] = JSON.stringify(history)
|
||||||
|
}
|
||||||
|
function get_history(input, index, cmd) {
|
||||||
|
var history = JSON.parse(input.dataset["history"] || "[]")
|
||||||
|
var last = input.dataset["history_last"]
|
||||||
|
if (last >= 0 && last < history.length) {
|
||||||
|
last = (parseInt(last)+index+history.length) % history.length
|
||||||
|
input.dataset["history_last"] = last
|
||||||
|
cmd = history[last]
|
||||||
|
}
|
||||||
|
return cmd
|
||||||
|
}
|
||||||
|
|
||||||
var ncommand = 3
|
function sort_table(table, index, sort_asc) {
|
||||||
function add_fieldset() {
|
var list = table.querySelectorAll("tr")
|
||||||
var name = "command"+ncommand++
|
var new_list = []
|
||||||
|
|
||||||
var fieldset = append_child(document.querySelector("body"), "fieldset")
|
var is_time = true
|
||||||
append_child(fieldset, "legend", {"innerText": name})
|
var is_number = true
|
||||||
|
for (var i = 1; i < list.length; i++) {
|
||||||
var option = append_child(fieldset, "form", {
|
var value = Date.parse(list[i].childNodes[index].innerText)
|
||||||
"className": "option "+name,
|
if (!(value > 0)) {
|
||||||
"dataset": {
|
is_time = false
|
||||||
"componet_group": "index",
|
|
||||||
"componet_name": "command",
|
|
||||||
"componet_name_alias": name,
|
|
||||||
"componet_name_order": ncommand-1,
|
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
|
||||||
append_child(option, "input", {"style": {"display": "none"}})
|
var value = parseInt(list[i].childNodes[index].innerText)
|
||||||
|
if (!(value >= 0 || value <= 0)) {
|
||||||
|
is_number = false
|
||||||
|
}
|
||||||
|
|
||||||
append_child(option, "input", {
|
new_list.push(list[i])
|
||||||
"name": "cmd",
|
}
|
||||||
"className": "cmd",
|
|
||||||
"onkeyup": function(event){onaction(event, "input")}
|
|
||||||
}).focus()
|
|
||||||
|
|
||||||
var append = append_child(fieldset, "table", {"className": "append "+name})
|
var sort_order = ""
|
||||||
append_child(append_child(fieldset, "code", {"className": "result "+name}), "pre")
|
if (is_time) {
|
||||||
|
if (sort_asc) {
|
||||||
|
method = function(a, b) {return Date.parse(a) > Date.parse(b)}
|
||||||
|
sort_order = "time"
|
||||||
|
} else {
|
||||||
|
method = function(a, b) {return Date.parse(a) < Date.parse(b)}
|
||||||
|
sort_order = "time_r"
|
||||||
|
}
|
||||||
|
} else if (is_number) {
|
||||||
|
if (sort_asc) {
|
||||||
|
method = function(a, b) {return parseInt(a) > parseInt(b)}
|
||||||
|
sort_order = "int"
|
||||||
|
} else {
|
||||||
|
method = function(a, b) {return parseInt(a) < parseInt(b)}
|
||||||
|
sort_order = "int_r"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sort_asc) {
|
||||||
|
method = function(a, b) {return a > b}
|
||||||
|
sort_order = "str"
|
||||||
|
} else {
|
||||||
|
method = function(a, b) {return a < b}
|
||||||
|
sort_order = "str_r"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
list = new_list
|
||||||
|
new_list = []
|
||||||
|
for (var i = 0; i < list.length; i++) {
|
||||||
|
list[i].parentElement && list[i].parentElement.removeChild(list[i])
|
||||||
|
for (var j = i+1; j < list.length; j++) {
|
||||||
|
if (typeof method == "function" && method(list[i].childNodes[index].innerText, list[j].childNodes[index].innerText)) {
|
||||||
|
var temp = list[i]
|
||||||
|
list[i] = list[j]
|
||||||
|
list[j] = temp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
new_list.push(list[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < new_list.length; i++) {
|
||||||
|
table.appendChild(new_list[i])
|
||||||
|
}
|
||||||
|
return sort_order
|
||||||
}
|
}
|
||||||
|
|
||||||
function onaction(event, action) {
|
function onaction(event, action) {
|
||||||
|
var target = event.target
|
||||||
|
var dataset = target.dataset
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case "submit":
|
case "keymap":
|
||||||
break
|
if (target.tagName == "INPUT" && target.type == "text") {
|
||||||
case "click":
|
return
|
||||||
if (event.target.nodeName == "INPUT") {
|
}
|
||||||
if (event.altKey) {
|
switch (event.key) {
|
||||||
var board = document.querySelector(".clipboard")
|
case "g":
|
||||||
event.target.value = board.value
|
document.querySelectorAll("form.option label.keymap").forEach(function(item) {
|
||||||
check_argument(event.target.form, event.target)
|
code.showmap = !(item.className == "keymap show")
|
||||||
}
|
item.className = code.showmap? "keymap show": "keymap hide"
|
||||||
|
})
|
||||||
|
break
|
||||||
|
case "j":
|
||||||
|
window.scrollBy(0, context.scroll_by)
|
||||||
|
break
|
||||||
|
case "k":
|
||||||
|
window.scrollBy(0, -context.scroll_by)
|
||||||
|
break
|
||||||
|
case "m":
|
||||||
|
add_command()
|
||||||
|
break
|
||||||
|
case "z":
|
||||||
|
code.show_result = !code.show_result
|
||||||
|
document.querySelectorAll("form.option input[name=cmd]").forEach(function(input) {
|
||||||
|
for (var command = input; command.tagName != "FIELDSET"; command = command.parentElement) {}
|
||||||
|
var result = command.querySelector("code.result pre")
|
||||||
|
var append = command.querySelector("table.append")
|
||||||
|
result.style.height = (code.show_result||result.innerText=="")? "": code.show_height
|
||||||
|
append.style.display = (code.show_result||!append.querySelector("tr"))? "": "none"
|
||||||
|
})
|
||||||
|
break
|
||||||
|
case "0":
|
||||||
|
document.querySelector("form.option.command input[name=cmd]").focus()
|
||||||
|
break
|
||||||
|
case "1":
|
||||||
|
case "2":
|
||||||
|
case "3":
|
||||||
|
case "4":
|
||||||
|
case "5":
|
||||||
|
case "6":
|
||||||
|
case "7":
|
||||||
|
case "8":
|
||||||
|
case "9":
|
||||||
|
document.querySelector("form.option.command"+event.key+" input[name=cmd]").focus()
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
if (code.inputs[event.key]) {
|
||||||
|
code.inputs[event.key].focus()
|
||||||
|
}
|
||||||
|
break
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
case "command":
|
case "command":
|
||||||
send_command(event.target.form, function() {})
|
check_option(target.form, target)
|
||||||
|
break
|
||||||
|
case "click":
|
||||||
|
if (target.nodeName == "INPUT" && event.altKey) {
|
||||||
|
var board = document.querySelector(".clipboard")
|
||||||
|
target.value = board.value
|
||||||
|
check_option(target.form, target)
|
||||||
|
}
|
||||||
break
|
break
|
||||||
case "input":
|
case "input":
|
||||||
switch (event.key) {
|
if (event.key == "Escape") {
|
||||||
case "Enter":
|
target.blur()
|
||||||
var clistack = document.querySelector("#clistack")
|
break
|
||||||
if (!clistack) {
|
}
|
||||||
|
if (event.key == "Enter") {
|
||||||
|
check_option(target.form, target)
|
||||||
|
add_history(target, target.value)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.ctrlKey) {
|
||||||
|
for (var command = target; command.tagName != "FIELDSET"; command = command.parentElement) {}
|
||||||
|
var option = command.querySelector("form.option")
|
||||||
|
var append = command.querySelector("table.append")
|
||||||
|
var result = command.querySelector("code.result pre")
|
||||||
|
// yt
|
||||||
|
switch (event.key) {
|
||||||
|
case "a":
|
||||||
|
case "e":
|
||||||
|
case "b":
|
||||||
|
case "f":
|
||||||
break
|
break
|
||||||
}
|
case "h":
|
||||||
var history = JSON.parse(event.target.dataset["history"] || "[]")
|
case "d":
|
||||||
if (history.length == 0 || event.target.value != history[history.length-1]) {
|
case "k":
|
||||||
history.push(event.target.value)
|
break
|
||||||
insert_child(clistack, "option").value = event.target.value
|
case "w":
|
||||||
}
|
var value = target.value
|
||||||
check_argument(event.target.form, event.target)
|
|
||||||
event.target.dataset["history"] = JSON.stringify(history)
|
|
||||||
event.target.dataset["history_last"] = history.length-1
|
|
||||||
console.log(history.length)
|
|
||||||
break
|
|
||||||
case "Escape":
|
|
||||||
if (event.target.value) {
|
|
||||||
event.target.value = ""
|
|
||||||
} else {
|
|
||||||
event.target.blur()
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case "w":
|
|
||||||
if (event.ctrlKey) {
|
|
||||||
var value = event.target.value
|
|
||||||
var space = value.length > 0 && value[value.length-1] == ' '
|
var space = value.length > 0 && value[value.length-1] == ' '
|
||||||
for (var i = value.length-1; i > -1; i--) {
|
for (var i = value.length-1; i > -1; i--) {
|
||||||
if (space) {
|
if (space) {
|
||||||
@ -149,56 +327,90 @@ function onaction(event, action) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
event.target.value = value.substr(0, i+1)
|
|
||||||
|
target.dataset["old_string"] = value.substr(i+1, value.length)
|
||||||
|
target.value = value.substr(0, i+1)
|
||||||
break
|
break
|
||||||
}
|
case "u":
|
||||||
case "u":
|
if (target.value != "") {
|
||||||
if (event.ctrlKey && event.key == "u") {
|
target.dataset["old_string"] = target.value
|
||||||
event.target.value = ""
|
|
||||||
break
|
|
||||||
}
|
|
||||||
case "p":
|
|
||||||
if (event.ctrlKey && event.key == "p") {
|
|
||||||
var history = JSON.parse(event.target.dataset["history"] || "[]")
|
|
||||||
var last = event.target.dataset["history_last"]
|
|
||||||
console.log(last)
|
|
||||||
event.target.value = history[last--]
|
|
||||||
event.target.dataset["history_last"] = (last + history.length) % history.length
|
|
||||||
return false
|
|
||||||
break
|
|
||||||
}
|
|
||||||
case "n":
|
|
||||||
if (event.ctrlKey && event.key == "n") {
|
|
||||||
var history = JSON.parse(event.target.dataset["history"] || "[]")
|
|
||||||
var last = event.target.dataset["history_last"]
|
|
||||||
last = (last +1) % history.length
|
|
||||||
console.log(last)
|
|
||||||
event.target.value = history[last]
|
|
||||||
event.target.dataset["history_last"] = last
|
|
||||||
break
|
|
||||||
}
|
|
||||||
case "j":
|
|
||||||
if (event.ctrlKey && event.key == "j") {
|
|
||||||
var history = JSON.parse(event.target.dataset["history"] || "[]")
|
|
||||||
if (history.length == 0 || event.target.value != history[history.length-1]) {
|
|
||||||
history.push(event.target.value)
|
|
||||||
var clistack = document.querySelector("#clistack")
|
|
||||||
insert_child(clistack, "option").value = event.target.value
|
|
||||||
}
|
}
|
||||||
check_argument(event.target.form, event.target)
|
target.value = ""
|
||||||
event.target.dataset["history"] = JSON.stringify(history)
|
|
||||||
event.target.dataset["history_last"] = history.length-1
|
|
||||||
break
|
break
|
||||||
}
|
case "v":
|
||||||
case "v":
|
target.value += target.dataset["old_string"] || ""
|
||||||
if (event.ctrlKey && event.key == "v") {
|
break
|
||||||
add_fieldset()
|
case "g":
|
||||||
}
|
var value = target.value
|
||||||
case "q":
|
var search = []
|
||||||
if (event.ctrlKey && event.key == "q") {
|
document.querySelectorAll("form.option input[name=cmd]").forEach(function(input) {
|
||||||
|
if (input.value.startsWith(value)) {
|
||||||
|
search.push(input.value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (search) {
|
||||||
|
target.value = search[0]
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case "j":
|
||||||
|
check_option(target.form, target)
|
||||||
|
add_history(target, target.value)
|
||||||
|
break
|
||||||
|
case "p":
|
||||||
|
target.value = get_history(target, -1, target.value)
|
||||||
|
break
|
||||||
|
case "n":
|
||||||
|
target.value = get_history(target, 1, target.value)
|
||||||
|
break
|
||||||
|
case "c":
|
||||||
|
append.innerHTML = ""
|
||||||
|
result.innerHTML = ""
|
||||||
|
break
|
||||||
|
case "z":
|
||||||
|
append.style.display = (result.style.height||!append.querySelector("tr"))? "": "none"
|
||||||
|
result.style.height = result.style.height? "": code.show_height
|
||||||
|
break
|
||||||
|
case "x":
|
||||||
|
target.value = ""
|
||||||
|
append.innerHTML = ""
|
||||||
|
result.innerHTML = ""
|
||||||
|
break
|
||||||
|
case "s":
|
||||||
|
copy_to_clipboard(result.innerText)
|
||||||
|
break
|
||||||
|
case "r":
|
||||||
|
append.innerHTML = ""
|
||||||
|
result.innerHTML = ""
|
||||||
|
check_option(option)
|
||||||
|
break
|
||||||
|
case "l":
|
||||||
|
window.scrollTo(0, command.offsetTop)
|
||||||
|
break
|
||||||
|
case "i":
|
||||||
|
for (var order = (parseInt(option.dataset["componet_name_order"])||0)+1; order < code.ncommand; order++) {
|
||||||
|
var input = document.querySelector("form.option.command"+order+" input[name=cmd]")
|
||||||
|
if (input) {
|
||||||
|
input.focus()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case "o":
|
||||||
|
for (var order = parseInt(option.dataset["componet_name_order"])-1; order >= 0; order--) {
|
||||||
|
var input = document.querySelector("form.option.command"+(order? order: "")+" input[name=cmd]")
|
||||||
|
if (input) {
|
||||||
|
input.focus()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case "m":
|
||||||
|
add_command()
|
||||||
|
break
|
||||||
|
case "q":
|
||||||
var can_remove = false
|
var can_remove = false
|
||||||
var order = -1
|
var order = -1
|
||||||
for (var p = event.target; p.parentElement && p.tagName != "FIELDSET"; p = p.parentElement) {
|
for (var p = target; p.parentElement && p.tagName != "FIELDSET"; p = p.parentElement) {
|
||||||
if (p.tagName == "FORM" && p.dataset["componet_name_alias"]) {
|
if (p.tagName == "FORM" && p.dataset["componet_name_alias"]) {
|
||||||
can_remove = true
|
can_remove = true
|
||||||
order = p.dataset["componet_name_order"]
|
order = p.dataset["componet_name_order"]
|
||||||
@ -208,135 +420,95 @@ function onaction(event, action) {
|
|||||||
p.parentElement.removeChild(p)
|
p.parentElement.removeChild(p)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (;order < ncommand; order++) {
|
for (;order < code.ncommand; order++) {
|
||||||
var input = document.querySelector("form.option.command"+order+" input[name=cmd]")
|
var input = document.querySelector("form.option.command"+order+" input[name=cmd]")
|
||||||
if (input) {
|
if (input) {
|
||||||
input.focus()
|
input.focus()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (;order > 0; order--) {
|
for (;order >= 0; order--) {
|
||||||
var input = document.querySelector("form.option.command"+order+" input[name=cmd]")
|
var input = document.querySelector("form.option.command"+(order? order: "")+" input[name=cmd]")
|
||||||
|
code.ncommand = order+1
|
||||||
if (input) {
|
if (input) {
|
||||||
input.focus()
|
input.focus()
|
||||||
ncommand = order+1
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
default:
|
|
||||||
console.log(event)
|
|
||||||
if (event.target.dataset["last_char"] == "j" && event.key == "k") {
|
|
||||||
event.target.value = event.target.value.substr(0, event.target.value.length-2)
|
|
||||||
check_argument(event.target.form, event.target)
|
|
||||||
event.target.dataset["history"] = JSON.stringify(history)
|
|
||||||
event.target.dataset["history_last"] = history.length-1
|
|
||||||
console.log(history.length)
|
|
||||||
break
|
break
|
||||||
// if (event.target.value) {
|
}
|
||||||
// event.target.value = ""
|
|
||||||
// } else {
|
|
||||||
// event.target.blur()
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
event.target.dataset["last_char"] = event.key
|
|
||||||
}
|
}
|
||||||
break
|
if (dataset["last_char"] == "j" && event.key == "k") {
|
||||||
case "keymap":
|
target.value = target.value.substr(0, target.value.length-2)
|
||||||
break
|
target.blur()
|
||||||
switch (event.key) {
|
|
||||||
case "g":
|
|
||||||
document.querySelectorAll("form.option label.keymap").forEach(function(item) {
|
|
||||||
item.className = (item.className == "keymap show")? "keymap hide": "keymap show"
|
|
||||||
})
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
if (inputs[event.key]) {
|
|
||||||
inputs[event.key].focus()
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
break
|
|
||||||
case "copy":
|
dataset["last_char"] = event.key
|
||||||
copy_to_clipboard(event.target.innerText)
|
return false
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var inputs = {}
|
|
||||||
var ninput = 0
|
|
||||||
var keymap = ['a', 'b', 'c']
|
|
||||||
function init_option() {
|
function init_option() {
|
||||||
inputs = {}
|
code.inputs = {}
|
||||||
ninput = 0
|
code.ninput = 0
|
||||||
keymap =[]
|
code.keymap =[]
|
||||||
for (var i = 97; i < 123; i++) {
|
for (var i = 97; i < 123; i++) {
|
||||||
if (i == 103) {
|
switch (i) {
|
||||||
continue
|
case "g".charCodeAt(0):
|
||||||
|
case "j".charCodeAt(0):
|
||||||
|
case "k".charCodeAt(0):
|
||||||
|
case "z".charCodeAt(0):
|
||||||
|
case "m".charCodeAt(0):
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
keymap.push(String.fromCharCode(i))
|
code.keymap.push(String.fromCharCode(i))
|
||||||
}
|
}
|
||||||
|
document.querySelectorAll("form.option input").forEach(add_keymap)
|
||||||
document.querySelectorAll("form.option input").forEach(function(input) {
|
|
||||||
if (ninput < keymap.length && input.style.display != "none") {
|
|
||||||
input.title = "keymap: "+keymap[ninput]
|
|
||||||
input.dataset["keymap"] = keymap[ninput]
|
|
||||||
insert_before(input, "label", "("+keymap[ninput]+")").className = "keymap"
|
|
||||||
inputs[keymap[ninput++]] = input
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
function init_append(event) {
|
function init_append(event) {
|
||||||
var append = document.querySelectorAll("table.append").forEach(function(item) {
|
var append = document.querySelectorAll("table.append").forEach(add_sort)
|
||||||
item.onclick = function(event) {
|
|
||||||
if (event.target.tagName == "TD") {
|
|
||||||
copy_to_clipboard(event.target.innerText)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
function init_result(event) {
|
function init_result(event) {
|
||||||
var result = document.querySelectorAll("code.result pre").forEach(function(item) {
|
var result = document.querySelectorAll("code.result pre").forEach(function(item) {
|
||||||
item.onselect = function(event) {
|
|
||||||
console.log(event)
|
|
||||||
|
|
||||||
}
|
|
||||||
item.onclick = function(event) {
|
item.onclick = function(event) {
|
||||||
console.log(event)
|
// copy_to_clipboard(event.target.innerText)
|
||||||
return
|
|
||||||
copy_to_clipboard(event.target.innerText)
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
function init_download(event) {
|
function init_download(event) {
|
||||||
|
var option = document.querySelector("form.option.dir")
|
||||||
var append = document.querySelector("table.append.dir")
|
var append = document.querySelector("table.append.dir")
|
||||||
if (!append) {
|
if (!append) {return}
|
||||||
return
|
|
||||||
|
function change(dir, show, run) {
|
||||||
|
if ((dir.endsWith(".sh") || dir.endsWith(".shy") || dir.endsWith(".py")) && !show) {
|
||||||
|
var command = document.querySelector("form.option.command")
|
||||||
|
var cmd = command["cmd"]
|
||||||
|
cmd.value = "run "+ dir
|
||||||
|
cmd.focus()
|
||||||
|
if (run) {
|
||||||
|
check_option(command)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
option["dir"].value = dir
|
||||||
|
if (dir == "" || dir.endsWith("/")) {
|
||||||
|
context.Cookie("download_dir", option["dir"].value)
|
||||||
|
}
|
||||||
|
send_command(option)
|
||||||
|
option["dir"].value = context.Cookie("download_dir")
|
||||||
|
|
||||||
}
|
}
|
||||||
insert_before(append, "input", {
|
insert_button(append, "root", function(event) {
|
||||||
"type": "button",
|
change("")
|
||||||
"value": "root",
|
|
||||||
"onclick": function(event) {
|
|
||||||
option["dir"].value = ""
|
|
||||||
context.Cookie("download_dir", option["dir"].value)
|
|
||||||
send_command(option)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
insert_before(append, "input", {
|
insert_button(append, "back", function(event) {
|
||||||
"type": "button",
|
var path = option["dir"].value.split("/")
|
||||||
"value": "back",
|
while (path.pop() == "") {}
|
||||||
"onclick": function(event) {
|
change(path.join("/")+(path.length? "/": ""))
|
||||||
var path = option["dir"].value.split("/")
|
|
||||||
while (path.pop() == "") {}
|
|
||||||
option["dir"].value = path.join("/")+(path.length? "/": "")
|
|
||||||
context.Cookie("download_dir", option["dir"].value)
|
|
||||||
send_command(option)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
var option = document.querySelector("form.option.dir")
|
|
||||||
var sort_order = option["sort_order"]
|
var sort_order = option["sort_order"]
|
||||||
var sort_field = option["sort_field"]
|
var sort_field = option["sort_field"]
|
||||||
sort_field.innerHTML = ""
|
sort_field.innerHTML = ""
|
||||||
@ -367,171 +539,67 @@ function init_download(event) {
|
|||||||
|
|
||||||
(option["dir"].value = context.Search("download_dir")) && send_command(option)
|
(option["dir"].value = context.Search("download_dir")) && send_command(option)
|
||||||
|
|
||||||
append.onchange = append.onclick = function(event) {
|
add_sort(append, "filename", function(event) {
|
||||||
console.log(event)
|
var dir = event.target.innerText
|
||||||
if (event.target.tagName == "TD") {
|
if (option["dir"].value && !option["dir"].value.endsWith("/")) {
|
||||||
copy_to_clipboard(event.target.innerText.trim())
|
change(option["dir"].value+"/"+dir, event.altKey, event.shiftKey)
|
||||||
var name = event.target.innerText.trim()
|
} else {
|
||||||
if (option["dir"].value && !option["dir"].value.endsWith("/")) {
|
change(option["dir"].value+dir, event.altKey, event.shiftKey)
|
||||||
option["dir"].value += "/"+name
|
|
||||||
} else {
|
|
||||||
option["dir"].value += name
|
|
||||||
}
|
|
||||||
if (name.endsWith(".py")) {
|
|
||||||
var cmd = document.querySelector("form.option.command input[name=cmd]")
|
|
||||||
cmd.value = "run "+ name
|
|
||||||
cmd.focus()
|
|
||||||
if (!event.altKey) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (name.endsWith("/")) {
|
|
||||||
context.Cookie("download_dir", option["dir"].value)
|
|
||||||
}
|
|
||||||
} else if (event.target.tagName == "TH") {
|
|
||||||
option["sort_field"].value = event.target.innerText.trim()
|
|
||||||
|
|
||||||
switch (event.target.innerText.trim()) {
|
|
||||||
case "filename":
|
|
||||||
case "type":
|
|
||||||
sort_order.value = (sort_order.value == "str")? "str_r": "str"
|
|
||||||
break
|
|
||||||
case "line":
|
|
||||||
case "size":
|
|
||||||
sort_order.value = (sort_order.value == "int")? "int_r": "int"
|
|
||||||
break
|
|
||||||
case "time":
|
|
||||||
sort_order.value = (sort_order.value == "time")? "time_r": "time"
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
})
|
||||||
send_command(option, function(){
|
|
||||||
option["dir"].value = context.Cookie("download_dir")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
function init_context() {
|
function init_context() {
|
||||||
var append = document.querySelector("table.append.ctx")
|
|
||||||
if (!append) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var option = document.querySelector("form.option.ctx")
|
var option = document.querySelector("form.option.ctx")
|
||||||
insert_before(append, "input", {
|
var append = document.querySelector("table.append.ctx")
|
||||||
"type": "button",
|
if (!append) {return}
|
||||||
"value": "ctx",
|
|
||||||
"onclick": function(event) {
|
|
||||||
option["ctx"].value = "ctx"
|
|
||||||
send_command(option)
|
|
||||||
context.Cookie("current_ctx", option["ctx"].value)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
insert_before(append, "input", {
|
|
||||||
"type": "button",
|
|
||||||
"value": "shy",
|
|
||||||
"onclick": function(event) {
|
|
||||||
option["ctx"].value = "shy"
|
|
||||||
send_command(option)
|
|
||||||
context.Cookie("current_ctx", option["ctx"].value)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
insert_before(append, "input", {
|
|
||||||
"type": "button",
|
|
||||||
"value": "aaa",
|
|
||||||
"onclick": function(event) {
|
|
||||||
option["ctx"].value = "aaa"
|
|
||||||
send_command(option)
|
|
||||||
context.Cookie("current_ctx", option["ctx"].value)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
insert_before(append, "input", {
|
|
||||||
"type": "button",
|
|
||||||
"value": "web",
|
|
||||||
"onclick": function(event) {
|
|
||||||
option["ctx"].value = "web"
|
|
||||||
send_command(option)
|
|
||||||
context.Cookie("current_ctx", option["ctx"].value)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
insert_before(append, "input", {
|
|
||||||
"type": "button",
|
|
||||||
"value": "mdb",
|
|
||||||
"onclick": function(event) {
|
|
||||||
option["ctx"].value = "mdb"
|
|
||||||
send_command(option)
|
|
||||||
context.Cookie("current_ctx", option["ctx"].value)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
option["ctx"].value = context.Cookie("current_ctx")
|
|
||||||
send_command(option)
|
|
||||||
|
|
||||||
append.onchange = append.onclick = function(event) {
|
|
||||||
console.log(event)
|
|
||||||
if (event.target.tagName == "TD") {
|
|
||||||
var name = event.target.innerText.trim()
|
|
||||||
copy_to_clipboard(name)
|
|
||||||
option["ctx"].value = name
|
|
||||||
context.Cookie("current_ctx", option["ctx"].value)
|
|
||||||
} else if (event.target.tagName == "TH") {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
function change(ctx) {
|
||||||
|
option["ctx"].value = ctx
|
||||||
send_command(option)
|
send_command(option)
|
||||||
|
context.Cookie("current_ctx", option["ctx"].value)
|
||||||
|
return ctx
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var contexts = ["ctx", "shy", "web", "mdb"]
|
||||||
|
for (var i = 0; i < contexts.length; i++) {
|
||||||
|
insert_button(append, contexts[i], function(event) {
|
||||||
|
change(event.target.value)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
add_sort(append, "name", function(event) {
|
||||||
|
change(event.target.innerText.trim())
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function init_command() {
|
function init_command() {
|
||||||
var append = document.querySelector("table.append.command")
|
|
||||||
if (!append) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var option = document.querySelector("form.option.command")
|
var option = document.querySelector("form.option.command")
|
||||||
insert_before(append, "input", {
|
var append = document.querySelector("table.append.command")
|
||||||
"type": "button",
|
var result = document.querySelector("code.result.command pre")
|
||||||
"value": "clear",
|
if (!append) {return}
|
||||||
"onclick": function(event) {
|
|
||||||
option["cmd"].value = ""
|
insert_button(append, "online", function(event) {
|
||||||
return true
|
option["cmd"].value += " cmd_env IS_PROD_RUNTIME 1"
|
||||||
}
|
option["cmd"].focus()
|
||||||
|
send_command(option)
|
||||||
})
|
})
|
||||||
insert_before(append, "input", {
|
insert_button(append, "clear", function(event) {
|
||||||
"type": "button",
|
option["cmd"].value = ""
|
||||||
"value": "exec",
|
result.innerHTML = ""
|
||||||
"onclick": function(event) {
|
append.innerHTML = ""
|
||||||
send_command(option)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
insert_before(append, "input", {
|
insert_button(append, "exec", function(event) {
|
||||||
"type": "button",
|
send_command(option)
|
||||||
"value": "online",
|
|
||||||
"onclick": function(event) {
|
|
||||||
option["cmd"].value += " cmd_env IS_PROD_RUNTIME 1"
|
|
||||||
send_command(option)
|
|
||||||
option["cmd"].focus()
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function init_userinfo() {
|
function init_userinfo() {
|
||||||
var append = document.querySelector("table.append.userinfo")
|
|
||||||
if (!append) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var option = document.querySelector("form.option.userinfo")
|
var option = document.querySelector("form.option.userinfo")
|
||||||
return
|
var append = document.querySelector("table.append.userinfo")
|
||||||
insert_before(append, "input", {
|
if (!append) {return}
|
||||||
"type": "button",
|
|
||||||
"value": "logout",
|
insert_button(append, "logout", function(event) {
|
||||||
"onclick": function(event) {
|
context.Cookie("sessid", "")
|
||||||
context.Cookie("sessid", "")
|
location.reload()
|
||||||
location.reload()
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +94,6 @@ context = {
|
|||||||
|
|
||||||
var arg = args.join("&");
|
var arg = args.join("&");
|
||||||
arg && (url += ((url.indexOf("?")>-1)? "&": "?") + arg)
|
arg && (url += ((url.indexOf("?")>-1)? "&": "?") + arg)
|
||||||
console.log("GET: "+url);
|
|
||||||
|
|
||||||
var xhr = new XMLHttpRequest();
|
var xhr = new XMLHttpRequest();
|
||||||
xhr.open("GET", url);
|
xhr.open("GET", url);
|
||||||
@ -114,8 +113,6 @@ context = {
|
|||||||
var msg = {"result": [xhr.responseText]}
|
var msg = {"result": [xhr.responseText]}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(msg)
|
|
||||||
msg.result && console.log(msg.result.join(""))
|
|
||||||
if (msg.download_file) {
|
if (msg.download_file) {
|
||||||
window.open(msg.download_file.join(""))
|
window.open(msg.download_file.join(""))
|
||||||
} else if (msg.page_redirect) {
|
} else if (msg.page_redirect) {
|
||||||
@ -130,38 +127,48 @@ context = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context.isMobile = navigator.userAgent.indexOf("Mobile") > -1
|
context.isMobile = navigator.userAgent.indexOf("Mobile") > -1
|
||||||
|
context.scroll_by = window.innerHeight/2
|
||||||
|
|
||||||
function insert_child(parent, element, html, position) {
|
function modify_node(which, html) {
|
||||||
var elm = document.createElement(element)
|
var node = which
|
||||||
html && (elm.innerHTML = html)
|
if (typeof which == "string") {
|
||||||
return parent.insertBefore(elm, position || parent.firstElementChild)
|
node = document.querySelector(which)
|
||||||
}
|
}
|
||||||
function append_child(parent, element, html) {
|
|
||||||
var elm = document.createElement(element)
|
html && typeof html == "string" && (node.innerHTML = html)
|
||||||
html && typeof html == "string" && (elm.innerHTML = html)
|
if (html && typeof html == "object") {
|
||||||
if (typeof html == "object") {
|
|
||||||
for (var k in html) {
|
for (var k in html) {
|
||||||
if (typeof html[k] == "object") {
|
if (typeof html[k] == "object") {
|
||||||
for (var d in html[k]) {
|
for (var d in html[k]) {
|
||||||
elm[k][d] = html[k][d]
|
node[k][d] = html[k][d]
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
node[k] = html[k]
|
||||||
elm[k] = html[k]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return node
|
||||||
|
}
|
||||||
|
function create_node(element, html) {
|
||||||
|
var node = document.createElement(element)
|
||||||
|
return modify_node(node, html)
|
||||||
|
}
|
||||||
|
|
||||||
|
function insert_child(parent, element, html, position) {
|
||||||
|
var elm = create_node(element, html)
|
||||||
|
return parent.insertBefore(elm, position || parent.firstElementChild)
|
||||||
|
}
|
||||||
|
function append_child(parent, element, html) {
|
||||||
|
var elm = create_node(element, html)
|
||||||
parent.append(elm)
|
parent.append(elm)
|
||||||
return elm
|
return elm
|
||||||
}
|
}
|
||||||
function insert_before(self, element, html) {
|
function insert_before(self, element, html) {
|
||||||
var elm = document.createElement(element)
|
var elm = create_node(element, html)
|
||||||
html && typeof html == "string" && (elm.innerHTML = html)
|
|
||||||
if (typeof html == "object") {
|
|
||||||
for (var k in html) {
|
|
||||||
elm[k] = html[k]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return self.parentElement.insertBefore(elm, self)
|
return self.parentElement.insertBefore(elm, self)
|
||||||
}
|
}
|
||||||
|
function insert_button(which, value, callback) {
|
||||||
|
insert_before(which, "input", {
|
||||||
|
"type": "button", "value": value, "onclick": callback,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -68,6 +68,7 @@
|
|||||||
}
|
}
|
||||||
table.append {
|
table.append {
|
||||||
font-size:14px;
|
font-size:14px;
|
||||||
|
overflow: auto;
|
||||||
}
|
}
|
||||||
table.append th {
|
table.append th {
|
||||||
font-family:monospace;
|
font-family:monospace;
|
||||||
@ -119,7 +120,7 @@
|
|||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
{{define "componet"}}
|
{{define "componet"}}
|
||||||
<fieldset><legend title="{{option .Meta "componet_help"}}">{{option .Meta "componet_help"}}({{option .Meta "context"}}.{{option .Meta "componet_cmd"}})</legend>
|
<fieldset><legend title="{{option .Meta "componet_help"}}">{{option .Meta "componet_help"}}({{option .Meta "componet_ctx"}}.{{option .Meta "componet_cmd"}})</legend>
|
||||||
{{$form_type := option . "form_type"|meta}}
|
{{$form_type := option . "form_type"|meta}}
|
||||||
|
|
||||||
{{if eq $form_type "upload"}}
|
{{if eq $form_type "upload"}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user