1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-05-14 19:13:36 +08:00
parent b499d09f37
commit 6b6e20458b
3 changed files with 89 additions and 12 deletions

View File

@ -177,6 +177,9 @@ func RenderVersion(m *ice.Message) string {
} }
const ( const (
PLAY = "play"
SHOW = "show"
CHAT = "chat" CHAT = "chat"
WORD = "word" WORD = "word"
VIMER = "vimer" VIMER = "vimer"

View File

@ -2,21 +2,30 @@ package chat
import ( import (
ice "shylinux.com/x/icebergs" ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/cli"
"shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs"
"shylinux.com/x/icebergs/base/web"
) )
const TUTOR = "tutor" const TUTOR = "tutor"
func init() { func init() {
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
TUTOR: {Name: "tutor zone id auto", Help: "向导", Actions: mdb.ZoneAction( TUTOR: {Name: "tutor zone id auto", Help: "向导", Actions: ice.MergeActions(ice.Actions{
mdb.SHORT, "zone", mdb.FIELD, "time,zone", mdb.FIELDS, "time,id,type,name,text", nfs.SAVE: {Name: "save zone*", Hand: func(m *ice.Message, arg ...string) {}},
), Hand: func(m *ice.Message, arg ...string) { }, mdb.ZoneAction(
mdb.SHORT, "zone", mdb.FIELD, "time,zone,count", mdb.FIELDS, "time,id,type,name,text",
)), Hand: func(m *ice.Message, arg ...string) {
m.Option("cache.limit", "-1")
if mdb.ZoneSelect(m, arg...); len(arg) == 0 { if mdb.ZoneSelect(m, arg...); len(arg) == 0 {
m.Push(mdb.TIME, m.Time()).Push(mdb.ZONE, "_current") m.Push(mdb.TIME, m.Time()).Push(mdb.ZONE, "_current")
} else { } else {
m.Action(cli.PLAY) m.SortInt(mdb.ID)
if arg[0] == "_current" {
m.Action(web.PLAY, nfs.SAVE)
} else {
m.PushAction(web.SHOW, "view", "data").Action(web.PLAY)
}
} }
m.Display("") m.Display("")
}}, }},

View File

@ -1,17 +1,41 @@
Volcanos(chat.ONIMPORT, { Volcanos(chat.ONIMPORT, {
_init: function(can, msg) { _init: function(can, msg) {
if (can.Option(mdb.ZONE) == "_current") { if (can.Option(mdb.ZONE) == "_current" && can._root.Footer.db.tutor) {
can._root.Footer.db.tutor.Table(function(value) { msg.Push(value) }), msg.PushAction("show") can._root.Footer.db.tutor.Table(function(value) {
msg.Push(value, [mdb.TIME, mdb.TYPE, mdb.TEXT])
if (can.base.isIn(value.type, "storm", mdb.REMOVE)) {
msg.PushButton(web.SHOW)
} else {
msg.PushButton(web.SHOW, "view", "data")
}
})
} }
msg.Dump(can) msg.Show(can)
}, },
}) })
Volcanos(chat.ONACTION, { Volcanos(chat.ONACTION, {
_trans: {
icons: {
view: "bi bi-code-slash", data: "bi bi-diagram-3",
},
},
save: function(event, can) {
can.user.input(event, can, ["zone"], function(data) {
can.core.Next(can._msg.Table(), function(value, next, index, list) {
can.user.toastProcess(can, `save ${data.zone} ${index}/${list.length}`)
var args = [ctx.ACTION, mdb.INSERT, mdb.ZONE, data.zone]; can.core.Item(value, function(key, value) { args.push(key, value) })
can.run(can.request(event, {_handle: ice.TRUE}), args, function() { next() })
}, function() {
can.user.toastSuccess(can)
})
})
},
play: function(can) { play: function(can) {
can.core.Next(can._msg.Table(), function(value, next, index, list) { var delay = 3000 can.core.Next(can._msg.Table(), function(value, next, index, list) { var delay = 30
if (list[index+1]) { delay = (Date.parse(list[index+1].time)-Date.parse(value.time)) } if (list[index+1]) { delay = (Date.parse(list[index+1].time)-Date.parse(value.time)) }
can.onaction.show(can, value.type, value.text, delay), can.onmotion.delay(can, next, delay) can.onaction.show(can, value.type, value.text, delay), can.onmotion.delay(can, next, delay)
can.onmotion.select(can, can.page.SelectOne(can, can._output, "tbody"), html.TR, index) can.onmotion.select(can, can.page.SelectOne(can, can._output, "tbody"), html.TR, index)
can.user.toastProcess(can, `show ${index}/${list.length} ${value.type} ${delay}ms`)
}, function() { }, function() {
can.user.toastSuccess(can, "play done") can.user.toastSuccess(can, "play done")
}) })
@ -24,15 +48,30 @@ Volcanos(chat.ONACTION, {
case "storm": var ls = text.split(",") case "storm": var ls = text.split(",")
can._root.River.onaction.action({}, can._root.River, ls[0], ls[1]) can._root.River.onaction.action({}, can._root.River, ls[0], ls[1])
break break
case "index":
can.page.Select(can, document.body, "fieldset.panel.Header>div.output>div.Action>div._tabs>div.tabs."+text, function(target) {
target.click()
})
break
case "click": case "click":
can.page.Select(can, document.body, text, function(target) { can.page.Select(can, document.body, text, function(target) { var count = 5
can.core.Next([1, 2, 3, 4, 5], function(value, next, index) { can.page.ClassList.add(can, target, "picker") can.core.Next(can.core.List(count), function(value, next, index) { can.page.ClassList.add(can, target, "picker")
can.onmotion.delay(can, function() { can.page.ClassList.del(can, target, "picker"), can.onmotion.delay(can, function() { next() }, delay/20) }, delay/20) can.onmotion.delay(can, function() { can.page.ClassList.del(can, target, "picker"), can.onmotion.delay(can, function() { next() }, delay/5/4) }, delay/5/4)
}, function() { }, function() {
target.click() target.click()
}) })
}) })
break break
case "focus": var ls = text.split(",")
can.page.Select(can, document.body, ls[0], function(target) {
target.focus()
})
break
case "blur": var ls = text.split(",")
can.page.Select(can, document.body, ls[0], function(target) { target.value = ls[1]
can.onmotion.delay(can, function() { target.blur() }, 300)
})
break
case "item": var ls = text.split(",") case "item": var ls = text.split(",")
can.page.Select(can, document.body, ls[0], function(target) { can.page.Select(can, document.body, ls[0], function(target) {
can.onmotion.delay(can, function() { target._can.sub.ui[ls[1]].click() }) can.onmotion.delay(can, function() { target._can.sub.ui[ls[1]].click() })
@ -45,4 +84,30 @@ Volcanos(chat.ONACTION, {
break break
} }
}, },
view: function(can, type, text, delay) {
can.onappend._float(can, "can.view", [], function(sub) {
if (type == "click") {
can.page.Select(can, document.body, can.core.Split(text, ">,")[0], function(target) {
sub.Conf("_target", target)
})
} else if (type == "index") {
can.page.Select(can, document.body, "fieldset.plugin."+text, function(target) {
sub.Conf("_target", target)
})
}
})
},
data: function(can, type, text, delay) {
can.onappend._float(can, "can.data", [], function(sub) {
if (type == "click") {
can.page.Select(can, document.body, can.core.Split(text, ">,")[0], function(target) {
sub.Conf("_target", target._can)
})
} else if (type == "index") {
can.page.Select(can, document.body, "fieldset.plugin."+text, function(target) {
sub.Conf("_target", target._can)
})
}
})
},
}) })