From b78966474069295442a1a0c9358ac1151cba492f Mon Sep 17 00:00:00 2001 From: shaoying Date: Tue, 29 Dec 2020 20:57:25 +0800 Subject: [PATCH] add pushsearch --- base/web/space.go | 25 ++----------------------- misc.go | 26 ++++++++++++++++++++++++++ misc/alpha/alpha.go | 13 +++++++++---- 3 files changed, 37 insertions(+), 27 deletions(-) diff --git a/base/web/space.go b/base/web/space.go index 59fc1cc1..8d8d2a13 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -172,30 +172,9 @@ func _space_handle(m *ice.Message, safe bool, send map[string]*ice.Message, c *w return false } func _space_search(m *ice.Message, kind, name, text string, arg ...string) { - fields := kit.Split(m.Option(mdb.FIELDS)) m.Richs(SPACE, nil, kit.MDB_FOREACH, func(key string, val map[string]interface{}) { - val = kit.GetMeta(val) - for _, k := range fields { - switch k { - case kit.SSH_POD: - m.Push(k, m.Option(ice.MSG_USERPOD)) - case kit.SSH_CTX: - m.Push(k, m.Prefix()) - case kit.SSH_CMD: - m.Push(k, SPACE) - case kit.MDB_TIME: - m.Push(k, m.Time()) - case kit.MDB_SIZE: - m.Push(k, "") - case kit.MDB_TYPE: - m.Push(k, val[kit.MDB_TYPE]) - case kit.MDB_NAME: - m.Push(k, val[kit.MDB_NAME]) - case kit.MDB_TEXT: - m.Push(k, val[kit.MDB_TEXT]) - default: - m.Push(k, "") - } + if val = kit.GetMeta(val); strings.Contains(kit.Format(val["name"]), name) { + m.PushSearch("cmd", SPACE, val) } }) } diff --git a/misc.go b/misc.go index da211bce..e02a0f6a 100644 --- a/misc.go +++ b/misc.go @@ -110,6 +110,32 @@ func (m *Message) PushAction(list ...interface{}) { m.PushRender(kit.MDB_ACTION, kit.MDB_BUTTON, strings.Join(kit.Simple(list...), ",")) }) } +func (m *Message) PushSearch(args ...interface{}) *Message { + data := kit.Dict(args...) + for _, k := range kit.Split(m.Option("fields")) { + switch k { + case kit.SSH_POD: + m.Push(k, kit.Select(m.Option(MSG_USERPOD), data[kit.SSH_POD])) + case kit.SSH_CTX: + m.Push(k, m.Prefix()) + case kit.SSH_CMD: + m.Push(k, data[kit.SSH_CMD]) + case kit.MDB_TIME: + m.Push(k, m.Time()) + case kit.MDB_SIZE: + m.Push(k, "") + case kit.MDB_TYPE: + m.Push(k, data[kit.MDB_TYPE]) + case kit.MDB_NAME: + m.Push(k, data[kit.MDB_NAME]) + case kit.MDB_TEXT: + m.Push(k, data[kit.MDB_TEXT]) + default: + m.Push(k, data[k]) + } + } + return m +} func (m *Message) SortStr(key string) { m.Sort(key, "str") } func (m *Message) SortStrR(key string) { m.Sort(key, "str_r") } diff --git a/misc/alpha/alpha.go b/misc/alpha/alpha.go index b83a07c7..bb6240e8 100644 --- a/misc/alpha/alpha.go +++ b/misc/alpha/alpha.go @@ -26,9 +26,7 @@ func _alpha_find(m *ice.Message, method, word string) *ice.Message { if value["word"] == "" { return } - for _, k := range []string{"id", "word", "translation", "definition"} { - m.Push(k, value[k]) - } + m.PushSearch("cmd", ALPHA, "type", method, "name", value["word"], "text", value["translation"], value) }) return m } @@ -66,14 +64,21 @@ var Index = &ice.Context{Name: ALPHA, Help: "英汉词典", )}, }, Commands: map[string]*ice.Command{ - ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() }}, + ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + m.Cmd(mdb.SEARCH, mdb.CREATE, ALPHA, m.Prefix(ALPHA)) + m.Load() + }}, ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }}, ALPHA: {Name: "alpha method=word,line word auto", Help: "英汉", Action: map[string]*ice.Action{ mdb.IMPORT: {Name: "import file=usr/word-dict/ecdict name", Help: "加载词库", Hand: func(m *ice.Message, arg ...string) { _alpha_load(m, m.Option(kit.MDB_FILE), kit.Select(path.Base(m.Option(kit.MDB_FILE)), m.Option(kit.MDB_NAME))) }}, + mdb.SEARCH: {Name: "search type name text", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { + _alpha_find(m, kit.Select("word", arg, 2), arg[1]) + }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + m.Option(mdb.FIELDS, "id,word,translation,definition") _alpha_find(m, arg[0], arg[1]) }}, },