1
0
mirror of https://shylinux.com/x/ContextOS synced 2025-04-25 16:58:06 +08:00

add chat.river.flow

This commit is contained in:
shaoying 2019-06-07 17:21:35 +08:00
parent 1000f4968e
commit 7c8a44edd7
7 changed files with 90 additions and 34 deletions

View File

@ -270,7 +270,6 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心",
// 检查链接
if arg[i] == "check" {
m.Log("fuck", "waht %v", p)
has := "false"
m.Confm("auth", []string{p, "ship"}, func(k string, ship map[string]interface{}) {
if i == len(arg)-2 && (ship["meta"] != arg[i+1] && k != arg[i+1]) {
@ -369,6 +368,9 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心",
if i > len(arg)-1 { // 查看数据
m.Set("result").Cmdy("ctx.config", "auth", strings.Join([]string{p, "data"}, "."))
return
} else if i == len(arg)-1 { // 查看数据
m.Set("result").Cmdy("ctx.config", "auth", strings.Join([]string{p, "data", arg[i]}, "."))
return
} else if arg[i] == "delete" { // 删除数据
m.Confm("auth", []string{s, "data"}, func(data map[string]interface{}) {
for _, k := range arg[i+1:] {
@ -549,7 +551,6 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心",
return
case "user": // 查看用户
m.Log("fuck", "what %v", arg)
m.Cmdy("aaa.auth", sid, "ship", "username")
case "current":
@ -775,8 +776,8 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心",
// 生成证书
template := x509.Certificate{
SerialNumber: big.NewInt(1),
IsCA: true,
SerialNumber: big.NewInt(1),
IsCA: true,
BasicConstraintsValid: true,
KeyUsage: x509.KeyUsageCertSign,
Subject: pkix.Name{CommonName: kit.Format(common)},

View File

@ -1751,8 +1751,8 @@ func (m *Message) Confm(key string, args ...interface{}) map[string]interface{}
}
}
case func(int, map[string]interface{}):
for i, v := range table {
if val, ok := v.(map[string]interface{}); ok {
for i := m.Optioni("page.begin"); i < len(table); i++ {
if val, ok := table[i].(map[string]interface{}); ok {
fun(i, val)
}
}

View File

@ -925,8 +925,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
tmpl := web.Template
if m.Confs("route", "template_debug") {
tmpl = template.New("render").Funcs(ctx.CGI)
t, e := tmpl.ParseGlob(path.Join(m.Cap("directory"), m.Conf("route", "template_dir"), "/*.tmpl"))
m.Log("fuck", "what %v %v", e, t)
tmpl.ParseGlob(path.Join(m.Cap("directory"), m.Conf("route", "template_dir"), "/*.tmpl"))
tmpl.ParseGlob(path.Join(m.Cap("directory"), m.Conf("route", "template_dir"), m.Cap("route"), "/*.tmpl"))
}
@ -983,7 +982,6 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
}
}
}
msg.Log("fuck", "%s", msg.Option("componet_name"))
// 添加设备
arg = arg[:0]

View File

@ -134,6 +134,10 @@ var Index = &ctx.Context{Name: "chat", Help: "会议中心",
if m.Cmds("aaa.auth", "username", arg[0], "password", arg[1]) {
m.Option("username", arg[0])
m.Copy(m.Cmd("aaa.user", "session", "select"), "result")
m.Option("sessid", m.Result(0))
if !m.Cmds("aaa.auth", "username", arg[0], "data", "chat.default") && m.Option("username") != m.Conf("runtime", "work.name") {
m.Cmds("aaa.auth", "username", arg[0], "data", "chat.default", m.Spawn().Cmd(".ocean", "spawn", "", m.Option("username")+"@"+m.Conf("runtime", "work.name")))
}
}
}
} else if m.Options("sessid") {
@ -152,13 +156,16 @@ var Index = &ctx.Context{Name: "chat", Help: "会议中心",
switch arg[0] {
case "spawn":
arg = append(arg, m.Option("username"))
arg = append(arg, m.Conf("runtime", "work.name"))
h := kit.Select(kit.Hashs("uniq"), arg, 1)
user := map[string]interface{}{}
for _, v := range arg[3:] {
u := m.Cmdx("ssh._route", m.Conf("runtime", "work.route"), "_check", "work", v)
user[v] = map[string]interface{}{"user": u}
if u != "" {
user[v] = map[string]interface{}{"user": u}
}
}
m.Conf("flow", h, map[string]interface{}{
@ -209,18 +216,20 @@ var Index = &ctx.Context{Name: "chat", Help: "会议中心",
}
switch arg[0] {
case "flow":
if len(arg) == 2 {
m.Confm("flow", []string{arg[1], "text.list"}, func(index int, value map[string]interface{}) {
m.Add("append", "index", index)
m.Add("append", "type", value["type"])
m.Add("append", "text", value["text"])
})
m.Table()
return
}
case "brow":
m.Option("page.begin", kit.Select("0", arg, 2))
m.Confm("flow", []string{arg[1], "text.list"}, func(index int, value map[string]interface{}) {
m.Add("append", "index", index)
m.Add("append", "type", value["type"])
m.Add("append", "text", value["text"])
m.Add("append", "create_time", value["create_time"])
m.Add("append", "create_user", value["create_user"])
})
m.Table()
return
if m.Conf("flow", []string{arg[1], "conf.route"}) != m.Conf("runtime", "node.route") && len(arg) == 4 {
case "flow":
if kit.Right(m.Conf("flow", []string{arg[1], "conf.route"})) && m.Conf("flow", []string{arg[1], "conf.route"}) != m.Conf("runtime", "node.route") && len(arg) == 4 {
m.Cmdy("ssh._route", m.Conf("flow", []string{arg[1], "conf.route"}),
"context", "chat", "river", "flow", arg[1], arg[2], arg[3])
m.Log("info", "upstream")
@ -236,6 +245,7 @@ var Index = &ctx.Context{Name: "chat", Help: "会议中心",
count := m.Confi("flow", []string{arg[1], "text.count"}) + 1
m.Confi("flow", []string{arg[1], "text.count"}, count)
m.Append("create_user", m.Option("username"))
m.Echo("%d", count)
m.Option("username", m.Conf("runtime", "user.name"))

View File

@ -11,6 +11,20 @@ fieldset.River {
fieldset.Target div.output div.item:hover {
background-color:lightgreen;
}
fieldset.Target>div.output>div.item {
padding-top:6px;
clear:both;
}
fieldset.Target>div.output>div.item>div.text {
padding:6px;
float:left;
}
fieldset.Target>div.output>div.item>div.user {
border-right:solid 1px green;
border-bottom:solid 1px green;
float:left;
padding:6px;
}
fieldset.Source div.output {
padding:0;
}

View File

@ -203,6 +203,7 @@ var page = Page({
return {"button": ["创建"], "action": pane.Action}
},
initTarget: function(page, pane, form, output) {
output.DisplayUser = true
var river = ""
pane.Listen = {
river: function(value, old) {
@ -211,8 +212,11 @@ var page = Page({
}
pane.Show = function() {
page.footer.State("text", 0)
output.Update(["flow", river], "text", ["text"], "index", false, fun)
var cmds = ["brow", river, 0]
output.innerHTML = "", pane.Times(100, cmds, function(line, index, msg) {
output.Append("", line, ["text"], "index", fun)
cmds[2] = parseInt(line.index)+1
})
}
function fun(line, index, event, args, cbs) {
@ -222,8 +226,7 @@ var page = Page({
pane.Send = function(type, text, cb) {
form.Run(["flow", river, type, text], function(msg) {
output.Append(type, {text:text, index: msg.result[0]}, ["text"], "index", fun)
page.footer.State("text", msg.result[0])
// output.Append(type, {create_user: msg.create_user[0], text:text, index: msg.result[0]}, ["text"], "index", fun)
typeof cb == "function" && cb()
})
}
@ -291,7 +294,8 @@ var page = Page({
output.Update([river, storm], "plugin", ["node", "name"], "index", false, function(line, index, event, args, cbs) {
event.shiftKey? page.target.Send("field", JSON.stringify({
name: line.name, view: line.view, init: line.init,
node: line.node, group: line.group, index: line.index, inputs: line.inputs,
node: line.node, group: line.group, index: line.index,
inputs: line.inputs, args: args,
})): form.Run([river, storm, index].concat(args), function(msg) {
event.ctrlKey && (msg.append && msg.append[0]?
page.target.Send("table", JSON.stringify(ctx.Tables(msg))):

View File

@ -52,13 +52,14 @@ function Page(page) {
View: function(parent, type, line, key, cb) {
var ui = {}
var result = []
var text = line
switch (type) {
case "icon":
result = [{view: ["item", "div"], list: [{type: "img", data: {src: line[key[0]]}}, {}]}]
break
case "text":
result = [{view: ["item", "div", key.length>1? line[key[0]]+"("+line[key[1]]+")": (key.length>0? line[key[0]]: "null")], click: cb}]
result = [{text: [key.length>1? line[key[0]]+"("+line[key[1]]+")": (key.length>0? line[key[0]]: "null"), "span"], click: cb}]
break
case "code":
@ -76,20 +77,27 @@ function Page(page) {
break
case "field":
line = JSON.parse(line.text)
var text = JSON.parse(line.text)
case "plugin":
var id = "plugin"+page.ID()
result = [{view: [line.view, "fieldset"], data: {id: id}, list: [
{text: [line.name, "legend"]},
result = [{view: [text.view, "fieldset"], data: {id: id}, list: [
{text: [text.name, "legend"]},
{name: "option", view: ["option", "form"], data: {Run: cb}, list: [{type: "input", style: {"display": "none"}}]},
{name: "output", view: ["output", "div"]},
{script: "Plugin("+id+","+line.inputs+","+line.init+")"},
{script: "Plugin("+id+","+text.inputs+","+"["+(text.args||"")+"]"+","+(text.init||"")+")"},
]}]
break
}
if (parent.DisplayUser) {
ui = kit.AppendChild(parent, [{view: ["item"], list:[
{view: ["user", "div", line.create_user]},
{view: ["text"], list:result}
]}])
} else {
ui = kit.AppendChild(parent, [{view: ["item"], list:result}])
}
ui = kit.AppendChild(parent, result)
ui.last.Meta = line
return ui
},
@ -315,6 +323,27 @@ function Page(page) {
})
})
}
pane.Time = form.Time = function(time, cmds, cb) {
function loop() {
ctx.Run(page, form.dataset, cmds, cb)
setTimeout(loop, time)
}
setTimeout(loop, time)
}
var timer = ""
pane.Times = form.Times = function(time, cmds, cb) {
timer && clearTimeout(timer)
function loop() {
ctx.Run(page, form.dataset, cmds, function(msg) {
ctx.Table(msg, function(line, index) {
cb(line, index, msg)
})
})
timer = setTimeout(loop, time)
}
timer = setTimeout(loop, time)
}
form.onsubmit = function(event) {
event.preventDefault()
}
@ -344,7 +373,7 @@ function Page(page) {
}
return page
}
function Plugin(field, inputs, plugin) {
function Plugin(field, inputs, args, plugin) {
var option = field.querySelector("form.option")
var output = field.querySelector("div.output")
@ -405,7 +434,7 @@ function Plugin(field, inputs, plugin) {
}, field.Select = function() {
ui.last.childNodes[1].focus()
})
return {type: "div", list: [{type: "label", inner: item.label||""}, {type: "input", name: item.name, data: item}]}
return {type: "div", list: [{type: "label", inner: item.label||""}, {type: "input", name: item.name, data: item, value: args && args[index]}]}
}))
ui.last.childNodes[1].focus()