forked from x/ContextOS
opt tmpl
This commit is contained in:
parent
5c5ea7d85e
commit
5e39c39bb2
@ -1,13 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
bench=bench
|
|
||||||
[ -e bin/bench ] && bench=bin/bench
|
|
||||||
|
|
||||||
echo "bench: $bench"> var/boot.log
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
$bench 2>var/error.log && break
|
|
||||||
echo "bench run error"
|
|
||||||
echo "restarting..."
|
|
||||||
sleep 3
|
|
||||||
done
|
|
@ -1,3 +1,5 @@
|
|||||||
|
~ssh
|
||||||
|
config trust up true
|
||||||
~mdb
|
~mdb
|
||||||
note model favor spirit spirit relate relate
|
note model favor spirit spirit relate relate
|
||||||
note model money expend expend amount amount
|
note model money expend expend amount amount
|
||||||
|
24
etc/cvim.txt
24
etc/cvim.txt
@ -1,24 +0,0 @@
|
|||||||
set showtabindices
|
|
||||||
|
|
||||||
imap <C-h> deleteChar
|
|
||||||
imap <C-d> deleteForwardChar
|
|
||||||
imap <C-w> deleteWord
|
|
||||||
imap <C-a> beginningOfLine
|
|
||||||
imap <C-k> deleteToEnd
|
|
||||||
|
|
||||||
map w :tabnew
|
|
||||||
map m :tabnew
|
|
||||||
map t goToTab
|
|
||||||
map q goToTab
|
|
||||||
map p goToTab
|
|
||||||
map v nextTab
|
|
||||||
map c previousTab
|
|
||||||
map <C-j> nextTab
|
|
||||||
map <C-k> previousTab
|
|
||||||
map <C-o> goBack
|
|
||||||
map <C-i> goForward
|
|
||||||
map <C-f> createTabbedHint
|
|
||||||
|
|
||||||
map s scrollPageUp
|
|
||||||
map a :history
|
|
||||||
map e :tabnew google
|
|
142
etc/go.snippets
142
etc/go.snippets
@ -1,142 +0,0 @@
|
|||||||
snippet p
|
|
||||||
package ${1:main}
|
|
||||||
|
|
||||||
${2}
|
|
||||||
snippet i
|
|
||||||
import (
|
|
||||||
"${1}"
|
|
||||||
)
|
|
||||||
|
|
||||||
${2}
|
|
||||||
snippet t
|
|
||||||
type ${1} struct {
|
|
||||||
${2}
|
|
||||||
}
|
|
||||||
${3}
|
|
||||||
snippet ti
|
|
||||||
type ${1} interface {
|
|
||||||
${2}
|
|
||||||
}
|
|
||||||
${3}
|
|
||||||
snippet c
|
|
||||||
package `Filename()`
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
)
|
|
||||||
|
|
||||||
type `toupper(substitute(expand("%:t"), ".go", "", ""))` struct {
|
|
||||||
*ctx.Message
|
|
||||||
*ctx.Context
|
|
||||||
}
|
|
||||||
|
|
||||||
func (`Filename()` *`toupper(substitute(expand("%:t"), ".go", "", ""))`) Spawn(m *ctx.Message, c *ctx.Context, arg ...string) ctx.Server {
|
|
||||||
c.Caches = map[string]*ctx.Cache{}
|
|
||||||
c.Configs = map[string]*ctx.Config{}
|
|
||||||
|
|
||||||
s := new(`toupper(substitute(expand("%:t"), ".go", "", ""))`)
|
|
||||||
s.Context = c
|
|
||||||
return s
|
|
||||||
}
|
|
||||||
|
|
||||||
func (`Filename()` *`toupper(substitute(expand("%:t"), ".go", "", ""))`) Begin(m *ctx.Message, arg ...string) ctx.Server {
|
|
||||||
if `Filename()`.Context == Index {
|
|
||||||
Pulse = m
|
|
||||||
}
|
|
||||||
`Filename()`.Message = m
|
|
||||||
return `Filename()`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (`Filename()` *`toupper(substitute(expand("%:t"), ".go", "", ""))`) Start(m *ctx.Message, arg ...string) bool {
|
|
||||||
`Filename()`.Message = m
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (`Filename()` *`toupper(substitute(expand("%:t"), ".go", "", ""))`) Close(m *ctx.Message, arg ...string) bool {
|
|
||||||
switch `Filename()`.Context {
|
|
||||||
case m.Target():
|
|
||||||
case m.Source():
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
var Pulse *ctx.Message
|
|
||||||
var Index = &ctx.Context{Name: "`Filename()`", Help: "${1}",
|
|
||||||
Caches: map[string]*ctx.Cache{},
|
|
||||||
Configs: map[string]*ctx.Config{},
|
|
||||||
Commands: map[string]*ctx.Command{},
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
`Filename()` := &`toupper(substitute(expand("%:t"), ".go", "", ""))`{}
|
|
||||||
`Filename()`.Context = Index
|
|
||||||
ctx.Index.Register(Index, `Filename()`)
|
|
||||||
}
|
|
||||||
snippet cmd
|
|
||||||
"${1}": &ctx.Command{Name: "${2}", Help: "${3}", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) string {
|
|
||||||
${4}
|
|
||||||
return ""
|
|
||||||
}},
|
|
||||||
|
|
||||||
snippet conf
|
|
||||||
"${1}": &ctx.Config{Name: "${2}", Value: "${3}", Help: "${4}", Hand: func(m *ctx.Message, x *ctx.Config, arg ...string) string {
|
|
||||||
if len(arg) > 0 {
|
|
||||||
${5}
|
|
||||||
return arg[0]
|
|
||||||
}
|
|
||||||
return x.Value
|
|
||||||
}},
|
|
||||||
snippet cap
|
|
||||||
"${1}": &ctx.Cache{Name: "${2}", Value: "${3}", Help: "${4}", Hand: func(m *ctx.Message, x *ctx.Cache, arg ...string) string {
|
|
||||||
if len(arg) > 0 {
|
|
||||||
${5}
|
|
||||||
return arg[0]
|
|
||||||
}
|
|
||||||
return x.Value
|
|
||||||
}},
|
|
||||||
snippet v
|
|
||||||
var (
|
|
||||||
${1}
|
|
||||||
)
|
|
||||||
${2}
|
|
||||||
snippet m
|
|
||||||
func main() {
|
|
||||||
${1}
|
|
||||||
}
|
|
||||||
|
|
||||||
snippet h
|
|
||||||
func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
${1}
|
|
||||||
})
|
|
||||||
snippet f
|
|
||||||
func${1}(${2}) ${3}{
|
|
||||||
${4}
|
|
||||||
}${5}
|
|
||||||
snippet (
|
|
||||||
(${1})${2}
|
|
||||||
snippet [
|
|
||||||
[${1}]${2}
|
|
||||||
snippet {
|
|
||||||
{${1}}${2}
|
|
||||||
snippet if
|
|
||||||
if ${1} {
|
|
||||||
${2}
|
|
||||||
}
|
|
||||||
${3}
|
|
||||||
snippet for
|
|
||||||
for ${1}{
|
|
||||||
${2}
|
|
||||||
}
|
|
||||||
${3}
|
|
||||||
snippet switch
|
|
||||||
switch ${1}{
|
|
||||||
case ${2}:
|
|
||||||
${3}
|
|
||||||
}
|
|
||||||
${4}
|
|
||||||
snippet select
|
|
||||||
select {
|
|
||||||
case ${1}:
|
|
||||||
${2}
|
|
||||||
}
|
|
||||||
${3}
|
|
@ -3,7 +3,7 @@
|
|||||||
~code
|
~code
|
||||||
config load tmp/flash.json flash
|
config load tmp/flash.json flash
|
||||||
|
|
||||||
source common.shy
|
source etc/common.shy
|
||||||
~ssh
|
~ssh
|
||||||
remote auto
|
remote auto
|
||||||
source local.shy
|
source local.shy
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
~web
|
|
||||||
spide add weather "http://weather.sina.com.cn/%s" "div.blk_fc_c0_i"\
|
|
||||||
sub_parse date "p.wt_fc_c0_i_date" text\
|
|
||||||
sub_parse day "p.wt_fc_c0_i_day" text\
|
|
||||||
sub_parse weather "p.wt_fc_c0_i_icons.clearfix img" title\
|
|
||||||
sub_parse temp "p.wt_fc_c0_i_temp" text\
|
|
||||||
sub_parse wind "p.wt_fc_c0_i_tip" text\
|
|
||||||
sub_parse pm "ul.wt_fc_c0_i_level li.l" text\
|
|
||||||
sub_parse env "ul.wt_fc_c0_i_level li.r" text\
|
|
||||||
offset 0 limit 5 fields "date day weather temp"
|
|
||||||
|
|
||||||
spide add topic "https://s.weibo.com/top/summary?cate=realtimehot" "table tr"\
|
|
||||||
sub_parse mark "td.td-03" text\
|
|
||||||
sub_parse count "td.td-02 span" text\
|
|
||||||
sub_parse rank "td.td-01" text\
|
|
||||||
sub_parse topic "td.td-02 a" text\
|
|
||||||
offset 0 limit 22
|
|
||||||
|
|
||||||
spide add pedia "https://zh.wikipedia.org/wiki/%s" "div.mw-parser-output>p,div.mw-parser-output>ul"\
|
|
||||||
sub_parse content "" text\
|
|
||||||
offset 0 limit 3
|
|
||||||
|
|
||||||
spide add baike "http://www.baike.com/wiki/%s&prd=button_doc_entry" "div.summary p, #content h2, #content h3, #content p"\
|
|
||||||
sub_parse content "" text\
|
|
||||||
offset 0 limit 3
|
|
||||||
|
|
||||||
spide add baidu "http://www.baidu.com/s?wd=%s&rsv_spt=1&rsv_iqid=0xa47ffeff0000e033&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=19&rsv_sug1=34&rsv_sug7=101&rsv_t=a131Qznttosl8wF0vyMrsGkYevt2bH0XIskFZst3BRmlrWXhmH5zmhgyonPQO%%2BM7kn7j&rsv_sug2=0&inputT=9889&rsv_sug4=12120"\
|
|
||||||
"#content_left div.result.c-container "\
|
|
||||||
sub_parse link "a.c-showurl" text\
|
|
||||||
sub_parse title "h3" text\
|
|
||||||
sub_parse content "div.c-abstract" text\
|
|
||||||
offset 0 limit 10 fields "link title"
|
|
||||||
|
|
||||||
spide add zhihu "https://www.zhihu.com/search?type=content&q=%s&utm_content=search_preset" "div.SearchMain div.Card"\
|
|
||||||
sub_parse up "div.ContentItem-actions button.VoteButton--up" text\
|
|
||||||
sub_parse title "h2.ContentItem-title" text\
|
|
||||||
sub_parse com "div.ContentItem-actions button.ContentItem-action" text\
|
|
||||||
sub_parse content "div.RichContent span.RichText" text\
|
|
||||||
offset 1 limit 10 fields "title up com"
|
|
||||||
|
|
||||||
spide add toutiao "https://www.toutiao.com/search/?keyword=%s"\
|
|
||||||
"div.articleCard"\
|
|
||||||
sub_parse content "" text\
|
|
||||||
offset 0 limit 10
|
|
||||||
|
|
||||||
spide add 12306 "https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%s,%s&ts=%s,%s&date=2018-12-23&flag=N,N,Y"\
|
|
||||||
"div.t-list table tr"\
|
|
||||||
sub_parse content "" text\
|
|
||||||
offset 0 limit 10
|
|
||||||
|
|
@ -309,6 +309,49 @@ var CGI = template.FuncMap{
|
|||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
},
|
},
|
||||||
|
"options": func(arg ...interface{}) string {
|
||||||
|
if len(arg) == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
switch m := arg[0].(type) {
|
||||||
|
case *Message:
|
||||||
|
if len(arg) == 1 {
|
||||||
|
return kit.Format(m.Meta["option"])
|
||||||
|
}
|
||||||
|
|
||||||
|
switch value := arg[1].(type) {
|
||||||
|
case int:
|
||||||
|
if 0 <= value && value < len(m.Meta["option"]) {
|
||||||
|
return kit.Format(m.Meta["option"][value])
|
||||||
|
}
|
||||||
|
case string:
|
||||||
|
if len(arg) == 2 {
|
||||||
|
return kit.Format(m.Optionv(value))
|
||||||
|
}
|
||||||
|
|
||||||
|
switch val := arg[2].(type) {
|
||||||
|
case int:
|
||||||
|
if 0 <= val && val < len(m.Meta[value]) {
|
||||||
|
return kit.Format(m.Meta[value][val])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case map[string][]string:
|
||||||
|
if len(arg) == 1 {
|
||||||
|
return strings.Join(m["option"], "")
|
||||||
|
}
|
||||||
|
switch value := arg[1].(type) {
|
||||||
|
case string:
|
||||||
|
return strings.Join(m[value], "")
|
||||||
|
}
|
||||||
|
case []string:
|
||||||
|
return strings.Join(m, "")
|
||||||
|
default:
|
||||||
|
return kit.Format(m)
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
},
|
||||||
"result": func(arg ...interface{}) interface{} {
|
"result": func(arg ...interface{}) interface{} {
|
||||||
if len(arg) == 0 {
|
if len(arg) == 0 {
|
||||||
return ""
|
return ""
|
||||||
|
@ -862,7 +862,16 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
case 0:
|
case 0:
|
||||||
m.Cmdy("ctx.config", "componet")
|
m.Cmdy("ctx.config", "componet")
|
||||||
case 1:
|
case 1:
|
||||||
m.Cmdy("ctx.config", "componet", arg[0])
|
m.Confm("componet", arg[0], func(index int, val map[string]interface{}) {
|
||||||
|
m.Add("append", "ctx", val["componet_ctx"])
|
||||||
|
m.Add("append", "cmd", val["componet_cmd"])
|
||||||
|
m.Add("append", "name", val["componet_name"])
|
||||||
|
m.Add("append", "help", val["componet_help"])
|
||||||
|
m.Add("append", "tmpl", val["componet_tmpl"])
|
||||||
|
m.Add("append", "view", val["componet_view"])
|
||||||
|
m.Add("append", "init", val["componet_init"])
|
||||||
|
})
|
||||||
|
m.Table()
|
||||||
case 2:
|
case 2:
|
||||||
m.Cmdy("ctx.config", "componet", strings.Join(arg, "."))
|
m.Cmdy("ctx.config", "componet", strings.Join(arg, "."))
|
||||||
default:
|
default:
|
||||||
@ -875,18 +884,13 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
default:
|
default:
|
||||||
componet := m.Confm("componet", arg[:2])
|
componet := m.Confm("componet", arg[:2])
|
||||||
for i := 2; i < len(arg)-1; i += 2 {
|
for i := 2; i < len(arg)-1; i += 2 {
|
||||||
componet[arg[i]] = arg[i+1]
|
kit.Chain(componet, arg[i], arg[i+1])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}},
|
}},
|
||||||
|
|
||||||
"/proxy/": &ctx.Command{Name: "/proxy/which/method/url", Help: "服务代理", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
|
||||||
fields := strings.Split(key, "/")
|
|
||||||
m.Cmdy("web.get", "which", fields[2], "method", fields[3], strings.Join(fields, "/"))
|
|
||||||
return
|
|
||||||
}},
|
|
||||||
"/render": &ctx.Command{Name: "/render template", Help: "渲染模板, template: 模板名称", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
"/render": &ctx.Command{Name: "/render template", Help: "渲染模板, template: 模板名称", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
if m.Options("toolkit") {
|
if m.Options("toolkit") {
|
||||||
if kit, ok := m.Confv("toolkit", m.Option("toolkit")).(map[string]interface{}); ok {
|
if kit, ok := m.Confv("toolkit", m.Option("toolkit")).(map[string]interface{}); ok {
|
||||||
@ -937,7 +941,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
|
|
||||||
for _, v := range m.Confv("componet", group).([]interface{}) {
|
for _, v := range m.Confv("componet", group).([]interface{}) {
|
||||||
val := v.(map[string]interface{})
|
val := v.(map[string]interface{})
|
||||||
if order != "" && val["name"].(string) != order {
|
if order != "" && val["componet_name"].(string) != order {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -945,7 +949,6 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
msg := m.Find(kit.Select(m.Cap("module"), val["componet_ctx"]))
|
msg := m.Find(kit.Select(m.Cap("module"), val["componet_ctx"]))
|
||||||
|
|
||||||
// 默认变量
|
// 默认变量
|
||||||
msg.Option("componet_name", val["name"].(string))
|
|
||||||
for k, v := range val {
|
for k, v := range val {
|
||||||
if msg.Option(k) != "" {
|
if msg.Option(k) != "" {
|
||||||
continue
|
continue
|
||||||
@ -968,7 +971,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
msg.Log("fuck", "what %v", msg.Option("componet_name"))
|
msg.Log("fuck", "what %v", val)
|
||||||
|
|
||||||
// 添加设备
|
// 添加设备
|
||||||
arg = arg[:0]
|
arg = arg[:0]
|
||||||
@ -983,7 +986,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
arg = append(arg, kit.Trans(m.Optionv("cmds"))...)
|
arg = append(arg, kit.Trans(m.Optionv("cmds"))...)
|
||||||
}
|
}
|
||||||
// 添加参数
|
// 添加参数
|
||||||
for _, v := range kit.Trans(val["arguments"]) {
|
for _, v := range kit.Trans(val["componet_args"]) {
|
||||||
arg = append(arg, msg.Parse(v))
|
arg = append(arg, msg.Parse(v))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1014,8 +1017,8 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
return
|
return
|
||||||
} else if accept_json {
|
} else if accept_json {
|
||||||
list = append(list, msg.Meta)
|
list = append(list, msg.Meta)
|
||||||
} else if val["template"] != nil {
|
} else if val["componet_tmpl"] != nil {
|
||||||
m.Assert(tmpl.ExecuteTemplate(w, val["template"].(string), msg))
|
m.Assert(tmpl.ExecuteTemplate(w, val["componet_tmpl"].(string), msg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1055,6 +1058,11 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
http.ServeFile(w, r, p)
|
http.ServeFile(w, r, p)
|
||||||
return
|
return
|
||||||
}},
|
}},
|
||||||
|
"/proxy/": &ctx.Command{Name: "/proxy/which/method/url", Help: "服务代理", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
|
fields := strings.Split(key, "/")
|
||||||
|
m.Cmdy("web.get", "which", fields[2], "method", fields[3], strings.Join(fields, "/"))
|
||||||
|
return
|
||||||
|
}},
|
||||||
"/shadow": &ctx.Command{Name: "/shadow", Help: "暗网", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
"/shadow": &ctx.Command{Name: "/shadow", Help: "暗网", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
m.Confm("runtime", "node.port", func(index int, value string) {
|
m.Confm("runtime", "node.port", func(index int, value string) {
|
||||||
m.Add("append", "ports", value)
|
m.Add("append", "ports", value)
|
||||||
|
@ -16,6 +16,135 @@ import (
|
|||||||
var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
||||||
Caches: map[string]*ctx.Cache{},
|
Caches: map[string]*ctx.Cache{},
|
||||||
Configs: map[string]*ctx.Config{
|
Configs: map[string]*ctx.Config{
|
||||||
|
"skip_login": &ctx.Config{Name: "skip_login", Value: map[string]interface{}{"/consul": "true"}, Help: "免密登录"},
|
||||||
|
"componet": &ctx.Config{Name: "componet", Value: map[string]interface{}{
|
||||||
|
"login": []interface{}{
|
||||||
|
map[string]interface{}{"componet_name": "code", "componet_tmpl": "head", "metas": []interface{}{
|
||||||
|
map[string]interface{}{"name": "viewport", "content": "width=device-width, initial-scale=0.7, user-scalable=no"},
|
||||||
|
}, "favicon": "favicon.ico", "styles": []interface{}{"example.css", "code.css"}},
|
||||||
|
|
||||||
|
map[string]interface{}{"componet_name": "login", "componet_help": "login", "componet_tmpl": "componet",
|
||||||
|
"componet_ctx": "aaa", "componet_cmd": "auth", "componet_args": []interface{}{"@sessid", "ship", "username", "@username", "password", "@password"}, "inputs": []interface{}{
|
||||||
|
map[string]interface{}{"type": "text", "name": "username", "value": "", "label": "username"},
|
||||||
|
map[string]interface{}{"type": "password", "name": "password", "value": "", "label": "password"},
|
||||||
|
map[string]interface{}{"type": "button", "value": "login"},
|
||||||
|
},
|
||||||
|
"display_append": "", "display_result": "",
|
||||||
|
},
|
||||||
|
|
||||||
|
map[string]interface{}{"componet_name": "tail", "componet_tmpl": "tail",
|
||||||
|
"scripts": []interface{}{"toolkit.js", "context.js", "example.js", "code.js"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"flash": []interface{}{
|
||||||
|
map[string]interface{}{"componet_name": "flash", "componet_tmpl": "head", "metas": []interface{}{
|
||||||
|
map[string]interface{}{"name": "viewport", "content": "width=device-width, initial-scale=0.7, user-scalable=no"},
|
||||||
|
}, "favicon": "favicon.ico", "styles": []interface{}{"example.css", "code.css"}},
|
||||||
|
|
||||||
|
map[string]interface{}{"componet_name": "ask", "componet_help": "ask", "componet_tmpl": "componet",
|
||||||
|
"componet_view": "FlashText", "componet_init": "initFlashText",
|
||||||
|
"componet_ctx": "web.code", "componet_cmd": "flash", "componet_args": []interface{}{"text", "@text"}, "inputs": []interface{}{
|
||||||
|
map[string]interface{}{"type": "textarea", "name": "text", "value": "", "cols": 50, "rows": 5},
|
||||||
|
map[string]interface{}{"type": "button", "value": "添加请求"},
|
||||||
|
},
|
||||||
|
"display_result": "", "display_append": "",
|
||||||
|
},
|
||||||
|
map[string]interface{}{"componet_name": "tip", "componet_help": "tip", "componet_tmpl": "componet",
|
||||||
|
"componet_view": "FlashList", "componet_init": "initFlashList",
|
||||||
|
"componet_ctx": "web.code", "componet_cmd": "flash",
|
||||||
|
"display_result": "", "display_append": "",
|
||||||
|
},
|
||||||
|
|
||||||
|
map[string]interface{}{"componet_name": "tail", "componet_tmpl": "tail",
|
||||||
|
"scripts": []interface{}{"toolkit.js", "context.js", "example.js", "code.js"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"index": []interface{}{
|
||||||
|
map[string]interface{}{"componet_name": "code", "componet_tmpl": "head", "metas": []interface{}{
|
||||||
|
map[string]interface{}{"name": "viewport", "content": "width=device-width, initial-scale=0.7, user-scalable=no"},
|
||||||
|
}, "favicon": "favicon.ico", "styles": []interface{}{"example.css", "code.css"}},
|
||||||
|
|
||||||
|
map[string]interface{}{"componet_name": "toolkit", "componet_help": "Ctrl+B", "componet_tmpl": "toolkit",
|
||||||
|
"componet_view": "KitList", "componet_init": "initKitList",
|
||||||
|
},
|
||||||
|
// map[string]interface{}{"componet_name": "login", "componet_help": "login", "componet_tmpl": "componet",
|
||||||
|
// "componet_ctx": "aaa", "componet_cmd": "login", "componet_args": []interface{}{"@username", "@password"},
|
||||||
|
// "inputs": []interface{}{
|
||||||
|
// map[string]interface{}{"type": "text", "name": "username", "label": "username"},
|
||||||
|
// map[string]interface{}{"type": "password", "name": "password", "label": "password"},
|
||||||
|
// map[string]interface{}{"type": "button", "value": "login"},
|
||||||
|
// },
|
||||||
|
// "display_append": "", "display_result": "",
|
||||||
|
// },
|
||||||
|
// map[string]interface{}{"componet_name": "userinfo", "componet_help": "userinfo", "componet_tmpl": "componet",
|
||||||
|
// "componet_ctx": "aaa", "componet_cmd": "login", "componet_args": []interface{}{"@sessid"},
|
||||||
|
// "pre_run": true,
|
||||||
|
// },
|
||||||
|
map[string]interface{}{"componet_name": "buffer", "componet_help": "buffer", "componet_tmpl": "componet",
|
||||||
|
"componet_view": "BufList", "componet_init": "initBufList",
|
||||||
|
"componet_ctx": "cli", "componet_cmd": "tmux", "componet_args": []interface{}{"buffer"}, "inputs": []interface{}{
|
||||||
|
map[string]interface{}{"type": "text", "name": "limit", "value": "3", "label": "limit"},
|
||||||
|
map[string]interface{}{"type": "text", "name": "index", "value": "0", "label": "index"},
|
||||||
|
map[string]interface{}{"type": "button", "value": "refresh"},
|
||||||
|
},
|
||||||
|
"pre_run": true,
|
||||||
|
},
|
||||||
|
map[string]interface{}{"componet_name": "dir", "componet_help": "dir", "componet_tmpl": "componet",
|
||||||
|
"componet_view": "DirList", "componet_init": "initDirList",
|
||||||
|
"componet_ctx": "nfs", "componet_cmd": "dir", "componet_args": []interface{}{"@dir", "dir_sort", "@sort_field", "@sort_order"}, "inputs": []interface{}{
|
||||||
|
map[string]interface{}{"type": "choice", "name": "dir_type", "value": "both", "label": "dir_type", "choice": []interface{}{
|
||||||
|
map[string]interface{}{"name": "all", "value": "all"},
|
||||||
|
map[string]interface{}{"name": "both", "value": "both"},
|
||||||
|
map[string]interface{}{"name": "file", "value": "file"},
|
||||||
|
map[string]interface{}{"name": "dir", "value": "dir"},
|
||||||
|
}},
|
||||||
|
map[string]interface{}{"type": "text", "name": "dir", "value": "@current.dir", "label": "dir"},
|
||||||
|
map[string]interface{}{"type": "button", "value": "refresh"},
|
||||||
|
},
|
||||||
|
"pre_run": false, "display_result": "",
|
||||||
|
},
|
||||||
|
map[string]interface{}{"componet_name": "upload", "componet_help": "upload", "componet_tmpl": "componet",
|
||||||
|
"componet_view": "PutFile", "componet_init": "initPutFile",
|
||||||
|
"componet_ctx": "web", "componet_cmd": "upload", "form_type": "upload", "inputs": []interface{}{
|
||||||
|
map[string]interface{}{"type": "file", "name": "upload"},
|
||||||
|
map[string]interface{}{"type": "submit", "value": "submit"},
|
||||||
|
},
|
||||||
|
"display_result": "",
|
||||||
|
},
|
||||||
|
map[string]interface{}{"componet_name": "pod", "componet_help": "pod", "componet_tmpl": "componet",
|
||||||
|
"componet_view": "PodList", "componet_init": "initPodList",
|
||||||
|
"componet_ctx": "ssh", "componet_cmd": "remote", "inputs": []interface{}{
|
||||||
|
map[string]interface{}{"type": "text", "name": "pod", "value": "@current.pod"},
|
||||||
|
map[string]interface{}{"type": "button", "value": "refresh"},
|
||||||
|
},
|
||||||
|
"pre_run": true, "display_result": "",
|
||||||
|
},
|
||||||
|
map[string]interface{}{"componet_name": "ctx", "componet_help": "ctx", "componet_tmpl": "componet",
|
||||||
|
"componet_view": "CtxList", "componet_init": "initCtxList",
|
||||||
|
"componet_pod": "true", "componet_ctx": "ssh", "componet_cmd": "context", "componet_args": []interface{}{"@ctx", "list"}, "inputs": []interface{}{
|
||||||
|
map[string]interface{}{"type": "text", "name": "ctx", "value": "@current.ctx"},
|
||||||
|
map[string]interface{}{"type": "button", "value": "refresh"},
|
||||||
|
},
|
||||||
|
"display_result": "",
|
||||||
|
},
|
||||||
|
map[string]interface{}{"componet_name": "cmd", "componet_help": "cmd", "componet_tmpl": "componet",
|
||||||
|
"componet_view": "CmdList", "componet_init": "initCmdList",
|
||||||
|
"componet_ctx": "cli.shy", "componet_cmd": "source", "componet_args": []interface{}{"@cmd"}, "inputs": []interface{}{
|
||||||
|
map[string]interface{}{"type": "text", "name": "cmd", "value": "", "class": "cmd", "clipstack": "void"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// map[string]interface{}{"componet_name": "mp", "componet_tmpl": "mp"},
|
||||||
|
map[string]interface{}{"componet_name": "tail", "componet_tmpl": "tail",
|
||||||
|
"scripts": []interface{}{"toolkit.js", "context.js", "example.js", "code.js"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, Help: "组件列表"},
|
||||||
|
"componet_group": &ctx.Config{Name: "component_group", Value: "index", Help: "默认组件"},
|
||||||
|
|
||||||
|
"flash": &ctx.Config{Name: "flash", Value: map[string]interface{}{
|
||||||
|
"data": []interface{}{},
|
||||||
|
"view": map[string]interface{}{"default": []interface{}{"index", "time", "text", "code", "output"}},
|
||||||
|
}, Help: "闪存"},
|
||||||
"mux": &ctx.Config{Name: "mux", Value: map[string]interface{}{
|
"mux": &ctx.Config{Name: "mux", Value: map[string]interface{}{
|
||||||
"cmd_timeout": "100ms",
|
"cmd_timeout": "100ms",
|
||||||
"view": map[string]interface{}{
|
"view": map[string]interface{}{
|
||||||
@ -74,155 +203,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, Help: "文档管理"},
|
}, Help: "文档管理"},
|
||||||
"skip_login": &ctx.Config{Name: "skip_login", Value: map[string]interface{}{
|
|
||||||
"/consul": "true",
|
|
||||||
}, Help: "免登录"},
|
|
||||||
"counter": &ctx.Config{Name: "counter", Value: map[string]interface{}{
|
|
||||||
"nopen": "0", "nsave": "0",
|
|
||||||
}, Help: "counter"},
|
|
||||||
"counter_service": &ctx.Config{Name: "counter_service", Value: "http://localhost:9094/code/counter", Help: "counter"},
|
|
||||||
"web_site": &ctx.Config{Name: "web_site", Value: []interface{}{
|
|
||||||
map[string]interface{}{"_name": "MDN", "site": "https://developer.mozilla.org"},
|
|
||||||
map[string]interface{}{"_name": "github", "site": "https://github.com"},
|
|
||||||
}, Help: "web_site"},
|
|
||||||
"componet_command": &ctx.Config{Name: "component_command", Value: "pwd", Help: "默认命令"},
|
|
||||||
"componet_group": &ctx.Config{Name: "component_group", Value: "index", Help: "默认组件"},
|
|
||||||
"componet": &ctx.Config{Name: "componet", Value: map[string]interface{}{
|
|
||||||
"login": []interface{}{
|
|
||||||
map[string]interface{}{"name": "code", "template": "head", "metas": []interface{}{
|
|
||||||
map[string]interface{}{"name": "viewport", "content": "width=device-width, initial-scale=0.7"},
|
|
||||||
map[string]interface{}{"name": "user-scalable", "content": "no"},
|
|
||||||
}, "favicon": "favicon.ico", "styles": []interface{}{"example.css", "code.css"}},
|
|
||||||
map[string]interface{}{"name": "login", "help": "login", "template": "componet",
|
|
||||||
"componet_ctx": "aaa", "componet_cmd": "auth", "arguments": []interface{}{"@sessid", "ship", "username", "@username", "password", "@password"}, "inputs": []interface{}{
|
|
||||||
map[string]interface{}{"type": "text", "name": "username", "label": "username", "value": ""},
|
|
||||||
map[string]interface{}{"type": "password", "name": "password", "label": "password", "value": ""},
|
|
||||||
map[string]interface{}{"type": "button", "value": "login"},
|
|
||||||
},
|
|
||||||
"display_append": "", "display_result": "",
|
|
||||||
},
|
|
||||||
map[string]interface{}{"name": "tail", "template": "tail",
|
|
||||||
"scripts": []interface{}{"toolkit.js", "context.js", "example.js", "code.js"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"flash": []interface{}{
|
|
||||||
map[string]interface{}{"name": "flash", "template": "head"},
|
|
||||||
map[string]interface{}{"name": "ask", "help": "ask", "template": "componet",
|
|
||||||
"componet_view": "flasktext", "componet_init": "initFlashText",
|
|
||||||
"componet_ctx": "web.code", "componet_cmd": "flash", "arguments": []interface{}{"text", "@text"}, "inputs": []interface{}{
|
|
||||||
map[string]interface{}{"type": "textarea", "name": "text", "value": "", "cols": 50, "rows": 5},
|
|
||||||
map[string]interface{}{"type": "button", "value": "添加请求"},
|
|
||||||
},
|
|
||||||
"display_result": "", "display_append": "",
|
|
||||||
},
|
|
||||||
map[string]interface{}{"name": "tip", "help": "tip", "template": "componet",
|
|
||||||
"componet_view": "flasklist", "componet_init": "initFlashList",
|
|
||||||
"componet_ctx": "web.code", "componet_cmd": "flash", "arguments": []interface{}{}, "inputs": []interface{}{
|
|
||||||
// map[string]interface{}{"type": "button", "value": "refresh"},
|
|
||||||
},
|
|
||||||
"display_result": "", "display_append": "",
|
|
||||||
},
|
|
||||||
map[string]interface{}{"name": "tail", "template": "tail"},
|
|
||||||
},
|
|
||||||
"index": []interface{}{
|
|
||||||
map[string]interface{}{"name": "code", "template": "head", "metas": []interface{}{
|
|
||||||
map[string]interface{}{"name": "viewport", "content": "width=device-width, initial-scale=0.7"},
|
|
||||||
map[string]interface{}{"name": "user-scalable", "content": "no"},
|
|
||||||
}, "favicon": "favicon.ico", "styles": []interface{}{"example.css", "code.css"}},
|
|
||||||
|
|
||||||
map[string]interface{}{"name": "toolkit", "help": "Ctrl+B", "template": "toolkit",
|
|
||||||
"componet_view": "KitList", "componet_init": "initKitList",
|
|
||||||
},
|
|
||||||
// map[string]interface{}{"name": "login", "help": "login", "template": "componet",
|
|
||||||
// "componet_ctx": "aaa", "componet_cmd": "login", "arguments": []interface{}{"@username", "@password"},
|
|
||||||
// "inputs": []interface{}{
|
|
||||||
// map[string]interface{}{"type": "text", "name": "username", "label": "username"},
|
|
||||||
// map[string]interface{}{"type": "password", "name": "password", "label": "password"},
|
|
||||||
// map[string]interface{}{"type": "button", "value": "login"},
|
|
||||||
// },
|
|
||||||
// "display_append": "", "display_result": "",
|
|
||||||
// },
|
|
||||||
// map[string]interface{}{"name": "userinfo", "help": "userinfo", "template": "componet",
|
|
||||||
// "componet_ctx": "aaa", "componet_cmd": "login", "arguments": []interface{}{"@sessid"},
|
|
||||||
// "pre_run": true,
|
|
||||||
// },
|
|
||||||
map[string]interface{}{"name": "buffer", "help": "buffer", "template": "componet",
|
|
||||||
"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": "index", "label": "index"},
|
|
||||||
map[string]interface{}{"type": "button", "value": "refresh"},
|
|
||||||
},
|
|
||||||
"pre_run": true,
|
|
||||||
},
|
|
||||||
map[string]interface{}{"name": "dir", "help": "dir", "template": "componet",
|
|
||||||
"componet_view": "DirList", "componet_init": "initDirList",
|
|
||||||
"pre_run": false, "componet_ctx": "nfs", "componet_cmd": "dir", "arguments": []interface{}{"@current.dir", "dir_sort", "@sort_field", "@sort_order"}, "inputs": []interface{}{
|
|
||||||
map[string]interface{}{"type": "choice", "name": "dir_type",
|
|
||||||
"label": "dir_type", "value": "both", "choice": []interface{}{
|
|
||||||
map[string]interface{}{"name": "all", "value": "all"},
|
|
||||||
map[string]interface{}{"name": "both", "value": "both"},
|
|
||||||
map[string]interface{}{"name": "file", "value": "file"},
|
|
||||||
map[string]interface{}{"name": "dir", "value": "dir"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
map[string]interface{}{"type": "choice", "name": "sort_field",
|
|
||||||
"label": "sort_field", "value": "time", "choice": []interface{}{
|
|
||||||
map[string]interface{}{"name": "filename", "value": "filename"},
|
|
||||||
map[string]interface{}{"name": "is_dir", "value": "type"},
|
|
||||||
map[string]interface{}{"name": "line", "value": "line"},
|
|
||||||
map[string]interface{}{"name": "size", "value": "size"},
|
|
||||||
map[string]interface{}{"name": "time", "value": "time"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
map[string]interface{}{"type": "choice", "name": "sort_order",
|
|
||||||
"label": "sort_order", "value": "time_r", "choice": []interface{}{
|
|
||||||
map[string]interface{}{"name": "str", "value": "str"},
|
|
||||||
map[string]interface{}{"name": "str_r", "value": "str_r"},
|
|
||||||
map[string]interface{}{"name": "int", "value": "int"},
|
|
||||||
map[string]interface{}{"name": "int_r", "value": "int_r"},
|
|
||||||
map[string]interface{}{"name": "time", "value": "time"},
|
|
||||||
map[string]interface{}{"name": "time_r", "value": "time_r"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
map[string]interface{}{"type": "text", "name": "current.dir", "value": "@current.dir", "label": "dir"},
|
|
||||||
},
|
|
||||||
"display_result": "",
|
|
||||||
},
|
|
||||||
map[string]interface{}{"name": "upload", "help": "upload", "template": "componet",
|
|
||||||
"componet_ctx": "web", "componet_cmd": "upload", "form_type": "upload", "inputs": []interface{}{
|
|
||||||
map[string]interface{}{"type": "file", "name": "upload"},
|
|
||||||
map[string]interface{}{"type": "submit", "value": "submit"},
|
|
||||||
},
|
|
||||||
"display_result": "",
|
|
||||||
},
|
|
||||||
map[string]interface{}{"name": "pod", "help": "pod", "template": "componet",
|
|
||||||
"componet_view": "PodList", "componet_init": "initPodList",
|
|
||||||
"pre_run": true, "componet_ctx": "ssh", "componet_cmd": "remote", "inputs": []interface{}{
|
|
||||||
map[string]interface{}{"type": "text", "name": "pod", "value": "@current.pod"},
|
|
||||||
map[string]interface{}{"type": "button", "value": "refresh"},
|
|
||||||
},
|
|
||||||
"display_result": "",
|
|
||||||
},
|
|
||||||
map[string]interface{}{"name": "ctx", "help": "ctx", "template": "componet",
|
|
||||||
"componet_view": "CtxList", "componet_init": "initCtxList",
|
|
||||||
"componet_pod": "true", "componet_ctx": "ssh", "componet_cmd": "context", "arguments": []interface{}{"@ctx", "list"}, "inputs": []interface{}{
|
|
||||||
map[string]interface{}{"type": "text", "name": "ctx", "value": "@current.ctx"},
|
|
||||||
map[string]interface{}{"type": "button", "value": "refresh"},
|
|
||||||
},
|
|
||||||
"display_result": "",
|
|
||||||
},
|
|
||||||
map[string]interface{}{"name": "cmd", "help": "cmd", "template": "componet",
|
|
||||||
"componet_view": "CmdList", "componet_init": "initCmdList",
|
|
||||||
"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{}{"name": "mp", "template": "mp"},
|
|
||||||
map[string]interface{}{"name": "tail", "template": "tail",
|
|
||||||
"scripts": []interface{}{"toolkit.js", "context.js", "example.js", "code.js"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}, Help: "组件列表"},
|
|
||||||
"upgrade": &ctx.Config{Name: "upgrade", Value: map[string]interface{}{
|
"upgrade": &ctx.Config{Name: "upgrade", Value: map[string]interface{}{
|
||||||
"system": []interface{}{"exit_shy", "common_shy", "init_shy", "bench", "boot_sh"},
|
"system": []interface{}{"exit_shy", "common_shy", "init_shy", "bench", "boot_sh"},
|
||||||
"portal": []interface{}{"code_tmpl", "code_js", "context_js"},
|
"portal": []interface{}{"code_tmpl", "code_js", "context_js"},
|
||||||
@ -239,12 +220,73 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
"context_js": "usr/librarys/context.js",
|
"context_js": "usr/librarys/context.js",
|
||||||
},
|
},
|
||||||
}, Help: "日志地址"},
|
}, Help: "日志地址"},
|
||||||
"flash": &ctx.Config{Name: "flash", Value: map[string]interface{}{
|
"counter": &ctx.Config{Name: "counter", Value: map[string]interface{}{
|
||||||
"data": []interface{}{},
|
"nopen": "0", "nsave": "0",
|
||||||
"view": map[string]interface{}{"default": []interface{}{"index", "time", "text", "code", "output"}},
|
}, Help: "counter"},
|
||||||
}, Help: "闪存"},
|
"counter_service": &ctx.Config{Name: "counter_service", Value: "http://localhost:9094/code/counter", Help: "counter"},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ctx.Command{
|
Commands: map[string]*ctx.Command{
|
||||||
|
"flash": &ctx.Command{Name: "flash", Help: "闪存", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
|
total := len(m.Confv("flash", "data").([]interface{}))
|
||||||
|
// 查看列表
|
||||||
|
if len(arg) == 0 {
|
||||||
|
if index := m.Option("flash_index"); index != "" {
|
||||||
|
arg = append(arg, index)
|
||||||
|
} else {
|
||||||
|
m.Confm("flash", "data", func(index int, item map[string]interface{}) {
|
||||||
|
for _, k := range kit.View([]string{}, m.Confm("flash", "view")) {
|
||||||
|
m.Add("append", k, kit.Format(item[k]))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
m.Table()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
index, item := -1, map[string]interface{}{"time": m.Time()}
|
||||||
|
if i, e := strconv.Atoi(arg[0]); e == nil && 0 <= i && i < total {
|
||||||
|
// 查看索引
|
||||||
|
index, arg = total-1-i, arg[1:]
|
||||||
|
if item = m.Confm("flash", []interface{}{"data", index}); len(arg) == 0 {
|
||||||
|
// 查看数据
|
||||||
|
for _, k := range kit.View([]string{}, m.Confm("flash", "view")) {
|
||||||
|
m.Add("append", k, kit.Format(item[k]))
|
||||||
|
}
|
||||||
|
m.Table()
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch arg[0] {
|
||||||
|
case "vim": // 编辑数据
|
||||||
|
name := m.Cmdx("nfs.temp", kit.Format(item[kit.Select("code", arg, 1)]))
|
||||||
|
m.Cmd("cli.system", "vi", name)
|
||||||
|
item[kit.Select("code", arg, 1)] = m.Cmdx("nfs.load", name)
|
||||||
|
m.Cmd("nfs.trash", name)
|
||||||
|
|
||||||
|
case "run": // 运行代码
|
||||||
|
code := kit.Format(item[kit.Select("code", arg, 1)])
|
||||||
|
if code == "" {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
name := m.Cmdx("nfs.temp", code)
|
||||||
|
m.Cmdy("cli.system", "python", name)
|
||||||
|
item["output"] = m.Result(0)
|
||||||
|
m.Cmd("nfs.trash", name)
|
||||||
|
|
||||||
|
default:
|
||||||
|
// 修改数据
|
||||||
|
for i := 0; i < len(arg)-1; i += 2 {
|
||||||
|
item[arg[i]] = arg[i+1]
|
||||||
|
}
|
||||||
|
m.Conf("flash", []interface{}{"data", index}, item)
|
||||||
|
item["index"] = total - 1 - index
|
||||||
|
m.Echo("%d", total-1-index)
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}},
|
||||||
"mux": &ctx.Command{Name: "mux [session [window [pane]]] args...", Help: "终端管理", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
"mux": &ctx.Command{Name: "mux [session [window [pane]]] args...", Help: "终端管理", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
if len(arg) == 0 { // 会话列表
|
if len(arg) == 0 { // 会话列表
|
||||||
view := kit.View([]string{"session"}, m.Confm("mux", "view"))
|
view := kit.View([]string{"session"}, m.Confm("mux", "view"))
|
||||||
@ -332,6 +374,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
m.Cmdy("cli.system", "tmux", "send-keys", "-t", target, arg[3:])
|
m.Cmdy("cli.system", "tmux", "send-keys", "-t", target, arg[3:])
|
||||||
return
|
return
|
||||||
}},
|
}},
|
||||||
|
|
||||||
"update": &ctx.Command{Name: "update", Help: "更新代码", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
"update": &ctx.Command{Name: "update", Help: "更新代码", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
return
|
return
|
||||||
}},
|
}},
|
||||||
@ -393,7 +436,6 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}},
|
}},
|
||||||
|
|
||||||
"/counter": &ctx.Command{Name: "/counter", Help: "/counter", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
"/counter": &ctx.Command{Name: "/counter", Help: "/counter", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
if len(arg) > 0 {
|
if len(arg) > 0 {
|
||||||
m.Option("name", arg[0])
|
m.Option("name", arg[0])
|
||||||
@ -419,67 +461,6 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}},
|
}},
|
||||||
"flash": &ctx.Command{Name: "flash", Help: "闪存", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
|
||||||
total := len(m.Confv("flash", "data").([]interface{}))
|
|
||||||
// 查看列表
|
|
||||||
if len(arg) == 0 {
|
|
||||||
if index := m.Option("flash_index"); index != "" {
|
|
||||||
arg = append(arg, index)
|
|
||||||
} else {
|
|
||||||
m.Confm("flash", "data", func(index int, item map[string]interface{}) {
|
|
||||||
for _, k := range kit.View([]string{}, m.Confm("flash", "view")) {
|
|
||||||
m.Add("append", k, kit.Format(item[k]))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
m.Table()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
index, item := -1, map[string]interface{}{"time": m.Time()}
|
|
||||||
if i, e := strconv.Atoi(arg[0]); e == nil && 0 <= i && i < total {
|
|
||||||
// 查看索引
|
|
||||||
index, arg = total-1-i, arg[1:]
|
|
||||||
if item = m.Confm("flash", []interface{}{"data", index}); len(arg) == 0 {
|
|
||||||
// 查看数据
|
|
||||||
for _, k := range kit.View([]string{}, m.Confm("flash", "view")) {
|
|
||||||
m.Add("append", k, kit.Format(item[k]))
|
|
||||||
}
|
|
||||||
m.Table()
|
|
||||||
return e
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch arg[0] {
|
|
||||||
case "vim": // 编辑数据
|
|
||||||
name := m.Cmdx("nfs.temp", kit.Format(item[kit.Select("code", arg, 1)]))
|
|
||||||
m.Cmd("cli.system", "vi", name)
|
|
||||||
item[kit.Select("code", arg, 1)] = m.Cmdx("nfs.load", name)
|
|
||||||
m.Cmd("nfs.trash", name)
|
|
||||||
|
|
||||||
case "run": // 运行代码
|
|
||||||
code := kit.Format(item[kit.Select("code", arg, 1)])
|
|
||||||
if code == "" {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
name := m.Cmdx("nfs.temp", code)
|
|
||||||
m.Cmdy("cli.system", "python", name)
|
|
||||||
item["output"] = m.Result(0)
|
|
||||||
m.Cmd("nfs.trash", name)
|
|
||||||
|
|
||||||
default:
|
|
||||||
// 修改数据
|
|
||||||
for i := 0; i < len(arg)-1; i += 2 {
|
|
||||||
item[arg[i]] = arg[i+1]
|
|
||||||
}
|
|
||||||
m.Conf("flash", []interface{}{"data", index}, item)
|
|
||||||
item["index"] = total - 1 - index
|
|
||||||
m.Echo("%d", total-1-index)
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,21 +68,21 @@
|
|||||||
height:2em;
|
height:2em;
|
||||||
}
|
}
|
||||||
/* ----- FlashList ----- */
|
/* ----- FlashList ----- */
|
||||||
fieldset.flasktext {
|
fieldset.FlashList {
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldset.flasklist div.detail {
|
fieldset.FlashList div.detail {
|
||||||
border:ridge 2px green;
|
border:ridge 2px green;
|
||||||
border-bottom:0px;
|
border-bottom:0px;
|
||||||
margin-top:20px;
|
margin-top:20px;
|
||||||
padding:5px;
|
padding:5px;
|
||||||
}
|
}
|
||||||
fieldset.flasklist div.action {
|
fieldset.FlashList div.action {
|
||||||
border:ridge 2px green;
|
border:ridge 2px green;
|
||||||
border-top:0px;
|
border-top:0px;
|
||||||
border-bottom:0px;
|
border-bottom:0px;
|
||||||
}
|
}
|
||||||
fieldset.flasklist code.output pre {
|
fieldset.FlashList code.output pre {
|
||||||
border:ridge 2px green;
|
border:ridge 2px green;
|
||||||
margin:0px;
|
margin:0px;
|
||||||
padding:5px;
|
padding:5px;
|
||||||
@ -100,7 +100,6 @@
|
|||||||
overflow:scroll;
|
overflow:scroll;
|
||||||
position:fixed;
|
position:fixed;
|
||||||
}
|
}
|
||||||
fieldset.KitList:hover, fieldset.KitList.max {}
|
|
||||||
fieldset.KitList div:hover, fieldset.KitList li li:hover {
|
fieldset.KitList div:hover, fieldset.KitList li li:hover {
|
||||||
background-color:red;
|
background-color:red;
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,25 @@
|
|||||||
var page = Page({
|
var page = Page({
|
||||||
initFlashText: function(page, field, option, append, result) {
|
initFlashText: function(page, field, option, append, result) {
|
||||||
option.onactions = function(msg) {
|
option.ondaemon = function(msg) {
|
||||||
page.reload()
|
page.reload()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
initFlashList: function(page, field, option, append, result) {
|
initFlashList: function(page, field, option) {
|
||||||
option.dataset.flash_index = ctx.Search("flash_index")
|
option.dataset.flash_index = ctx.Search("flash_index")
|
||||||
option.onactions = function(msg) {
|
option.ondaemon = function(msg) {
|
||||||
page.showFlashList(msg, option, append, result)
|
page.showFlashList(msg, field, option)
|
||||||
}
|
}
|
||||||
ctx.Run(page, option.dataset, [], option.onactions)
|
ctx.Runs(page, option)
|
||||||
},
|
},
|
||||||
showFlashList: function(msg, option, append, result) {
|
showFlashList: function(msg, field, option) {
|
||||||
var page = this
|
var page = this
|
||||||
|
var result = field.querySelector("div.result")
|
||||||
|
|
||||||
result.innerHTML = ""
|
result.innerHTML = ""
|
||||||
ctx.Table(msg, function(tip) {
|
ctx.Table(msg, function(tip) {
|
||||||
var ui = kit.AppendChild(result, [{"list": [
|
var ui = kit.AppendChild(result, [{"list": [
|
||||||
{"view": ["detail", "div", tip.text]},
|
{"text": [tip.text, "div", "detail"]},
|
||||||
{"code": [tip.output, "result", "result"]},
|
{"code": [tip.code, "result", "result"]},
|
||||||
{"view": ["action"], "list": [
|
{"view": ["action"], "list": [
|
||||||
{"button": ["查看详情", function(event) {
|
{"button": ["查看详情", function(event) {
|
||||||
ctx.Search("flash_index", tip.index)
|
ctx.Search("flash_index", tip.index)
|
||||||
@ -36,88 +38,53 @@ var page = Page({
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
initDirList: function(page, field, option, append, result) {
|
|
||||||
var history = []
|
|
||||||
function change(value) {
|
|
||||||
option["current.dir"].value = value
|
|
||||||
ctx.Runs(page, option)
|
|
||||||
ctx.Current("dir", value)
|
|
||||||
return value
|
|
||||||
}
|
|
||||||
function brow(value, dir, event) {
|
|
||||||
option["current.dir"].value = value
|
|
||||||
ctx.Runs(page, option)
|
|
||||||
option["current.dir"].value = dir
|
|
||||||
ctx.Runs(page, option)
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
"button": ["root", "back"], "action": function(value) {
|
|
||||||
switch (value) {
|
|
||||||
case "back": history.length > -1 && change(history.pop() || "/"); break
|
|
||||||
case "root": change("/"); break
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"table": {"filename": function(value, key, row, index, event) {
|
|
||||||
var dir = option["current.dir"].value
|
|
||||||
var file = dir + ((dir && !dir.endsWith("/"))? "/": "") + value
|
|
||||||
file.endsWith("/")? history.push(change(file)): brow(file, dir, event)
|
|
||||||
}},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
initPodList: function(page, field, option, append, result) {
|
|
||||||
function change(value) {
|
|
||||||
option.pod.value = value
|
|
||||||
ctx.Runs(page, option)
|
|
||||||
ctx.Current("pod", value)
|
|
||||||
}
|
|
||||||
return {"table": {"key": change}}
|
|
||||||
},
|
|
||||||
initCtxList: function(page, field, option, append, result) {
|
|
||||||
function change(value) {
|
|
||||||
option.ctx.value = value
|
|
||||||
ctx.Runs(page, option)
|
|
||||||
ctx.Current("ctx", value)
|
|
||||||
}
|
|
||||||
return {"button": ["ctx", "shy", "web", "mdb"], "action": change, "table": {"names": change}}
|
|
||||||
},
|
|
||||||
|
|
||||||
initKitList: function(page, field, option, append, result) {
|
initKitList: function(page, field, option, append, result) {
|
||||||
var ui = kit.AppendChild(field, [{"type": "ul", "list": [
|
var ui = kit.AppendChild(field, [
|
||||||
{"fork": ["粘贴板", [
|
{"styles": {
|
||||||
{"leaf": ["+ 保存粘贴板(Ctrl+S)", function(event) {
|
"fieldset.KitList": {
|
||||||
console.log("save_txt")
|
"top": conf.toolkit_view.top, "left": conf.toolkit_view.left,
|
||||||
}]},
|
},
|
||||||
{"leaf": ["+ 添加粘贴板(Ctrl+Y)", function(event) {
|
"fieldset.KitList:hover, fieldset.KitList.max": {
|
||||||
console.log("create_txt")
|
"width": conf.toolkit_view.width, "height": conf.toolkit_view.height,
|
||||||
}]},
|
},
|
||||||
{"leaf": ["+ 快捷粘贴板(Ctrl+P)", function(event) {
|
}},
|
||||||
console.log("quick_txt")
|
{"type": "ul", "list": [
|
||||||
}]},
|
{"fork": ["粘贴板", [
|
||||||
]]},
|
{"leaf": ["+ 保存粘贴板(Ctrl+S)", function(event) {
|
||||||
{"fork": ["命令行", [
|
console.log("save_txt")
|
||||||
{"leaf": ["+ 折叠命令行(Ctrl+Z)", function(event, target) {
|
}]},
|
||||||
target.className = page.conf.show_result? "": "stick"
|
{"leaf": ["+ 添加粘贴板(Ctrl+Y)", function(event) {
|
||||||
page.showResult(page)
|
console.log("create_txt")
|
||||||
}]},
|
}]},
|
||||||
{"leaf": ["+ 添加命令行(Ctrl+M)", function(event) {
|
{"leaf": ["+ 快捷粘贴板(Ctrl+P)", function(event) {
|
||||||
page.addCmdList("cmd", page.conf.ncommand++)
|
console.log("quick_txt")
|
||||||
}]},
|
}]},
|
||||||
]]},
|
]]},
|
||||||
{"fork": ["工作流", [
|
{"fork": ["命令行", [
|
||||||
{"leaf": ["+ 刷新工作流(Ctrl+R)", function(event) {
|
{"leaf": ["+ 折叠命令行(Ctrl+Z)", function(event, target) {
|
||||||
console.log("refresh_fly")
|
target.className = page.conf.show_result? "": "stick"
|
||||||
}]},
|
page.showResult(page)
|
||||||
{"leaf": ["+ 添加工作流(Ctrl+T)", function(event) {
|
}]},
|
||||||
console.log("create_fly")
|
{"leaf": ["+ 添加命令行(Ctrl+M)", function(event) {
|
||||||
}]},
|
page.addCmdList("cmd", page.conf.ncommand++)
|
||||||
{"leaf": ["+ 命名工作流", function(event) {
|
}]},
|
||||||
console.log("rename_fly")
|
]]},
|
||||||
}]},
|
{"fork": ["工作流", [
|
||||||
{"leaf": ["+ 删除工作流", function(event) {
|
{"leaf": ["+ 刷新工作流(Ctrl+R)", function(event) {
|
||||||
console.log("remove_fly")
|
console.log("refresh_fly")
|
||||||
}]},
|
}]},
|
||||||
]]},
|
{"leaf": ["+ 添加工作流(Ctrl+T)", function(event) {
|
||||||
]}])
|
console.log("create_fly")
|
||||||
|
}]},
|
||||||
|
{"leaf": ["+ 命名工作流", function(event) {
|
||||||
|
console.log("rename_fly")
|
||||||
|
}]},
|
||||||
|
{"leaf": ["+ 删除工作流", function(event) {
|
||||||
|
console.log("remove_fly")
|
||||||
|
}]},
|
||||||
|
]]},
|
||||||
|
]},
|
||||||
|
])
|
||||||
/*
|
/*
|
||||||
<li><div>命令行</div>
|
<li><div>命令行</div>
|
||||||
<ul class="cmd">
|
<ul class="cmd">
|
||||||
@ -270,49 +237,81 @@ var page = Page({
|
|||||||
})
|
})
|
||||||
return
|
return
|
||||||
},
|
},
|
||||||
|
|
||||||
|
initDirList: function(page, field, option, append, result) {
|
||||||
|
var history = []
|
||||||
|
function change(value) {
|
||||||
|
return page.setCurrent(page, option, "dir", value)
|
||||||
|
}
|
||||||
|
function brow(value, dir, event) {
|
||||||
|
page.setCurrent(page, option, "dir", value)
|
||||||
|
page.setCurrent(page, option, "dir", dir)
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
"button": ["root", "back"], "action": function(value) {
|
||||||
|
switch (value) {
|
||||||
|
case "back": history.length > -1 && change(history.pop() || "/"); break
|
||||||
|
case "root": change("/"); break
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"table": {"filename": function(value, key, row, index, event) {
|
||||||
|
var dir = option.dir.value
|
||||||
|
var file = dir + ((dir && !dir.endsWith("/"))? "/": "") + value
|
||||||
|
file.endsWith("/")? history.push(change(file)): brow(file, dir, event)
|
||||||
|
}},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
initPodList: function(page, field, option, append, result) {
|
||||||
|
return {"button": ["local"], "action": function(value) {
|
||||||
|
value == "local" && (value = "''")
|
||||||
|
page.setCurrent(page, option, "pod", value)
|
||||||
|
}, "table": {"key": function(value) {
|
||||||
|
page.setCurrent(page, option, "pod", value)
|
||||||
|
}}}
|
||||||
|
},
|
||||||
|
initCtxList: function(page, field, option, append, result) {
|
||||||
|
return {"button": ["ctx", "shy", "web", "mdb"], "action": function(value) {
|
||||||
|
page.setCurrent(page, option, "ctx", value)
|
||||||
|
}, "table": {"names": function(value) {
|
||||||
|
page.setCurrent(page, option, "ctx", value)
|
||||||
|
}}}
|
||||||
|
},
|
||||||
|
setCurrent: function(page, option, type, value) {
|
||||||
|
option[type].value = ctx.Current(type, value)
|
||||||
|
page.History.add(type, value)
|
||||||
|
ctx.Runs(page, option)
|
||||||
|
return value
|
||||||
|
},
|
||||||
|
|
||||||
initCmdList: function(page, field, option, append, result) {
|
initCmdList: function(page, field, option, append, result) {
|
||||||
option.dataset["componet_name_alias"] = "cmd"
|
option.dataset["componet_name_alias"] = "cmd"
|
||||||
option.dataset["componet_name_order"] = 0
|
option.dataset["componet_name_order"] = 0
|
||||||
option.onactions = function(msg) {
|
|
||||||
page.showCmdList(msg, option, append, result)
|
|
||||||
}
|
|
||||||
|
|
||||||
var cmd = option.querySelector("input[name=cmd]")
|
var cmd = option.querySelector("input[name=cmd]")
|
||||||
cmd.onkeyup = function(event) {
|
cmd.onkeyup = function(event) {
|
||||||
page.onCmdList(event, cmd, "input", option, append, result)
|
page.onCmdList(event, cmd, "input", field, option, append, result)
|
||||||
}
|
}
|
||||||
|
|
||||||
var action = conf.bench_data.action
|
var action = conf.bench_data.action
|
||||||
if (action && action["cmd"]) {
|
action && action["cmd"] && page.runCmdList(page, option, cmd, action["cmd"].cmd[1])
|
||||||
cmd.value = action["cmd"].cmd[1]
|
|
||||||
ctx.Runs(page, option)
|
|
||||||
page.History.add("cmd", cmd.value)
|
|
||||||
}
|
|
||||||
|
|
||||||
var max = 0
|
var max = 0
|
||||||
for (var k in action) {
|
for (var k in action) {
|
||||||
var order = parseInt(action[k].order)
|
var order = parseInt(action[k].order)
|
||||||
if (order > max) {
|
order > max && (max = order)
|
||||||
max = order
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 1; i <= max; i++) {
|
for (var i = 1; i <= max; i++) {
|
||||||
var ui = page.addCmdList("cmd", i)
|
var ui = page.addCmdList("cmd", i)
|
||||||
if (action["cmd"+i]) {
|
action["cmd"+i] && page.runCmdList(page, ui.option, ui.cmd, action["cmd"+i].cmd[1])
|
||||||
ui.cmd.value = action["cmd"+i].cmd[1]
|
|
||||||
ctx.Runs(page, ui.option)
|
|
||||||
page.History.add("cmd", ui.cmd.value)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
page.conf.ncommand = i
|
page.conf.ncommand = i
|
||||||
return
|
return
|
||||||
},
|
},
|
||||||
showCmdList: function(msg, option, append, result) {
|
runCmdList: function(page, option, target, value) {
|
||||||
append.innerHTML = ""
|
target.value = value
|
||||||
msg && msg.append && kit.AppendTable(append, ctx.Table(msg), msg.append)
|
target.dataset.history_last = page.History.add("cmd", target.value)
|
||||||
result.innerText = (msg && msg.result)? msg.result.join(""): ""
|
ctx.Runs(page, option)
|
||||||
return
|
|
||||||
},
|
},
|
||||||
getCmdList: function(input, step, cmd) {
|
getCmdList: function(input, step, cmd) {
|
||||||
var history = kit.History.get("cmd")
|
var history = kit.History.get("cmd")
|
||||||
@ -327,23 +326,26 @@ var page = Page({
|
|||||||
addCmdList: function(name, order) {
|
addCmdList: function(name, order) {
|
||||||
var page = this
|
var page = this
|
||||||
var alias = name+order
|
var alias = name+order
|
||||||
var ui = kit.AppendChild(document.querySelector("body"), [{"type": "fieldset", "data": {}, "list": [
|
var ui = kit.AppendChild(document.body, [{"view": ["CmdList", "fieldset"], "list": [
|
||||||
{"text": [alias, "legend"]},
|
{"text": [alias, "legend"]},
|
||||||
{"view": ["option "+alias, "form", "", "option"], "data": {"dataset": {
|
{"view": ["option "+alias, "form", "", "option"],
|
||||||
"componet_group": "index", "componet_name": name, "componet_name_alias": alias, "componet_name_order": order,
|
"data": {"dataset": {
|
||||||
}, "onactions": function(msg) {
|
"componet_group": "index", "componet_name": name, "componet_name_alias": alias, "componet_name_order": order,
|
||||||
page.showCmdList(msg, ui.option, ui.append, ui.result)
|
}},
|
||||||
}}, "list": [
|
"list": [
|
||||||
{"type": "input", "data": {"style": {"display": "none"}}},
|
{"type": "input", "data": {"style": {"display": "none"}}},
|
||||||
{"name": "cmd", "type": "input", "data": {"name": "cmd", "className": "cmd", "onkeyup": function(event) {
|
{"name": "cmd", "type": "input", "data": {"name": "cmd", "className": "cmd", "onkeyup": function(event) {
|
||||||
page.onCmdList(event, ui.cmd, "input", ui.option, ui.append, ui.result)
|
page.onCmdList(event, ui.cmd, "input", ui.field, ui.option, ui.append, ui.result)
|
||||||
}}},
|
}}},
|
||||||
]},
|
]
|
||||||
|
},
|
||||||
{"view": ["append "+alias, "table", "", "append"]},
|
{"view": ["append "+alias, "table", "", "append"]},
|
||||||
{"code": ["", "result", "result "+alias]},
|
{"code": ["", "result", "result "+alias]},
|
||||||
]}])
|
]}])
|
||||||
|
|
||||||
|
page.OrderForm(page, ui.field, ui.option, ui.append, ui.result)
|
||||||
page.OrderTable(ui.append)
|
page.OrderTable(ui.append)
|
||||||
page.OrderCode(ui.code)
|
page.OrderCode(ui.result)
|
||||||
ui.cmd.focus()
|
ui.cmd.focus()
|
||||||
return ui
|
return ui
|
||||||
},
|
},
|
||||||
@ -367,7 +369,7 @@ var page = Page({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onCmdList: function(event, target, action, option, append, result) {
|
onCmdList: function(event, target, action, field, option, append, result) {
|
||||||
var page = this
|
var page = this
|
||||||
var order = option.dataset.componet_name_order
|
var order = option.dataset.componet_name_order
|
||||||
var prev_order = (parseInt(order)-1+page.conf.ncommand)%page.conf.ncommand||""
|
var prev_order = (parseInt(order)-1+page.conf.ncommand)%page.conf.ncommand||""
|
||||||
@ -375,13 +377,13 @@ var page = Page({
|
|||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case "input":
|
case "input":
|
||||||
|
kit.History.add("key", (event.ctrlKey? "Control+": "")+(event.shiftKey? "Shift+": "")+event.key)
|
||||||
|
|
||||||
if (event.key == "Escape") {
|
if (event.key == "Escape") {
|
||||||
target.blur()
|
target.blur()
|
||||||
|
|
||||||
} else if (event.key == "Enter") {
|
} else if (event.key == "Enter") {
|
||||||
target.dataset.history_last = page.History.get("cmd").length
|
page.runCmdList(page, option, target, target.value)
|
||||||
page.History.add("cmd", target.value)
|
|
||||||
ctx.Runs(page, option)
|
|
||||||
|
|
||||||
} else if (event.ctrlKey) {
|
} else if (event.ctrlKey) {
|
||||||
switch (event.key) {
|
switch (event.key) {
|
||||||
@ -426,6 +428,13 @@ var page = Page({
|
|||||||
}
|
}
|
||||||
target.dataset.search_last = ""
|
target.dataset.search_last = ""
|
||||||
break
|
break
|
||||||
|
|
||||||
|
case "y":
|
||||||
|
case "v":
|
||||||
|
case "s":
|
||||||
|
case "t":
|
||||||
|
break
|
||||||
|
|
||||||
case "a":
|
case "a":
|
||||||
case "e":
|
case "e":
|
||||||
case "f":
|
case "f":
|
||||||
@ -452,6 +461,7 @@ var page = Page({
|
|||||||
}
|
}
|
||||||
kit.DelText(target, i+1, end-i)
|
kit.DelText(target, i+1, end-i)
|
||||||
break
|
break
|
||||||
|
|
||||||
case "c":
|
case "c":
|
||||||
append.innerHTML = ""
|
append.innerHTML = ""
|
||||||
result.innerHTML = ""
|
result.innerHTML = ""
|
||||||
@ -460,9 +470,7 @@ var page = Page({
|
|||||||
append.innerHTML = ""
|
append.innerHTML = ""
|
||||||
result.innerHTML = ""
|
result.innerHTML = ""
|
||||||
case "j":
|
case "j":
|
||||||
target.dataset.history_last = page.History.get("cmd").length
|
page.runCmdList(page, option, target, target.value)
|
||||||
page.History.add("cmd", target.value)
|
|
||||||
ctx.Runs(page, option)
|
|
||||||
break
|
break
|
||||||
case "l":
|
case "l":
|
||||||
window.scrollTo(0, option.parentElement.offsetTop)
|
window.scrollTo(0, option.parentElement.offsetTop)
|
||||||
@ -486,11 +494,11 @@ var page = Page({
|
|||||||
break
|
break
|
||||||
case "q":
|
case "q":
|
||||||
page.delCmdList("cmd", order)
|
page.delCmdList("cmd", order)
|
||||||
|
break
|
||||||
default:
|
default:
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
kit.History.add("key", event.key)
|
|
||||||
if (kit.HitText(target, "jk")) {
|
if (kit.HitText(target, "jk")) {
|
||||||
kit.DelText(target, target.selectionStart-2, 2)
|
kit.DelText(target, target.selectionStart-2, 2)
|
||||||
target.blur()
|
target.blur()
|
||||||
@ -504,65 +512,23 @@ var page = Page({
|
|||||||
var page = this
|
var page = this
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case "scroll":
|
case "scroll":
|
||||||
if (event.target != document.body) {
|
if (event.target == document.body) {
|
||||||
return
|
kit.ScrollPage(event, page.conf)
|
||||||
}
|
}
|
||||||
switch (event.key) {
|
break
|
||||||
case "h":
|
|
||||||
if (event.ctrlKey) {
|
|
||||||
window.scrollBy(-page.conf.scroll_x*10, 0)
|
|
||||||
} else {
|
|
||||||
window.scrollBy(-page.conf.scroll_x, 0)
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case "H":
|
|
||||||
window.scrollBy(-body.scrollWidth, 0)
|
|
||||||
break
|
|
||||||
case "l":
|
|
||||||
if (event.ctrlKey) {
|
|
||||||
window.scrollBy(page.conf.scroll_x*10, 0)
|
|
||||||
} else {
|
|
||||||
window.scrollBy(page.conf.scroll_x, 0)
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case "L":
|
|
||||||
window.scrollBy(body.scrollWidth, 0)
|
|
||||||
break
|
|
||||||
case "j":
|
|
||||||
if (event.ctrlKey) {
|
|
||||||
window.scrollBy(0, page.conf.scroll_y*10)
|
|
||||||
} else {
|
|
||||||
window.scrollBy(0, page.conf.scroll_y)
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case "J":
|
|
||||||
window.scrollBy(0, body.scrollHeight)
|
|
||||||
break
|
|
||||||
case "k":
|
|
||||||
if (event.ctrlKey) {
|
|
||||||
window.scrollBy(0, -page.conf.scroll_y*10)
|
|
||||||
} else {
|
|
||||||
window.scrollBy(0, -page.conf.scroll_y)
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case "K":
|
|
||||||
window.scrollBy(0, -body.scrollHeight)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
return
|
|
||||||
case "keymap":
|
case "keymap":
|
||||||
if (event.key == "Escape") {
|
if (event.key == "Escape") {
|
||||||
}
|
|
||||||
if (event.key == "Enter") {
|
} else if (event.key == "Enter") {
|
||||||
}
|
|
||||||
if (event.ctrlKey) {
|
} else if (event.ctrlKey) {
|
||||||
switch (event.key) {
|
switch (event.key) {
|
||||||
case "m":
|
case "m":
|
||||||
page.addCmdList("cmd", page.conf.ncommand++)
|
page.addCmdList("cmd", page.conf.ncommand++)
|
||||||
return
|
break
|
||||||
case "z":
|
case "z":
|
||||||
page.showResult(page)
|
page.showResult(page)
|
||||||
return
|
break
|
||||||
case "0":
|
case "0":
|
||||||
case "1":
|
case "1":
|
||||||
case "2":
|
case "2":
|
||||||
@ -574,7 +540,7 @@ var page = Page({
|
|||||||
case "8":
|
case "8":
|
||||||
case "9":
|
case "9":
|
||||||
document.querySelector("form.option.cmd"+(event.key||"")+" input[name=cmd]").focus()
|
document.querySelector("form.option.cmd"+(event.key||"")+" input[name=cmd]").focus()
|
||||||
return
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -599,7 +565,7 @@ var page = Page({
|
|||||||
var option = field.querySelector("form.option")
|
var option = field.querySelector("form.option")
|
||||||
var append = field.querySelector("table.append")
|
var append = field.querySelector("table.append")
|
||||||
var result = field.querySelector("code.result pre")
|
var result = field.querySelector("code.result pre")
|
||||||
page.OrderForm(page, option, append, result)
|
page.OrderForm(page, field, option, append, result)
|
||||||
page.OrderTable(append)
|
page.OrderTable(append)
|
||||||
page.OrderCode(result)
|
page.OrderCode(result)
|
||||||
|
|
||||||
@ -616,12 +582,7 @@ var page = Page({
|
|||||||
kit.InsertChild(field, append, "div", buttons)
|
kit.InsertChild(field, append, "div", buttons)
|
||||||
}
|
}
|
||||||
if (conf && conf["table"]) {
|
if (conf && conf["table"]) {
|
||||||
option.onactions = function(msg) {
|
option.daemon_action = conf["table"]
|
||||||
append.innerHTML = ""
|
|
||||||
kit.AppendTable(append, ctx.Table(msg), msg.append, function(value, key, row, index, event) {
|
|
||||||
typeof conf["table"][key] == "function" && conf["table"][key](value, key, row, index, event)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
ctx.Runs(page, option)
|
ctx.Runs(page, option)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ ctx = context = {
|
|||||||
data[form[i].name] = form[i].value
|
data[form[i].name] = form[i].value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.Run(page, data, [], cb || form.onactions)
|
this.Run(page, data, [], cb || form.ondaemon)
|
||||||
},
|
},
|
||||||
Table: function(msg, cb) {
|
Table: function(msg, cb) {
|
||||||
var ret = []
|
var ret = []
|
||||||
|
@ -7,8 +7,6 @@ exp = example = {
|
|||||||
reload: function() {
|
reload: function() {
|
||||||
location.reload()
|
location.reload()
|
||||||
},
|
},
|
||||||
_exit: function(page) {
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Page(page) {
|
function Page(page) {
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
kit = toolkit = {
|
kit = toolkit = {
|
||||||
History: {cmd: [], txt: [], key: [],
|
History: {dir: [], pod: [], ctx: [], cmd: [], txt: [], key: [],
|
||||||
add: function(type, data) {
|
add: function(type, data) {
|
||||||
var list = this[type] || []
|
var list = this[type] || []
|
||||||
data && list.push({time: Date.now(), data: data})
|
data && list.push({time: Date.now(), data: data})
|
||||||
this[type] = list
|
this[type] = list
|
||||||
return list.length
|
return list.length-1
|
||||||
},
|
},
|
||||||
get: function(type, index) {
|
get: function(type, index) {
|
||||||
var list = this[type] || []
|
var list = this[type] || []
|
||||||
@ -21,6 +21,8 @@ kit = toolkit = {
|
|||||||
return args
|
return args
|
||||||
},
|
},
|
||||||
isMobile: navigator.userAgent.indexOf("Mobile") > -1,
|
isMobile: navigator.userAgent.indexOf("Mobile") > -1,
|
||||||
|
CreateStyle: function(style) {
|
||||||
|
},
|
||||||
|
|
||||||
ModifyNode: function(which, html) {
|
ModifyNode: function(which, html) {
|
||||||
var node = typeof which == "string"? document.querySelector(which): which
|
var node = typeof which == "string"? document.querySelector(which): which
|
||||||
@ -52,8 +54,9 @@ kit = toolkit = {
|
|||||||
return elm
|
return elm
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// include require styles style
|
||||||
// tree, code, text, view, click
|
// tree, code, text, view, click
|
||||||
// type, name, data, list
|
// type, name, data, list, style
|
||||||
var kit = this
|
var kit = this
|
||||||
|
|
||||||
subs = subs || {}
|
subs = subs || {}
|
||||||
@ -61,18 +64,61 @@ kit = toolkit = {
|
|||||||
child.data = child.data || {}
|
child.data = child.data || {}
|
||||||
child.type = child.type || "div"
|
child.type = child.type || "div"
|
||||||
|
|
||||||
if (child.button) {
|
if (child.style) {
|
||||||
|
var str = []
|
||||||
|
for (var k in child.style) {
|
||||||
|
str.push(k)
|
||||||
|
str.push(":")
|
||||||
|
str.push(child.style[k] + (typeof child.style[k] == "number"? "px": ""))
|
||||||
|
str.push(";")
|
||||||
|
}
|
||||||
|
child.data["style"] = str.join("")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (child.include) {
|
||||||
|
child.data["src"] = child.include[0]
|
||||||
|
child.data["type"] = "text/javascript"
|
||||||
|
child.include.length > 1 && (child.data["onload"] = child.include[1])
|
||||||
|
child.type = "script"
|
||||||
|
|
||||||
|
} else if (child.require) {
|
||||||
|
child.data["href"] = child.require[0]
|
||||||
|
child.data["rel"] = child.require.length > 1? child.require[1]: "stylesheet"
|
||||||
|
child.data["type"] = child.require.length > 2? child.require[2]: "text/css"
|
||||||
|
child.type = "link"
|
||||||
|
|
||||||
|
} else if (child.styles) {
|
||||||
|
var str = []
|
||||||
|
for (var key in child.styles) {
|
||||||
|
str.push(key)
|
||||||
|
str.push(" {")
|
||||||
|
for (var k in child.styles[key]) {
|
||||||
|
str.push(k)
|
||||||
|
str.push(":")
|
||||||
|
str.push(child.styles[key][k] + (typeof child.styles[key][k] == "number"? "px": ""))
|
||||||
|
str.push(";")
|
||||||
|
}
|
||||||
|
str.push("}\n")
|
||||||
|
}
|
||||||
|
child.data["innerHTML"] = str.join("")
|
||||||
|
child.data["type"] = "text/css"
|
||||||
|
child.type = "style"
|
||||||
|
|
||||||
|
} else if (child.button) {
|
||||||
child.type = "button"
|
child.type = "button"
|
||||||
child.data["innerText"] = child.button[0]
|
child.data["innerText"] = child.button[0]
|
||||||
child.data["onclick"] = child.button[1]
|
child.data["onclick"] = child.button[1]
|
||||||
|
|
||||||
} else if (child.click) {
|
} else if (child.click) {
|
||||||
child.data["onclick"] = child.click[0]
|
child.data["onclick"] = child.click[0]
|
||||||
|
|
||||||
} else if (child.fork) {
|
} else if (child.fork) {
|
||||||
child.type = "li"
|
child.type = "li"
|
||||||
child.list = [
|
child.list = [
|
||||||
{"text": [child.fork[0], "div"]},
|
{"text": [child.fork[0], "div"]},
|
||||||
{"type": "ul", "list": child.fork[1]},
|
{"type": "ul", "list": child.fork[1]},
|
||||||
]
|
]
|
||||||
|
|
||||||
} else if (child.leaf) {
|
} else if (child.leaf) {
|
||||||
child.type = "li"
|
child.type = "li"
|
||||||
child.data["innerText"] = child.leaf[0]
|
child.data["innerText"] = child.leaf[0]
|
||||||
@ -81,15 +127,18 @@ kit = toolkit = {
|
|||||||
child.leaf[1](event, node)
|
child.leaf[1](event, node)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (child.view) {
|
} else if (child.view) {
|
||||||
child.data["className"] = child.view[0]
|
child.data["className"] = child.view[0]
|
||||||
child.type = child.view.length > 1? child.view[1]: "div"
|
child.type = child.view.length > 1? child.view[1]: "div"
|
||||||
child.view.length > 2 && (child.data["innerText"] = child.view[2])
|
child.view.length > 2 && (child.data["innerText"] = child.view[2])
|
||||||
child.view.length > 3 && (child.name = child.view[3])
|
child.view.length > 3 && (child.name = child.view[3])
|
||||||
|
|
||||||
} else if (child.text) {
|
} else if (child.text) {
|
||||||
child.data["innerText"] = child.text[0]
|
child.data["innerText"] = child.text[0]
|
||||||
child.type = child.text.length > 1? child.text[1]: "pre"
|
child.type = child.text.length > 1? child.text[1]: "pre"
|
||||||
child.text.length > 2 && (child.data["className"] = child.text[2])
|
child.text.length > 2 && (child.data["className"] = child.text[2])
|
||||||
|
|
||||||
} else if (child.code) {
|
} else if (child.code) {
|
||||||
child.type = "code"
|
child.type = "code"
|
||||||
child.list = [{"type": "pre" ,"data": {"innerText": child.code[0]}, "name": child.code[1]}]
|
child.list = [{"type": "pre" ,"data": {"innerText": child.code[0]}, "name": child.code[1]}]
|
||||||
@ -99,6 +148,7 @@ kit = toolkit = {
|
|||||||
var node = kit.CreateNode(child.type, child.data)
|
var node = kit.CreateNode(child.type, child.data)
|
||||||
child.list && kit.AppendChild(node, child.list, subs)
|
child.list && kit.AppendChild(node, child.list, subs)
|
||||||
child.name && (subs[child.name] = node)
|
child.name && (subs[child.name] = node)
|
||||||
|
subs.field || (subs.field = node)
|
||||||
parent.append(node)
|
parent.append(node)
|
||||||
})
|
})
|
||||||
return subs
|
return subs
|
||||||
@ -109,6 +159,9 @@ kit = toolkit = {
|
|||||||
return parent.insertBefore(elm, position || parent.firstElementChild)
|
return parent.insertBefore(elm, position || parent.firstElementChild)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
AppendStyle: function(parent, style) {
|
||||||
|
return node
|
||||||
|
},
|
||||||
AppendTable: function(table, data, fields, cb) {
|
AppendTable: function(table, data, fields, cb) {
|
||||||
if (!data || !fields) {
|
if (!data || !fields) {
|
||||||
return
|
return
|
||||||
@ -227,20 +280,20 @@ kit = toolkit = {
|
|||||||
kit.CopyText()
|
kit.CopyText()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
OrderForm: function(page, form, append, result) {
|
OrderForm: function(page, field, option, append, result) {
|
||||||
if (!form) {return}
|
if (!option) {return}
|
||||||
form.onactions = form.onactions || function(msg) {
|
option.ondaemon = option.ondaemon || function(msg) {
|
||||||
if (!msg) {return}
|
|
||||||
append.innerHTML = ""
|
append.innerHTML = ""
|
||||||
kit.AppendTable(append, ctx.Table(msg), msg.append)
|
msg && msg.append && kit.AppendTable(append, ctx.Table(msg), msg.append, function(value, key, row, index, event) {
|
||||||
result.innerHTML = ""
|
typeof option.daemon_action[key] == "function" && option.daemon_action[key](value, key, row, index, event)
|
||||||
result.innerText = msg.result.join("")
|
})
|
||||||
|
result && (result.innerText = (msg && msg.result)? msg.result.join(""): "")
|
||||||
}
|
}
|
||||||
|
|
||||||
form.querySelectorAll("select").forEach(function(select, index, array) {
|
option.querySelectorAll("select").forEach(function(select, index, array) {
|
||||||
select.onchange = function(event) {
|
select.onchange = select.onchange || function(event) {
|
||||||
if (index == array.length-1) {
|
if (index == array.length-1) {
|
||||||
page.Runs(page, form)
|
page.Runs(page, option)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (array[index+1].type == "button") {
|
if (array[index+1].type == "button") {
|
||||||
@ -250,17 +303,17 @@ kit = toolkit = {
|
|||||||
array[index+1].focus()
|
array[index+1].focus()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
form.querySelectorAll("input").forEach(function(input, index, array) {
|
option.querySelectorAll("input").forEach(function(input, index, array) {
|
||||||
switch (input.type) {
|
switch (input.type) {
|
||||||
case "button":
|
case "button":
|
||||||
input.onclick = function(event) {
|
input.onclick = input.onclick || function(event) {
|
||||||
if (index == array.length-1) {
|
if (index == array.length-1) {
|
||||||
if (input.value == "login") {
|
if (input.value == "login") {
|
||||||
form.onactions = function(msg) {
|
option.ondaemon = function(msg) {
|
||||||
page.reload()
|
page.reload()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
page.Runs(page, form)
|
page.Runs(page, option)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (array[index+1].type == "button") {
|
if (array[index+1].type == "button") {
|
||||||
@ -270,12 +323,12 @@ kit = toolkit = {
|
|||||||
array[index+1].focus()
|
array[index+1].focus()
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
input.onkeyup = function(event) {
|
input.onkeyup = input.onkeyup || function(event) {
|
||||||
if (event.key != "Enter") {
|
if (event.key != "Enter") {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (index == array.length-1) {
|
if (index == array.length-1) {
|
||||||
page.Runs(page, form)
|
page.Runs(page, option)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (array[index+1].type == "button") {
|
if (array[index+1].type == "button") {
|
||||||
@ -291,7 +344,6 @@ kit = toolkit = {
|
|||||||
CopyText: function(text) {
|
CopyText: function(text) {
|
||||||
text = window.getSelection().toString()
|
text = window.getSelection().toString()
|
||||||
if (text == "") {return}
|
if (text == "") {return}
|
||||||
kit.Log(text)
|
|
||||||
kit.History.add("txt", text)
|
kit.History.add("txt", text)
|
||||||
document.execCommand("copy")
|
document.execCommand("copy")
|
||||||
},
|
},
|
||||||
@ -309,6 +361,52 @@ kit = toolkit = {
|
|||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
|
|
||||||
|
ScrollPage: function(event, conf) {
|
||||||
|
switch (event.key) {
|
||||||
|
case "h":
|
||||||
|
if (event.ctrlKey) {
|
||||||
|
window.scrollBy(-conf.scroll_x*10, 0)
|
||||||
|
} else {
|
||||||
|
window.scrollBy(-conf.scroll_x, 0)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case "H":
|
||||||
|
window.scrollBy(-document.body.scrollWidth, 0)
|
||||||
|
break
|
||||||
|
case "l":
|
||||||
|
if (event.ctrlKey) {
|
||||||
|
window.scrollBy(conf.scroll_x*10, 0)
|
||||||
|
} else {
|
||||||
|
window.scrollBy(conf.scroll_x, 0)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case "L":
|
||||||
|
window.scrollBy(document.body.scrollWidth, 0)
|
||||||
|
break
|
||||||
|
case "j":
|
||||||
|
if (event.ctrlKey) {
|
||||||
|
window.scrollBy(0, conf.scroll_y*10)
|
||||||
|
} else {
|
||||||
|
window.scrollBy(0, conf.scroll_y)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case "J":
|
||||||
|
window.scrollBy(0, document.body.scrollHeight)
|
||||||
|
break
|
||||||
|
case "k":
|
||||||
|
if (event.ctrlKey) {
|
||||||
|
window.scrollBy(0, -conf.scroll_y*10)
|
||||||
|
} else {
|
||||||
|
window.scrollBy(0, -conf.scroll_y)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case "K":
|
||||||
|
window.scrollBy(0, -document.body.scrollHeight)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
function right(arg) {
|
function right(arg) {
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
<meta name="{{index $meta "name"}}" content="{{index $meta "content"}}">
|
<meta name="{{index $meta "name"}}" content="{{index $meta "content"}}">
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
<title>{{option . "componet_name"|meta}}</title>
|
<title>{{options . "componet_name"}}</title>
|
||||||
<link rel="shortcut icon" type="image/ico" href="/static/librarys/{{option . "favicon"|meta}}">
|
<link rel="shortcut icon" type="image/ico" href="/static/librarys/{{options . "favicon"}}">
|
||||||
{{range $index, $lib := option . "styles"}}
|
{{range $index, $lib := option . "styles"}}
|
||||||
<link rel="stylesheet" type="text/css" href="/static/librarys/{{$lib}}"></link>
|
<link rel="stylesheet" type="text/css" href="/static/librarys/{{$lib}}"></link>
|
||||||
{{end}}
|
{{end}}
|
||||||
@ -21,19 +21,19 @@
|
|||||||
</script>
|
</script>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{define "toolkit"}}
|
{{define "toolkit"}}
|
||||||
<fieldset class="{{option . "componet_view"|meta}}" data-init="{{option . "componet_init"|meta}}">
|
<fieldset class="{{options . "componet_view"}}" data-init="{{options . "componet_init"}}">
|
||||||
<div>{{option .Meta "name"}}({{option .Meta "help"}})</div>
|
<div>{{options . "componet_name"}}({{options . "componet_help"}})</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{define "componet"}}
|
{{define "componet"}}
|
||||||
<fieldset class="{{option . "componet_view"|meta}}" data-init="{{option . "componet_init"|meta}}">
|
<fieldset class="{{options . "componet_view"}}" data-init="{{options . "componet_init"}}">
|
||||||
<legend title="{{option .Meta "help"}}">{{option .Meta "name"}}({{option .Meta "help"}})</legend>
|
<legend title="{{options . "componet_help"}}">{{options . "componet_name"}}({{options . "componet_help"}})</legend>
|
||||||
{{$msg := .}} {{$form_type := option . "form_type"|meta}}
|
{{$msg := .}}
|
||||||
|
|
||||||
<form class="option {{option .Meta "componet_name"}}"
|
<form class="option {{options . "componet_name"}}"
|
||||||
data-componet_group="{{option . "componet_group"|meta}}"
|
data-componet_group="{{options . "componet_group"}}"
|
||||||
data-componet_name="{{option . "componet_name"|meta}}"
|
data-componet_name="{{options . "componet_name"}}"
|
||||||
{{if eq $form_type "upload"}}
|
{{$form_type := options . "form_type"}} {{if eq $form_type "upload"}}
|
||||||
method="POST" action="/upload" enctype="multipart/form-data" target="_blank"
|
method="POST" action="/upload" enctype="multipart/form-data" target="_blank"
|
||||||
{{end}}>
|
{{end}}>
|
||||||
|
|
||||||
@ -72,8 +72,8 @@
|
|||||||
<hr/>
|
<hr/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{{if index .Meta "display_append"}} {{option .Meta "display_append"}} {{else}}
|
{{if index .Meta "display_append"}} {{options . "display_append"}} {{else}}
|
||||||
<table class="append {{option .Meta "componet_name"}}"> {{$msg := .}}
|
<table class="append {{options . "componet_name"}}"> {{$msg := .}}
|
||||||
<tr>{{range $field := append .}}<th>{{$field}}</th>{{end}}</tr>
|
<tr>{{range $field := append .}}<th>{{$field}}</th>{{end}}</tr>
|
||||||
{{range $line := table .}}
|
{{range $line := table .}}
|
||||||
<tr>{{range $field := append $msg}}<td>{{index $line $field|unescape}}</td>{{end}}</tr>
|
<tr>{{range $field := append $msg}}<td>{{index $line $field|unescape}}</td>{{end}}</tr>
|
||||||
@ -81,12 +81,12 @@
|
|||||||
</table>
|
</table>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
{{if index .Meta "display_result"}} {{option .Meta "display_result"}} {{else}}
|
{{if index .Meta "display_result"}} {{options . "display_result"}} {{else}}
|
||||||
<code class="result {{option .Meta "componet_name"}}"><pre>{{result .Meta}}</pre></code>
|
<code class="result {{options . "componet_name"}}"><pre>{{result .Meta}}</pre></code>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
{{if index .Meta "display_div"}} {{option .Meta "display_div"}} {{else}}
|
{{if index .Meta "display_div"}} {{options . "display_div"}} {{else}}
|
||||||
<div class="result {{option .Meta "componet_name"}}"></div>
|
<div class="result {{options . "componet_name"}}"></div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user