1
0
mirror of https://shylinux.com/x/icebergs synced 2025-05-01 19:19:24 +08:00

add pushsearch

This commit is contained in:
shaoying 2020-12-29 20:57:25 +08:00
parent 9e8c89d1f9
commit b789664740
3 changed files with 37 additions and 27 deletions

View File

@ -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)
}
})
}

26
misc.go
View File

@ -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") }

View File

@ -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])
}},
},