mirror of
https://shylinux.com/x/icebergs
synced 2025-04-26 01:24:05 +08:00
add mdb.NextPage
This commit is contained in:
parent
bb7f1360e8
commit
8fdddfb34d
@ -52,8 +52,9 @@ func _daemon_show(m *ice.Message, cmd *exec.Cmd, out, err string) {
|
||||
m.Cmd(mdb.MODIFY, DAEMON, "", mdb.HASH, kit.MDB_HASH, h, kit.MDB_STATUS, STOP)
|
||||
}
|
||||
|
||||
if m.Option(AUTO_RESTART) == ice.TRUE {
|
||||
m.Cmd(DAEMON, START)
|
||||
switch cb := m.Optionv(kit.Keycb(DAEMON)).(type) {
|
||||
case func():
|
||||
cb()
|
||||
}
|
||||
|
||||
if w, ok := m.Optionv(CMD_OUTPUT).(io.Closer); ok {
|
||||
@ -86,8 +87,6 @@ const (
|
||||
RESTART = "restart"
|
||||
RELOAD = "reload"
|
||||
STOP = "stop"
|
||||
|
||||
AUTO_RESTART = "auto_restart"
|
||||
)
|
||||
|
||||
const DAEMON = "daemon"
|
||||
|
@ -422,10 +422,33 @@ const (
|
||||
CACHE_FIELD = "cache.field"
|
||||
CACHE_VALUE = "cache.value"
|
||||
CACHE_OFFEND = "cache.offend"
|
||||
CACHE_FILTER = "cache.filter"
|
||||
|
||||
CACHE_CLEAR_ON_EXIT = "cache.clear.on.exit"
|
||||
)
|
||||
|
||||
func PrevPage(m *ice.Message, total string, arg ...string) {
|
||||
limit, offend := kit.Select("10", arg, 0), kit.Select("0", arg, 1)
|
||||
offends := kit.Int(offend) - kit.Int(limit)
|
||||
if offends <= -kit.Int(total) || offends >= kit.Int(total) {
|
||||
m.Toast("已经是最前一页啦!")
|
||||
m.ProcessHold()
|
||||
return
|
||||
}
|
||||
m.ProcessRewrite("offend", offends)
|
||||
|
||||
}
|
||||
func NextPage(m *ice.Message, total string, arg ...string) {
|
||||
limit, offend := kit.Select("10", arg, 0), kit.Select("0", arg, 1)
|
||||
offends := kit.Int(offend) + kit.Int(limit)
|
||||
if offends <= -kit.Int(total) || offends >= kit.Int(total) {
|
||||
m.Toast("已经是最后一页啦!")
|
||||
m.ProcessHold()
|
||||
return
|
||||
}
|
||||
m.ProcessRewrite("offend", offends)
|
||||
}
|
||||
|
||||
const MDB = "mdb"
|
||||
|
||||
var Index = &ice.Context{Name: MDB, Help: "数据模块", Commands: map[string]*ice.Command{
|
||||
|
@ -3,7 +3,6 @@ package nfs
|
||||
import (
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
)
|
||||
|
||||
var Index = &ice.Context{Name: "nfs", Help: "存储模块", Commands: map[string]*ice.Command{
|
||||
@ -12,11 +11,6 @@ var Index = &ice.Context{Name: "nfs", Help: "存储模块", Commands: map[string
|
||||
m.Cmd(mdb.RENDER, mdb.CREATE, CAT)
|
||||
m.Cmd(mdb.SEARCH, mdb.CREATE, DIR)
|
||||
m.Cmd(mdb.RENDER, mdb.CREATE, DIR)
|
||||
|
||||
m.Richs(TAIL, "", kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
|
||||
value, _ = kit.GetMeta(value), m.Option(kit.MDB_HASH, key)
|
||||
m.Cmd(TAIL, mdb.CREATE, kit.MDB_FILE, kit.Format(value[kit.MDB_FILE]), kit.MDB_NAME, kit.Format(value[kit.MDB_NAME]))
|
||||
})
|
||||
}},
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Save()
|
||||
|
@ -3,6 +3,7 @@ package nfs
|
||||
import (
|
||||
"bufio"
|
||||
"io"
|
||||
"strings"
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
@ -11,16 +12,14 @@ import (
|
||||
)
|
||||
|
||||
func _tail_create(m *ice.Message, arg ...string) {
|
||||
if m.Option(kit.MDB_HASH) == "" {
|
||||
m.Option(kit.MDB_HASH, m.Cmdx(mdb.INSERT, TAIL, "", mdb.HASH, arg))
|
||||
}
|
||||
h := m.Cmdx(mdb.INSERT, m.Prefix(TAIL), "", kit.MDB_HASH, arg)
|
||||
|
||||
kit.ForEach(kit.Split(m.Option(kit.MDB_FILE), ","), func(file string) {
|
||||
r, w := io.Pipe()
|
||||
m.Go(func() {
|
||||
for bio := bufio.NewScanner(r); bio.Scan(); {
|
||||
m.Log_IMPORT(kit.MDB_FILE, file, kit.MDB_SIZE, len(bio.Text()))
|
||||
m.Grow(TAIL, kit.Keys(kit.MDB_HASH, m.Option(kit.MDB_HASH)), kit.Dict(
|
||||
m.Grow(TAIL, kit.Keys(kit.MDB_HASH, h), kit.Dict(
|
||||
kit.MDB_FILE, file, kit.MDB_SIZE, len(bio.Text()), kit.MDB_TEXT, bio.Text(),
|
||||
))
|
||||
}
|
||||
@ -32,46 +31,54 @@ func _tail_create(m *ice.Message, arg ...string) {
|
||||
m.Cmd(cli.DAEMON, TAIL, "-n", "0", "-f", file)
|
||||
})
|
||||
}
|
||||
func _tail_count(m *ice.Message, name string) string {
|
||||
return m.Conf(TAIL, kit.Keys(kit.MDB_HASH, kit.Hashs(name), kit.MDB_META, kit.MDB_COUNT))
|
||||
|
||||
}
|
||||
|
||||
const TAIL = "tail"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
TAIL: {Name: TAIL, Help: "日志流", Value: kit.Data()},
|
||||
TAIL: {Name: TAIL, Help: "日志流", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
TAIL: {Name: "tail hash id limit offend auto prev next create", Help: "日志流", Action: map[string]*ice.Action{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Richs(TAIL, "", kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
|
||||
value, _ = kit.GetMeta(value), m.Option(kit.MDB_HASH, key)
|
||||
m.Cmd(TAIL, mdb.CREATE, kit.MDB_FILE, kit.Format(value[kit.MDB_FILE]), kit.MDB_NAME, kit.Format(value[kit.MDB_NAME]))
|
||||
})
|
||||
}},
|
||||
TAIL: {Name: "tail name id auto create page", Help: "日志流", Action: map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create file name", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
_tail_create(m, arg...)
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, TAIL, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||
m.Cmdy(mdb.DELETE, TAIL, "", mdb.HASH, kit.MDB_NAME, m.Option(kit.MDB_NAME))
|
||||
}},
|
||||
"prev": {Name: "prev", Help: "上一页", Hand: func(m *ice.Message, arg ...string) {
|
||||
offend := kit.Int(kit.Select("0", arg, 3)) + kit.Int(kit.Select("10", arg, 2))
|
||||
total := kit.Int(m.Conf(TAIL, kit.Keys(kit.MDB_HASH, arg[0], kit.MDB_META, kit.MDB_COUNT)))
|
||||
if offend >= total {
|
||||
offend = total - kit.Int(kit.Select("10", arg, 2))
|
||||
m.Toast("已经是最后一页啦!")
|
||||
}
|
||||
m.ProcessRewrite("offend", offend)
|
||||
mdb.PrevPage(m, _tail_count(m, arg[0]), kit.Slice(arg, 2)...)
|
||||
}},
|
||||
"next": {Name: "next", Help: "下一页", Hand: func(m *ice.Message, arg ...string) {
|
||||
offend := kit.Int(kit.Select("0", arg, 3)) - kit.Int(kit.Select("10", arg, 2))
|
||||
if offend < 0 {
|
||||
offend = 0
|
||||
m.Toast("已经是第一页啦!")
|
||||
}
|
||||
m.ProcessRewrite("offend", offend)
|
||||
mdb.NextPage(m, _tail_count(m, arg[0]), kit.Slice(arg, 2)...)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(true, kit.Select("time,hash,count,name,file", "time,id,file,text", len(arg) > 1 && arg[1] != ""))
|
||||
m.Fields(len(arg) < 2 || (len(arg) > 1 && arg[1] == ""), kit.Select("time,name,count,name,file", "time,id,file,text", len(arg) > 0 && arg[0] != ""))
|
||||
m.Option(mdb.CACHE_FILTER, kit.Select("", arg, 4))
|
||||
m.Option(mdb.CACHE_OFFEND, kit.Select("0", arg, 3))
|
||||
m.Option(mdb.CACHE_LIMIT, kit.Select("10", arg, 2))
|
||||
|
||||
if m.Cmdy(mdb.SELECT, TAIL, "", mdb.ZONE, arg); len(arg) == 0 {
|
||||
m.Cmd(mdb.SELECT, TAIL, "", mdb.ZONE, arg).Table(func(index int, value map[string]string, head []string) {
|
||||
if strings.Contains(value[kit.MDB_TEXT], m.Option(mdb.CACHE_FILTER)) {
|
||||
m.Push("", value, head)
|
||||
}
|
||||
})
|
||||
|
||||
if len(arg) == 0 {
|
||||
m.PushAction(mdb.REMOVE)
|
||||
} else {
|
||||
m.StatusTimeCount("total", m.Conf(TAIL, kit.Keys(kit.MDB_HASH, kit.Hashs(arg[0]), kit.MDB_META, kit.MDB_COUNT)))
|
||||
}
|
||||
}},
|
||||
},
|
||||
|
@ -1,7 +1,10 @@
|
||||
package chat
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/base/tcp"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
@ -63,6 +66,12 @@ func init() {
|
||||
m.Push("", value, kit.Split(m.Option(mdb.FIELDS)))
|
||||
})
|
||||
}},
|
||||
"random": {Name: "random max auto", Help: "随机", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
max := kit.Int(kit.Select("6", arg, 0))
|
||||
n := rand.Intn(max + 1)
|
||||
m.Echo(`<span style="font-size:48px">%s</span>`, cli.Color(m, cli.RED, kit.Format(n)))
|
||||
m.Status("time", m.Time(), "max", max)
|
||||
}},
|
||||
},
|
||||
}, nil)
|
||||
}
|
||||
|
3
data.go
3
data.go
@ -1,6 +1,7 @@
|
||||
package ice
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
kit "github.com/shylinux/toolkits"
|
||||
@ -64,7 +65,7 @@ func (m *Message) Grows(prefix string, chain interface{}, match string, value st
|
||||
}
|
||||
|
||||
return miss.Grows(kit.Keys(prefix, chain), cache,
|
||||
kit.Int(kit.Select("0", m.Option("cache.offend"))),
|
||||
kit.Int(kit.Select("0", strings.TrimPrefix(m.Option("cache.offend"), "-"))),
|
||||
kit.Int(kit.Select("10", m.Option("cache.limit"))),
|
||||
match, value, cb)
|
||||
}
|
||||
|
8
type.go
8
type.go
@ -229,6 +229,14 @@ func (c *Context) Merge(s *Context) *Context {
|
||||
func (c *Context) _split(name string) []interface{} {
|
||||
button, list := false, []interface{}{}
|
||||
for _, v := range kit.Split(kit.Select("key", name), " ", " ")[1:] {
|
||||
if v == "page" {
|
||||
list = append(list, kit.List(kit.MDB_INPUT, "text", "name", "limit")...)
|
||||
list = append(list, kit.List(kit.MDB_INPUT, "text", "name", "offend")...)
|
||||
list = append(list, kit.List(kit.MDB_INPUT, "text", "name", "filter")...)
|
||||
list = append(list, kit.List(kit.MDB_INPUT, "button", "name", "prev")...)
|
||||
list = append(list, kit.List(kit.MDB_INPUT, "button", "name", "next")...)
|
||||
continue
|
||||
}
|
||||
if v == "auto" {
|
||||
list = append(list, kit.List(kit.MDB_INPUT, "button", "name", "查看", "value", "auto")...)
|
||||
list = append(list, kit.List(kit.MDB_INPUT, "button", "name", "返回")...)
|
||||
|
Loading…
x
Reference in New Issue
Block a user