diff --git a/base/mdb/zone.go b/base/mdb/zone.go index 258a2af7..901e70bc 100644 --- a/base/mdb/zone.go +++ b/base/mdb/zone.go @@ -153,7 +153,7 @@ const ( const ZONE = "zone" func ZoneAction(args ...ice.Any) ice.Actions { - return ice.Actions{ice.CTX_INIT: AutoConfig(args...), + return ice.Actions{ice.CTX_INIT: AutoConfig(append([]ice.Any{SHORT, ZONE}, args)...), INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { ZoneInputs(m, arg) }}, CREATE: {Name: "create zone", Help: "创建", Hand: func(m *ice.Message, arg ...string) { ZoneCreate(m, arg) }}, REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { ZoneRemove(m, arg) }}, diff --git a/base/web/option.go b/base/web/option.go index 436d1ddc..e89e0152 100644 --- a/base/web/option.go +++ b/base/web/option.go @@ -111,7 +111,7 @@ func PushPodCmd(m *ice.Message, cmd string, arg ...string) { if value[mdb.NAME] == ice.Info.HostName { break } - m.Cmd(SPACE, value[mdb.NAME], m.Prefix(cmd), arg).Table(func(index int, val ice.Maps, head []string) { + m.Cmd(SPACE, value[mdb.NAME], kit.Select(m.PrefixKey(), cmd), arg).Table(func(index int, val ice.Maps, head []string) { val[ice.POD] = kit.Keys(value[mdb.NAME], val[ice.POD]) m.Push("", val, head) }) diff --git a/core/team/epic.go b/core/team/epic.go index 29c7e216..42e23bed 100644 --- a/core/team/epic.go +++ b/core/team/epic.go @@ -14,13 +14,13 @@ const EPIC = "epic" func init() { Index.MergeCommands(ice.Commands{ EPIC: {Name: "epic hash list create export import", Help: "史记", Actions: ice.MergeActions(ice.Actions{ - mdb.CREATE: {Name: "create time@date type name", Help: "创建"}, - mdb.MODIFY: {Name: "modify hash time@date type name", Help: "编辑"}, - }, mdb.HashAction(mdb.FIELD, "time,hash,type,name,text")), Hand: func(m *ice.Message, arg ...string) { - mdb.HashSelect(m, arg...).SetAppend(mdb.TEXT).Tables(func(value ice.Maps) { + mdb.CREATE: {Name: "create time@date zone name"}, + mdb.MODIFY: {Name: "modify hash time@date zone name"}, + }, mdb.HashAction(mdb.FIELD, "time,hash,zone,name")), Hand: func(m *ice.Message, arg ...string) { + mdb.HashSelect(m, arg...).Tables(func(value ice.Maps) { if span := kit.Time(m.Time()) - kit.Time(value[mdb.TIME]); span > 0 { m.Push(mdb.TEXT, kit.Format(`已经 %v
距 %s
`, - int(time.Duration(span)/time.Hour/24)+1, kit.Split(value[mdb.TIME])[0], + int(time.Duration(span)/time.Hour/24), kit.Split(value[mdb.TIME])[0], )) } else { m.Push(mdb.TEXT, kit.Format(`还有 %v
距 %s
`, diff --git a/core/team/plan.go b/core/team/plan.go index b034705c..ea6722fa 100644 --- a/core/team/plan.go +++ b/core/team/plan.go @@ -7,6 +7,7 @@ import ( "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/web" + "shylinux.com/x/icebergs/base/aaa" kit "shylinux.com/x/toolkits" ) @@ -64,19 +65,25 @@ func init() { Index.MergeCommands(ice.Commands{ PLAN: {Name: "plan scale=week,day,week,month,year,long begin_time@date list", Help: "计划", Actions: ice.MergeActions(ice.Actions{ mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(TODO, mdb.INPUTS, arg) }}, - mdb.INSERT: {Name: "insert zone type=once,step,week name text begin_time@date close_time@date", Help: "添加", Hand: func(m *ice.Message, arg ...string) { + mdb.INSERT: {Name: "insert zone type=once,step,week name text begin_time@date close_time@date", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(TASK, mdb.INSERT, arg) }}, - mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(TASK, mdb.MODIFY, arg) }}, - mdb.EXPORT: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(TASK, mdb.EXPORT) }}, - mdb.IMPORT: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(TASK, mdb.IMPORT) }}, - ice.RUN: {Name: "run", Help: "执行", Hand: func(m *ice.Message, arg ...string) { + mdb.PLUGIN: {Name: "plugin extra.index extra.args", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(TASK, mdb.MODIFY, arg) + }}, + ice.RUN: {Hand: func(m *ice.Message, arg ...string) { m.Option(ice.POD, m.Option("task.pod")) if m.Option("task.pod", ""); ctx.PodCmd(m, m.PrefixKey(), ice.RUN, arg) { return } - m.Cmdy(m.CmdAppend(TASK, arg[0], arg[1], ctx.INDEX), arg[2:]) + if cmd := m.CmdAppend(TASK, kit.Slice(arg, 0, 2), ctx.INDEX); cmd != "" { + m.Cmdy(m.CmdAppend(TASK, arg[0], arg[1], ctx.INDEX), arg[2:]) + } else if aaa.Right(m, arg) { + m.Cmdy(arg) + } }}, + mdb.EXPORT: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(TASK, mdb.EXPORT) }}, + mdb.IMPORT: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(TASK, mdb.IMPORT) }}, }, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) { if len(arg) > 0 && arg[0] == ctx.ACTION { m.Cmdy(TASK, arg) @@ -84,7 +91,8 @@ func init() { } begin_time, end_time := _plan_scope(m, 8, kit.Slice(arg, 0, 2)...) _plan_list(m, begin_time, end_time) - web.PushPodCmd(m, m.CommandKey(), arg...) + web.PushPodCmd(m, "", arg...) + ctx.Toolkit(m, TODO, TASK, EPIC) ctx.DisplayLocal(m, "") }}, }) diff --git a/core/team/task.go b/core/team/task.go index d3467b76..eb3f9d83 100644 --- a/core/team/task.go +++ b/core/team/task.go @@ -58,14 +58,14 @@ const TASK = "task" func init() { Index.MergeCommands(ice.Commands{ TASK: {Name: "task zone id auto insert export import", Help: "任务", Actions: ice.MergeActions(ice.Actions{ - mdb.INSERT: {Name: "insert zone type=once,step,week name text begin_time@date close_time@date", Help: "添加", Hand: func(m *ice.Message, arg ...string) { + mdb.INSERT: {Name: "insert zone type=once,step,week name text begin_time@date close_time@date", Hand: func(m *ice.Message, arg ...string) { mdb.ZoneInsert(m, arg[:2], BEGIN_TIME, m.Time(), STATUS, PREPARE, LEVEL, 3, SCORE, 3, arg[2:]) }}, - mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { _task_modify(m, arg[0], arg[1], arg[2:]...) }}, + mdb.MODIFY: {Hand: func(m *ice.Message, arg ...string) { _task_modify(m, arg[0], arg[1], arg[2:]...) }}, CANCEL: {Name: "cancal", Help: "取消", Hand: func(m *ice.Message, arg ...string) { _task_modify(m, STATUS, CANCEL) }}, BEGIN: {Name: "begin", Help: "开始", Hand: func(m *ice.Message, arg ...string) { _task_modify(m, STATUS, PROCESS) }}, END: {Name: "end", Help: "完成", Hand: func(m *ice.Message, arg ...string) { _task_modify(m, STATUS, FINISH) }}, - }, mdb.ZoneAction(mdb.SHORT, mdb.ZONE, mdb.FIELD, "begin_time,close_time,id,status,level,score,type,name,text")), Hand: func(m *ice.Message, arg ...string) { + }, mdb.ZoneAction(mdb.FIELD, "begin_time,close_time,id,status,level,score,type,name,text")), Hand: func(m *ice.Message, arg ...string) { if mdb.ZoneSelect(m, arg...); len(arg) > 0 && arg[0] != "" { status := map[string]int{} m.Tables(func(value ice.Maps) { diff --git a/core/team/todo.go b/core/team/todo.go index e2446b89..5d34eb89 100644 --- a/core/team/todo.go +++ b/core/team/todo.go @@ -13,17 +13,15 @@ const TODO = "todo" func init() { Index.MergeCommands(ice.Commands{ TODO: {Name: "todo hash list create export import", Help: "待办", Actions: ice.MergeActions(ice.Actions{ - mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { - mdb.HashInputs(m, arg).Cmdy(TASK, mdb.INPUTS, arg) - }}, - mdb.CREATE: {Name: "create zone name text", Help: "创建"}, - cli.START: {Name: "start type=once,step,week", Help: "启动", Hand: func(m *ice.Message, arg ...string) { + mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { mdb.HashInputs(m, arg).Cmdy(TASK, mdb.INPUTS, arg) }}, + mdb.CREATE: {Name: "create zone name text"}, + cli.START: {Name: "start type=once,step,week", Hand: func(m *ice.Message, arg ...string) { m.Cmd(TASK, mdb.INSERT, m.OptionSimple("zone,type,name,text")) mdb.HashRemove(m, m.OptionSimple(mdb.HASH)) }}, }, mdb.HashAction(mdb.FIELD, "time,hash,zone,name,text")), Hand: func(m *ice.Message, arg ...string) { mdb.HashSelect(m, arg...).PushAction(cli.START, mdb.REMOVE) - web.PushPodCmd(m, m.CommandKey(), arg...) + web.PushPodCmd(m, "", arg...) ctx.DisplayTableCard(m) }}, }) diff --git a/type.go b/type.go index 3caa7b69..f1258d2d 100644 --- a/type.go +++ b/type.go @@ -535,9 +535,10 @@ func (m *Message) Commands(key string) *Command { func (m *Message) Actions(key string) *Action { return m._cmd.Actions[key] } -func (m *Message) CmdAppend(arg ...string) string { - field := kit.Slice(arg, -1)[0] - return m._command(kit.Slice(arg, 0, -1), OptionFields(field)).Append(field) +func (m *Message) CmdAppend(arg ...Any) string { + args := kit.Simple(arg...) + field := kit.Slice(args, -1)[0] + return m._command(kit.Slice(args, 0, -1), OptionFields(field)).Append(field) } func (m *Message) CmdMap(arg ...string) map[string]map[string]string { field, list := kit.Slice(arg, -1)[0], map[string]map[string]string{}