1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 01:24:05 +08:00

add mdb.NextPage

This commit is contained in:
harveyshao 2021-06-29 11:12:48 +08:00
parent bb7f1360e8
commit 8fdddfb34d
7 changed files with 74 additions and 33 deletions

View File

@ -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"

View File

@ -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{

View File

@ -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()

View File

@ -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)))
}
}},
},

View File

@ -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)
}

View File

@ -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)
}

View File

@ -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", "返回")...)