From 7ae17111d8eaccb5268579b1a0e8206f9d88b521 Mon Sep 17 00:00:00 2001 From: shaoying Date: Fri, 25 Sep 2020 00:44:04 +0800 Subject: [PATCH] opt chat --- base/mdb/mdb.go | 6 ++- core/chat/chat.go | 4 +- core/chat/location.go | 71 ++++++++++---------------------- core/chat/paste.go | 3 +- core/chat/qrcode.go | 94 ++++++++++--------------------------------- core/chat/river.go | 3 ++ 6 files changed, 54 insertions(+), 127 deletions(-) diff --git a/base/mdb/mdb.go b/base/mdb/mdb.go index 2e0715f6..4846e37e 100644 --- a/base/mdb/mdb.go +++ b/base/mdb/mdb.go @@ -118,7 +118,11 @@ func _hash_inputs(m *ice.Message, prefix, chain string, field, value string) { if val[kit.MDB_META] != nil { val = val[kit.MDB_META].(map[string]interface{}) } - list[kit.Format(val[field])]++ + if field == kit.MDB_HASH { + list[key]++ + } else { + list[kit.Format(val[field])]++ + } }) for k, i := range list { m.Push(field, k) diff --git a/core/chat/chat.go b/core/chat/chat.go index a7222f42..969d7abd 100644 --- a/core/chat/chat.go +++ b/core/chat/chat.go @@ -31,9 +31,7 @@ var Index = &ice.Context{Name: CHAT, Help: "聊天中心", m.Watch(web.SPACE_START, m.Prefix(NODE)) m.Watch(web.SPACE_CLOSE, m.Prefix(NODE)) }}, - ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Save(RIVER) - }}, + ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }}, }, } diff --git a/core/chat/location.go b/core/chat/location.go index 53ef4409..21f62934 100644 --- a/core/chat/location.go +++ b/core/chat/location.go @@ -27,44 +27,23 @@ const ( const LOCATION = "location" func init() { - Index.Register(&ice.Context{Name: LOCATION, Help: "地理位置", + Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ - LOCATION: {Name: "location", Help: "地理位置", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)}, + LOCATION: {Name: LOCATION, Help: "地理位置", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)}, }, Commands: map[string]*ice.Command{ - ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Load(LOCATION) - m.Cmd(mdb.SEARCH, mdb.CREATE, LOCATION, m.Prefix(LOCATION)) - m.Cmd(mdb.RENDER, mdb.CREATE, LOCATION, m.Prefix(LOCATION)) - }}, - ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save(LOCATION) }}, - - LOCATION: {Name: "location text auto 添加:button", Help: "地理位置", Action: map[string]*ice.Action{ - mdb.INSERT: {Hand: func(m *ice.Message, arg ...string) { - m.Conf(LOCATION, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT) - - h := m.Rich(LOCATION, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM)), kit.Dict( - kit.MDB_TYPE, arg[0], kit.MDB_NAME, arg[1], kit.MDB_TEXT, arg[2], - LONGITUDE, arg[3], LATITUDE, arg[4], - )) - m.Log_INSERT(LOCATION, arg[2]) - m.Echo(h) + LOCATION: {Name: "location text auto 添加@location", Help: "地理位置", Action: map[string]*ice.Action{ + mdb.CREATE: {Name: "insert type name text latitude longitude", Help: "添加", Hand: func(m *ice.Message, arg ...string) { + m.Conf(LOCATION, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT) + m.Cmdy(mdb.INSERT, LOCATION, m.Option(ice.MSG_DOMAIN), mdb.HASH, arg) }}, mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { - m.Richs(LOCATION, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM)), m.Option(kit.MDB_TEXT), func(key string, value map[string]interface{}) { - if arg[0] == kit.MDB_TEXT { - return - } - m.Log_MODIFY(PASTE, m.Option(kit.MDB_TEXT)) - value[arg[0]] = arg[1] - }) + m.Cmdy(mdb.MODIFY, LOCATION, m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH), arg) }}, mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { - m.Richs(LOCATION, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM)), m.Option(kit.MDB_TEXT), func(key string, value map[string]interface{}) { - m.Log_REMOVE(LOCATION, m.Option(kit.MDB_TEXT)) - m.Conf(LOCATION, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM), kit.MDB_HASH, key), "") - }) + m.Cmdy(mdb.DELETE, LOCATION, m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_TEXT, m.Option(kit.MDB_TEXT)) }}, + mdb.SEARCH: {Name: "search type name text", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { m.Richs(LOCATION, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM)), kit.MDB_FOREACH, func(key string, value map[string]interface{}) { if strings.Contains(kit.Format(value[kit.MDB_NAME]), arg[1]) || @@ -86,27 +65,21 @@ func init() { "https://map.baidu.com/search/%s/@12958750.085,4825785.55,16z?querytype=s&da_src=shareurl&wd=%s", arg[2], arg[2])) }}, + + mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(mdb.INPUTS, LOCATION, m.Option(ice.MSG_DOMAIN), mdb.HASH, arg) + }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Richs(LOCATION, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM)), kit.Select(kit.MDB_FOREACH, arg, 0), func(key string, value map[string]interface{}) { - if len(arg) == 0 { - m.Push(key, value, []string{kit.MDB_TIME, kit.MDB_TYPE, kit.MDB_NAME, kit.MDB_TEXT, - LONGITUDE, LATITUDE}) - m.Debug(m.Option(ice.MSG_USERUA)) - if strings.Contains(m.Option(ice.MSG_USERUA), "MicroMessenger") { - return - } - m.Push("action", m.Cmdx(mdb.RENDER, web.RENDER.Button, "删除")) - loc := m.Cmdx(mdb.RENDER, web.RENDER.A, "百度地图", kit.Format( - "https://map.baidu.com/search/%s/@12958750.085,4825785.55,16z?querytype=s&da_src=shareurl&wd=%s", - url.QueryEscape(kit.Format(value[kit.MDB_TEXT])), - url.QueryEscape(kit.Format(value[kit.MDB_TEXT])), - )) - m.Push("location", loc) - return - } - m.Push("detail", value) + m.Option(mdb.FIELDS, "time,type,name,text,longitude,latitude") + m.Cmdy(mdb.SELECT, LOCATION, m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_HASH, arg) + m.Table(func(index int, value map[string]string, head []string) { + m.PushRender(kit.MDB_LINK, "a", "百度地图", kit.Format( + "https://map.baidu.com/search/%s/@12958750.085,4825785.55,16z?querytype=s&da_src=shareurl&wd=%s", + url.QueryEscape(kit.Format(value[kit.MDB_TEXT])), + url.QueryEscape(kit.Format(value[kit.MDB_TEXT])), + )) }) - m.Sort("time", "time_r") + m.PushAction("删除") }}, }, }, nil) diff --git a/core/chat/paste.go b/core/chat/paste.go index 3fee1244..673214e3 100644 --- a/core/chat/paste.go +++ b/core/chat/paste.go @@ -15,8 +15,9 @@ func init() { PASTE: {Name: PASTE, Help: "粘贴板", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)}, }, Commands: map[string]*ice.Command{ - PASTE: {Name: "paste hash auto 添加 导出 导入", Help: "粘贴板", Action: map[string]*ice.Action{ + PASTE: {Name: "paste hash auto 添加@paste", Help: "粘贴板", Action: map[string]*ice.Action{ mdb.INSERT: {Name: "insert text:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) { + m.Conf(PASTE, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT) m.Cmdy(mdb.INSERT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg) }}, mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) { diff --git a/core/chat/qrcode.go b/core/chat/qrcode.go index e6cc31b9..039937ab 100644 --- a/core/chat/qrcode.go +++ b/core/chat/qrcode.go @@ -3,90 +3,38 @@ package chat import ( ice "github.com/shylinux/icebergs" "github.com/shylinux/icebergs/base/mdb" - "github.com/shylinux/icebergs/base/web" + "github.com/shylinux/icebergs/core/wiki" kit "github.com/shylinux/toolkits" - - "strings" ) -const ( - QRCODE = "qrcode" -) +const QRCODE = "qrcode" func init() { - Index.Register(&ice.Context{Name: QRCODE, Help: "二维码", + Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ - QRCODE: {Name: "qrcode", Help: "二维码", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)}, + QRCODE: {Name: QRCODE, Help: "二维码", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)}, }, Commands: map[string]*ice.Command{ - ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Load(QRCODE) - m.Cmd(mdb.SEARCH, mdb.CREATE, QRCODE, m.Prefix(QRCODE)) - m.Cmd(mdb.RENDER, mdb.CREATE, QRCODE, m.Prefix(QRCODE)) - }}, - ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Save(QRCODE) - }}, - - QRCODE: {Name: "qrcode text auto 添加:button", Help: "二维码", Action: map[string]*ice.Action{ - mdb.INSERT: {Hand: func(m *ice.Message, arg ...string) { - m.Conf(QRCODE, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT) - - h := m.Rich(QRCODE, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM)), kit.Dict( - kit.MDB_TYPE, arg[0], kit.MDB_NAME, arg[1], kit.MDB_TEXT, arg[2], - )) - m.Log_INSERT(QRCODE, arg[2]) - m.Echo(h) + QRCODE: {Name: "qrcode hash auto 添加@scan", Help: "二维码", Action: map[string]*ice.Action{ + mdb.INSERT: {Name: "insert text:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) { + m.Conf(QRCODE, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT) + m.Cmdy(mdb.INSERT, m.Prefix(QRCODE), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg) }}, - mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { - m.Richs(QRCODE, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM)), m.Option(kit.MDB_TEXT), func(key string, value map[string]interface{}) { - if arg[0] == kit.MDB_TEXT { - return - } - m.Log_MODIFY(PASTE, m.Option(kit.MDB_TEXT)) - value[arg[0]] = arg[1] - }) - }}, - mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { - m.Richs(QRCODE, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM)), m.Option(kit.MDB_TEXT), func(key string, value map[string]interface{}) { - m.Log_REMOVE(QRCODE, m.Option(kit.MDB_TEXT)) - m.Conf(QRCODE, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM), kit.MDB_HASH, key), "") - }) - }}, - mdb.SEARCH: {Name: "search type name text", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { - m.Richs(QRCODE, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM)), kit.MDB_FOREACH, func(key string, value map[string]interface{}) { - if strings.Contains(kit.Format(value[kit.MDB_NAME]), arg[1]) || - strings.Contains(kit.Format(value[kit.MDB_TEXT]), arg[1]) { - - m.Push("pod", m.Option("pod")) - m.Push("ctx", m.Cap(ice.CTX_FOLLOW)) - m.Push("cmd", QRCODE) - m.Push(kit.MDB_TIME, value["time"]) - m.Push(kit.MDB_SIZE, value["size"]) - m.Push(kit.MDB_TYPE, QRCODE) - m.Push(kit.MDB_NAME, value["name"]) - m.Push(kit.MDB_TEXT, value["text"]) - } - }) - }}, - mdb.RENDER: {Name: "render type name text", Help: "渲染", Hand: func(m *ice.Message, arg ...string) { - m.Echo(m.Cmdx("web.wiki.image", "qrcode", arg[2])) + mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(mdb.DELETE, m.Prefix(QRCODE), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_TEXT, m.Option(kit.MDB_TEXT)) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Richs(QRCODE, kit.Keys(kit.MDB_META, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM)), kit.Select(kit.MDB_FOREACH, arg, 0), func(key string, value map[string]interface{}) { - if len(arg) == 0 { - m.Push(key, value, []string{kit.MDB_TIME, kit.MDB_TYPE, kit.MDB_NAME, kit.MDB_TEXT}) - if strings.Contains(m.Option(ice.MSG_USERUA), "MicroMessenger") { - return - } - m.Push("action", m.Cmdx(mdb.RENDER, web.RENDER.Button, "删除")) - img := m.Cmdx("web.wiki.image", "qrcode", value[kit.MDB_TEXT]) - m.Push("qrcode", img) - return - } - m.Push("detail", value) - }) - m.Sort("time", "time_r") + if len(arg) > 0 { + text := m.Cmd(mdb.SELECT, m.Prefix(QRCODE), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_HASH, arg[0]).Append(kit.MDB_TEXT) + m.Cmdy(wiki.SPARK, "inner", text) + m.Cmdy(wiki.IMAGE, "qrcode", text) + m.Render("") + return + } + + m.Cmdy(mdb.SELECT, m.Prefix(QRCODE), m.Option(ice.MSG_DOMAIN), mdb.HASH) + m.Sort(kit.MDB_TIME, "time_r") + m.PushAction("删除") }}, }, }, nil) diff --git a/core/chat/river.go b/core/chat/river.go index f0fbcb4c..35f5a10b 100644 --- a/core/chat/river.go +++ b/core/chat/river.go @@ -245,6 +245,9 @@ func init() { mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(mdb.IMPORT, RIVER, "", mdb.HASH) }}, + mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(mdb.INPUTS, RIVER, "", mdb.HASH, arg) + }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Cmdy(mdb.SELECT, RIVER, "", mdb.HASH, kit.MDB_HASH, arg) m.PushAction("删除")