From ab7ab6eb197dfb8b6ee7cd5e29066d1145233e8e Mon Sep 17 00:00:00 2001 From: harveyshao Date: Mon, 24 Jan 2022 17:29:25 +0800 Subject: [PATCH] opt vimer --- base/web/dream.go | 10 ++++--- base/web/share.go | 6 ++-- core/chat/website.go | 18 ++++++++++-- core/code/inner.go | 4 ++- core/code/template.go | 67 +++++++++++++++++++++++++++++++++++++------ misc.go | 5 ++-- 6 files changed, 91 insertions(+), 19 deletions(-) diff --git a/base/web/dream.go b/base/web/dream.go index 0c3b8f05..a2c60ca6 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -26,7 +26,7 @@ func _dream_list(m *ice.Message) *ice.Message { m.Push(cli.STATUS, cli.STOP) m.PushButton(cli.START) } - m.Push(mdb.LINK, kit.MergePOD(m.Option(ice.MSG_USERWEB), value[mdb.NAME])) + m.Push(mdb.LINK, strings.Split(kit.MergePOD(m.Option(ice.MSG_USERWEB), value[mdb.NAME]), "?")[0]) }) } func _dream_show(m *ice.Message, name string) { @@ -102,14 +102,16 @@ func init() { _dream_show(m, m.Option(mdb.NAME, kit.Select(path.Base(m.Option(nfs.REPOS)), m.Option(mdb.NAME)))) }}, DREAM_STOP: {Name: "dream.stop type name", Help: "停止", Hand: func(m *ice.Message, arg ...string) { - if m.Cmd(DREAM, m.Option(mdb.NAME)).Length() > 0 { + if m.Cmd(SPACE, m.Option(mdb.NAME)).Append(mdb.STATUS) == cli.STOP { m.Cmdy(SPACE, mdb.REMOVE, m.OptionSimple(mdb.NAME)) - m.Cmd(DREAM, cli.START, m.OptionSimple(mdb.NAME)) + return } + m.Cmdy(SPACE, mdb.REMOVE, m.OptionSimple(mdb.NAME)) + m.Sleep("1s", DREAM, cli.START, m.OptionSimple(mdb.NAME)) }}, cli.STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(SPACE, mdb.MODIFY, m.OptionSimple(mdb.NAME), mdb.STATUS, cli.STOP) m.Cmdy(SPACE, m.Option(mdb.NAME), "exit", "0") - m.Cmdy(SPACE, mdb.REMOVE, m.OptionSimple(mdb.NAME)) }}, mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { _dream_list(m).Cut("name,status,time") diff --git a/base/web/share.go b/base/web/share.go index a9962d9b..29c388c4 100644 --- a/base/web/share.go +++ b/base/web/share.go @@ -104,8 +104,8 @@ const ( SHARE_PROXY = "/share/proxy/" SHARE_LOCAL = "/share/local/" - SHARE_LOCAL_AVATAR = "/share/local/avatar" - SHARE_LOCAL_BACKGROUND = "/share/local/background" + SHARE_LOCAL_AVATAR = "/share/local/avatar/" + SHARE_LOCAL_BACKGROUND = "/share/local/background/" ) const SHARE = "share" @@ -182,6 +182,8 @@ func init() { _share_local(m, arg...) }}, SHARE_LOCAL_AVATAR: {Name: "avatar", Help: "头像", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + // RenderType(m.W, "", "image/svg+xml") + // m.RenderResult(`hello`) m.RenderDownload(strings.TrimPrefix(m.Cmd(aaa.USER, m.Option(ice.MSG_USERNAME)).Append(aaa.AVATAR), SHARE_LOCAL)) }}, SHARE_LOCAL_BACKGROUND: {Name: "background", Help: "壁纸", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { diff --git a/core/chat/website.go b/core/chat/website.go index 3e53e37f..767ea0af 100644 --- a/core/chat/website.go +++ b/core/chat/website.go @@ -2,6 +2,7 @@ package chat import ( "net/http" + "os" "path" "strings" @@ -130,8 +131,21 @@ func init() { }) }}, }, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - mdb.HashSelect(m, arg...).Table(func(index int, value map[string]string, head []string) { - m.PushAnchor(m.MergeURL2(value[nfs.PATH])) + if mdb.HashSelect(m, arg...); len(arg) == 0 { + dir := "src/website/" + m.Cmd(nfs.DIR, dir, func(f os.FileInfo, p string) { + m.Push("", kit.Dict( + mdb.TIME, f.ModTime().Format(ice.MOD_TIME), + nfs.PATH, ice.PS+strings.TrimPrefix(p, dir), + mdb.TYPE, kit.Ext(p), + mdb.NAME, path.Base(p), + mdb.TEXT, m.Cmdx(nfs.CAT, p), + ), kit.Split(m.Config(mdb.FIELD))) + m.PushButton("") + }) + } + m.Table(func(index int, value map[string]string, head []string) { + m.PushAnchor(strings.Split(m.MergeURL2(value[nfs.PATH]), "?")[0]) }) if m.Length() == 0 && len(arg) > 0 { m.Push(mdb.TEXT, m.Cmdx(nfs.CAT, path.Join("src/website", path.Join(arg...)))) diff --git a/core/code/inner.go b/core/code/inner.go index ad572d15..b78e9904 100644 --- a/core/code/inner.go +++ b/core/code/inner.go @@ -163,8 +163,10 @@ func init() { return } arg[1] = strings.Split(arg[1], ice.FS)[0] + if m.Option(ice.POD) == "" { + m.Option("plug", "web.chat.website,web.dream") + } m.Option("exts", "inner/search.js?a=1,inner/favor.js,inner/template.js") - m.Option("plug", "web.chat.website,web.dream") if _inner_list(m, kit.Ext(arg[1]), arg[1], arg[0]); m.IsErrNotFound() { m.SetResult("") } diff --git a/core/code/template.go b/core/code/template.go index 09fe3d59..92602bda 100644 --- a/core/code/template.go +++ b/core/code/template.go @@ -6,21 +6,72 @@ import ( ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" + kit "shylinux.com/x/toolkits" ) func init() { const TEMPLATE = "template" Index.Merge(&ice.Context{Commands: map[string]*ice.Command{ - TEMPLATE: {Name: "template name auto create", Help: "模板", Action: ice.MergeAction( - map[string]*ice.Action{ - mdb.CREATE: {Name: "create type name text args", Help: "创建"}, - nfs.DEFS: {Name: "defs file", Help: "生成", Hand: func(m *ice.Message, arg ...string) { - m.Cmd(nfs.DEFS, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)), m.Option(mdb.TEXT)) - }}, - }, mdb.HashAction(mdb.SHORT, "name", mdb.FIELD, "time,type,name,text,args"), - ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + TEMPLATE: {Name: "template name auto create", Help: "模板", Action: ice.MergeAction(map[string]*ice.Action{ + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { + m.Cmd(TEMPLATE, mdb.CREATE, kit.SimpleKV("", "txt", "网站索引", ` +hi + hi + cli.qrcode + cli.system + cli.runtime + +`)) + m.Cmd(TEMPLATE, mdb.CREATE, kit.SimpleKV("", "js", "前端模块", `Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) { + can.onmotion.clear(can) + can.onappend.table(can, msg) + can.onappend.board(can, msg) +}})`)) + m.Cmd(TEMPLATE, mdb.CREATE, kit.SimpleKV("", "go", "后端模块", `package {{.Option "zone"}} + +import ( + "shylinux.com/x/ice" +) + +type {{.Option "name"}} struct { + ice.{{.Option "type"}} + + list string {{.Option "tags"}} +} + +func (h {{.Option "name"}}) List(m *ice.Message, arg ...string) { + h.{{.Option "type"}}.List(m, arg...) +} + +func init() { ice.Cmd("{{.Option "key"}}", {{.Option "name"}}{}) } +`), "args", `[ + {"name": "zone", "value": "hi"}, + {"name": "name", "value": "hi"}, + {"name": "key", "value": "web.code.hi.hi"}, + {"name": "type", "values": "Hash,Zone,List"}, + {"name": "tags", "value": "name:\"list hash id auto insert\" help:\"数据\""}, + {"name": "main", "value": "main.go"} +]`) + }}, + mdb.CREATE: {Name: "create type name text args", Help: "创建"}, + nfs.DEFS: {Name: "defs file=hi/hi.go", Help: "生成", Hand: func(m *ice.Message, arg ...string) { + m.Option("tags", "`"+m.Option("tags")+"`") + if buf, err := kit.Render(m.Option(mdb.TEXT), m); !m.Warn(err) { + m.Cmd(nfs.DEFS, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)), string(buf)) + m.Debug("what %v", m.FormatMeta()) + switch kit.Ext(m.Option(nfs.FILE)) { + case GO: + if m.Option(MAIN) != "" && m.Option(mdb.ZONE) != "" { + _autogen_import(m, path.Join(m.Option(nfs.PATH), m.Option(MAIN)), m.Option(mdb.ZONE), _autogen_mod(m, ice.GO_MOD)) + } + } + } + }}, + }, mdb.HashAction(mdb.SHORT, "name", mdb.FIELD, "time,type,name,text,args")), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { mdb.HashSelect(m, arg...) m.PushAction(nfs.DEFS, mdb.REMOVE) + m.Sort("name") + m.Cut("time,action,type,name,text,args") }}}, }) } diff --git a/misc.go b/misc.go index b3eaf212..4895e73c 100644 --- a/misc.go +++ b/misc.go @@ -293,6 +293,7 @@ func (c *Context) _cmd(m *Message, cmd *Command, key string, sub string, h *Acti func (c *Context) split(name string) (list []interface{}) { const ( TEXT = "text" + ARGS = "args" TEXTAREA = "textarea" SELECT = "select" BUTTON = "button" @@ -305,8 +306,8 @@ func (c *Context) split(name string) (list []interface{}) { case "run": item = kit.Dict(TYPE, BUTTON, NAME, "run") list = append(list, item) - case "text": - item = kit.Dict(TYPE, TEXTAREA, NAME, "text") + case "text", "args": + item = kit.Dict(TYPE, TEXTAREA, NAME, ls[i]) list = append(list, item) case "auto": list = append(list, kit.List(TYPE, BUTTON, NAME, "list", ACTION, AUTO)...)