mirror of
https://shylinux.com/x/icebergs
synced 2025-05-01 19:19:24 +08:00
add pushsearch
This commit is contained in:
parent
9e8c89d1f9
commit
b789664740
@ -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
26
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") }
|
||||
|
@ -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])
|
||||
}},
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user