1
0
forked from x/volcanos
This commit is contained in:
shaoying 2021-01-22 19:39:23 +08:00
parent 8557dee71a
commit 21be9add84
15 changed files with 117 additions and 61 deletions

View File

@ -282,6 +282,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
key && value && cmds.push(key, value)
})
var msg = can.request(event, can.Option())
can.run(event, cmds, function(msg) { var sub = can.core.Value(can, "_outputs.-1")
if (can.core.CallFunc([sub, "onimport._process"], [sub, msg, cmds, cb])) { return }
if (can.core.CallFunc([can, "onimport._process"], [can, msg, cmds, cb])) { return }
@ -446,7 +447,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
},
plugin: function(can, meta, cb, target) { meta = meta || {}
meta.inputs && meta.inputs.length > 0? can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, cb, target):
can.run({}, ["action", "command", meta.index||item.ctx+"."+item.cmd], function(msg) { msg.Table(function(value) {
can.run({}, ["action", "command", meta.index||meta.ctx+"."+meta.cmd], function(msg) { msg.Table(function(value) {
can.onappend._plugin(can, value, meta, cb, target)
}) }, true)
},
@ -555,8 +556,6 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _init: function(can, targe
}
},
_parse: function(event, can, mode, list, target) { list.push(event.key)
can.Status && can.Status("keys", list.join(""))
for (var pre = 0; pre < list.length; pre++) {
if ("0" <= list[pre] && list[pre] <= "9") { continue } break
}; var count = parseInt(list.slice(0, pre).join(""))||1
@ -564,7 +563,6 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _init: function(can, targe
function repeat(cb, count) { list = []
for (var i = 1; i <= count; i++) { if (cb(event, can, target, count)) { break } }
event.stopPropagation(), event.preventDefault()
can.Status && can.Status("keys", list.join(""))
}
var map = can.onkeypop._mode[mode]

View File

@ -93,7 +93,7 @@ Volcanos("core", {help: "核心模块",
var cb = args["cb"]
var ls = func.toString().split(")")[0].split("(")[1].split(",")
var list = [], echo = false; this.List(ls, function(item, index) { item = item.trim()
list.push(args[item] || msg&&msg.Option&&msg.Option(item) || args[index] || can&&can.Conf&&can.Conf(item) || null)
list.push(args[item] || args[index] || msg&&msg.Option&&msg.Option(item) || can&&can.Conf&&can.Conf(item) || null)
if (item == "cb") { echo = true }
})

View File

@ -226,6 +226,7 @@ Volcanos("page", {help: "网页模块",
index = typeof index == "object"? index: [index]
index = can.core.List(index, function(item) { if (item > -1) { return item} })
if (index.length == 0) { return }
var is_time = true, is_number = true
can.core.List(list, function(tr) {

View File

@ -166,10 +166,11 @@ Volcanos("user", {help: "用户模块", agent: {
},
input: function(event, can, form, cb) { // form [ string, {_input: }, array, object, button ]
function cbs(event, button) {
var data = {}; var list = can.page.Select(can, ui.table, "select,input,textarea", function(item) {
var data = {}, args = []; var list = can.page.Select(can, ui.table, "select,input,textarea", function(item) {
args.push(item.name, item.value)
return data[item.name] = item.value
})
if (typeof cb == "function" && cb(event, button, data, list)) {
if (typeof cb == "function" && cb(event, button, data, list, args)) {
can.page.Remove(can, ui.first)
}
}
@ -231,7 +232,7 @@ Volcanos("user", {help: "用户模块", agent: {
return ui
},
select: function(event, can, type, fields, cb, cbs) {
var msg = can.request(event, {fields: fields||"pod,name,text"})
var msg = can.request(event, {fields: fields||"type,name,text"})
can.run(msg._event, ["search", "Search.onimport.select", type, "", ""], function(list) {
can.core.Next(list, cb, cbs||function() {
can.user.toast(can, "添加成功")

View File

@ -97,7 +97,7 @@ table {
cursor:pointer; overflow: auto;
}
table tr {
background:#04272f85;
background-color:#04272f45;
}
table th {
background-color:#0fbd45;
@ -110,6 +110,12 @@ table td {
table td.select {
background-color:red;
}
table td.select {
background-color:red;
}
table td.done {
background-color:green;
}
table.content tr:hover {
background-color:green;
@ -341,7 +347,7 @@ body.white table {
color:black;
}
body.white table tr {
background-color:#e1f1ff6b;
background-color:#e1f1ff1f;
}
body.white table th {
background-color:#99CCFF;
@ -360,15 +366,20 @@ body.white table input[type=button][value=启动] {
}
body.white fieldset.story {
background-color:#7c8ea5ab;
/* background-color:#7c8ea5ab; */
}
body.white fieldset.Action {
background-color:#a2dceab3;
color:black;
}
body.white fieldset.Action>div.action {
color:white;
}
body.white fieldset.Action>div.action div.item {
height:21px;
}
body.white fieldset.Action fieldset.plugin {
background-color:#ffffff9c;
background-color:#ffffff78;
}
body.white fieldset.Action fieldset.plugin legend {
background-color:#339999; color:white;

View File

@ -1,6 +1,6 @@
fieldset.Action {
background-color:#7299a28c;
min-width:160px;
background-color:#a2dceab3;
}
fieldset.Action>div.action {
display:none;
@ -35,11 +35,11 @@ fieldset.Action div.output.flow fieldset.plugin {
float:left;
}
fieldset.Action div.output.grid fieldset.plugin {
width:240px; height:240px; overflow:auto;
width:480px; height:320px; overflow:auto;
float:left;
}
fieldset.Action div.output.grid fieldset.plugin>div.output {
width:240px; height:240px; overflow:auto;
width:480px; height:320px; overflow:auto;
}
fieldset.Action div.output.tabs fieldset.plugin {
display:none; position:absolute;

View File

@ -130,7 +130,7 @@ Volcanos("onexport", {help: "导出数据", list: [],
})
},
plugin: function(can, msg, word) {
var fields = (msg.Option("fields")||"pod,ctx,cmd,type,name,text").split(",")
var fields = (msg.Option("fields")||"ctx,cmd,type,name,text").split(",")
can.page.Select(can, can._output, "fieldset.plugin>legend", function(item) {
if (item.innerHTML.indexOf(word[1]) == -1) { return }

View File

@ -33,9 +33,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.page.Append(can, target, [{view: ["state "+item, "div", can.Conf(item)], onclick: function(event) {
can.core.CallFunc([can.onaction, item], [event, can, item])
}, _init: function(target) {
item == "time" && can.core.Timer({interval: 1000, length: -1}, function() {
can.onimport.time(can, target)
}) && can.onappend.figure(can, {}, "@date", target)
item == "time" && can.onimport._time(can, target)
}}])
})
},
@ -101,6 +99,12 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
})
}) })
},
_time: function(can, target) {
can.core.Timer({interval: 1000, length: -1}, function() {
can.onimport.time(can, target)
})
can.onappend.figure(can, {style: {left: "", right: "0", top: can._target.offsetHeight}}, "@date", target)
},
time: function(can, target) { can.onlayout.topic(can)
target.innerHTML = can.base.Time(null, "%w %H:%M:%S")
@ -133,13 +137,19 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
function init() { can.run({}, [], function(msg) {
can.Conf("username", msg.Option("user.nick")||msg.Option("user.name"))
can.onimport._init(can, msg, list, function(msg) {
can.run({}, ["search", "Search.onaction._init"])
can.run({}, ["search", "Action.onaction._init"])
can.run({}, ["search", "River.onaction._init"])
can.run({}, ["search", "Footer.onaction._init"])
can.run(msg._event, ["search", "Search.onaction._init"])
can.run(msg._event, ["search", "Action.onaction._init"])
can.run(msg._event, ["search", "River.onaction._init"])
can.run(msg._event, ["search", "Footer.onaction._init"])
typeof cb == "function" && cb(msg)
}, can._output)
can.page.Select(can, document.body, "fieldset.River", function(item) {
can.onmotion.toggle(can, item)
})
}) }
can.page.Select(can, document.body, "fieldset.River", function(item) {
can.onmotion.hidden(can, item)
})
can.onlayout.topic(can)
can.user.isLocalFile? init(): can.run({}, ["check"], function(msg) {

View File

@ -43,9 +43,9 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
})
can.run({}, ["search", "Header.onimport.menu", "river",
["添加", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备"],
["访问", "访问研发", "访问应用", "访问工具", "访问用户", "访问设备", "访问任务"],
["共享", "共享群组", "共享应用", "共享工具", "邀请用户", "邀请设备"],
["添加", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备", "创建空间"],
["访问", "内部系统", "访问应用", "访问工具", "访问用户", "访问设备", "访问任务"],
["共享", "共享群组", "共享应用", "共享工具", "共享用户", "邀请设备"],
], function(event, item) {
can.core.CallFunc([can.ondetail, item], [event, can, item, can.Conf("river"), can.Conf("storm")])
})
@ -113,15 +113,15 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
})
},
"添加用户": function(event, can, button, river) {
can.user.select(event, can, "user", "pod,name,text", function(item, next) {
can.run({}, [river, "user", "action", "insert", "username", item[2]], function(msg) {
can.user.select(event, can, "user", "usernick,username", function(item, next) {
can.run({}, [river, "user", "action", "insert", "username", item[0]], function(msg) {
next()
})
})
},
"添加设备": function(event, can, button, river) {
can.user.select(event, can, "space", "pod,type,name,text", function(item, next) {
can.run({}, [river, "node", "action", "insert", "type", item[1], "name", item[2]], function(msg) {
can.user.select(event, can, "space", "type,name,text", function(item, next) {
can.run({}, [river, "node", "action", "insert", "type", item[0], "name", item[1]], function(msg) {
next()
})
})
@ -163,8 +163,8 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
})
},
"添加工具": function(event, can, button, river, storm) {
can.user.select(event, can, "command", "pod,name,text", function(item, next) {
can.run({}, [river, "tool", "action", "insert", "hash", storm].concat(["pod", item[0], "ctx", item[2], "cmd", item[1]]), function(msg) {
can.user.select(event, can, "command", "context,command", function(item, next) {
can.run({}, [river, "tool", "action", "insert", "hash", storm].concat(["pod", "", "ctx", item[0], "cmd", item[1]]), function(msg) {
next()
})
}, function() {
@ -194,13 +194,15 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
})
},
"访问研发": function(event, can, button, river, storm) {
"内部系统": function(event, can, button, river, storm) {
can.user.select(event, can, "github", "time,type,name,text")
},
"访问应用": function(event, can, button, river, storm) {
var msg = can.request(event, {sort: ","})
can.user.select(event, can, "storm", "type,name,text")
},
"访问工具": function(event, can, button, river, storm) {
var msg = can.request(event, {sort: ","})
can.user.select(event, can, "plugin", "type,name,text")
},
"访问用户": function(event, can, button, river, storm) {
@ -213,8 +215,14 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
var msg = can.request(event, {index: "web.team.task"})
can.user.select(event, can, "task", "time,zone,id,type,name,text")
},
"邀请用户": function(event, can, button, river, storm) {
can.user.toast(can, "what", "邀请用户")
"共享用户": function(event, can, button, river, storm) {
can.user.input(event, can, [
{_input: "text", name: "name", value: river},
], function(event, button, meta, list) {
can.user.share(can, can.request(event), [river, "action", "share", "type", "login"])
return true
})
},
"邀请设备": function(event, can, button, river, storm) {
can.run(event, ["action", "invite"], function(msg) {
@ -226,12 +234,29 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
})
})
},
"创建空间": function(event, can, button, river, storm) {
can.user.input(event, {__proto__: can, run: function(event, cmds, cb, silent) {
var msg = can.request(event, {action: "start"})
can.run(event, cmds, cb, silent)
}}, [
{_input: "text", name: "name", value: "@key"},
{_input: "text", name: "repos", value: "@key"},
{_input: "text", name: "template", value: "@key"},
], function(event, button, data, list, args) {
can.run(event, ["action", "start"].concat(args), function(msg) {
can.user.open(can.user.MergeURL(can, {pod: msg.Option("name")}))
can.user.toast(can, can.user.MergeURL(can, {pod: msg.Option("name")}))
})
return true
})
},
})
Volcanos("onexport", {help: "导出数据", list: [],
width: function(can) { return can._target.offsetWidth },
height: function(can) { return can._target.offsetHeight },
storm: function(can, msg, word) {
var fields = (msg.Option("fields")||"pod,ctx,cmd,type,name,text").split(",")
var fields = (msg.Option("fields")||"ctx,cmd,type,name,text").split(",")
can.core.Item(can.onengine.river, function(river, value) {
can.core.Item(value.storm, function(storm, item) {
if (word[1] != "" && word[1] != storm && word[1] != item.name) { return }

View File

@ -1,8 +1,11 @@
fieldset.Search {
background:#041a258a; padding:10px;
background:#041a25bd; padding:10px;
position:fixed; z-index:20;
display:none;
}
body.white fieldset.Search table {
color:white;
}
fieldset.Search input.word {
width:-webkit-fill-available;
}

View File

@ -20,33 +20,25 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
return {text: [key == "text" && typeof line.text == "function" && line.text.help || value, "td"], onclick: function(event) {
if (event.shiftKey) { event.stopPropagation(), event.preventDefault()
return can.onappend.plugin(can, {index: line.ctx? line.ctx+"."+line.cmd: msg.Option("index"), option: line}, function(sub, meta) {
sub.run = function(event, cmds, cb) {
sub.run = function(event, cmds, cb) { var msg = can.request(event, line)
can.run(event, ["action", "command", "run", meta.index].concat(cmds), function(msg) {
typeof cb == "function" && cb(msg)
})
}
}, can.ui.preview)
}
if (line.ctx == "web.chat" && line.cmd == "/search") {
return can.onimport.select(can, msg, [line.type, line.name, line.text], can.cb)
}
if (typeof line.text == "function") {
return can.onmotion.hide(can), line.text(event)
}
can.page.Append(can, can.ui.display, [{td: can.core.List(fields, function(item) {
return line[item]
}), data: {index: index}, onclick: function(event) {
can.page.Remove(can, event.target.parentNode)
can.Status("selected", can.page.Select(can, can.ui.display, "tr").length-1)
}}]), can.Status("selected", can.page.Select(can, can.ui.display, "tr").length-1)
if (can.onaction.select(event, can, index)) { return }
}}
}, can.ui.content, [fields.indexOf("pod"), fields.indexOf("ctx"), fields.indexOf("cmd"),
fields.indexOf("type"), fields.indexOf("name"), fields.indexOf("text")])
}, can.ui.content, can.core.List((msg.Option("sort")||"ctx,cmd,type,name,text").split(","), function(item) {
return fields.indexOf(item)
}))
},
_word: function(can, msg, cmds, fields) {
msg = can.request({}, {fields: fields.join(","), word: cmds, index: msg.Option("index")})
msg = can.request({}, {word: cmds, fields: fields.join(","), sort: msg.Option("sort"), index: msg.Option("index")})
can.onengine.signal(can, "search", msg)
can.run(msg._event, cmds, function(msg) { can.list = msg.Table()
@ -56,7 +48,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
},
select: function(can, msg, cmds, cb) { can.ui.word.value = cmds[1]
var fields = (cmds[2]||msg.Option("fields")||"pod,ctx,cmd,type,name,text").split(",")
var fields = (cmds[2]||msg.Option("fields")||"ctx,cmd,type,name,text").split(",")
can.page.Appends(can, can.ui.display, [{th: fields}]), can.cb = function() {
typeof cb == "function" && cb(can.onexport.select(can)), can.onmotion.hide(can)
}
@ -84,12 +76,21 @@ Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"]
"完成": function(event, can) { typeof can.cb == "function" && can.cb() },
select: function(event, can, index) {
if (can.list && can.list[index]) { can.onmotion.hide(can)
if (typeof can.list[index].text == "function") {
if (can.list && can.list[index]) {
var text = can.list[index].text || ""
if (typeof text == "function") {
can.list[index].text(event)
} else if (can.list[index].text.indexOf("http") == 0) {
can.user.open(can.list[index].text)
} else { var line = can.list[index]
var fields = can.page.Select(can, can.ui.display, "th", function(item) { return item.innerText })
can.page.Append(can, can.ui.display, [{td: can.core.List(fields, function(item) {
return line[item]
}), data: {index: index}, onclick: function(event) {
can.page.Remove(can, event.target.parentNode)
can.Status("selected", can.page.Select(can, can.ui.display, "tr").length-1)
}}]), can.Status("selected", can.page.Select(can, can.ui.display, "tr").length-1)
return false
}
can.onmotion.hide(can)
return true
}
return false

View File

@ -1,4 +1,5 @@
Volcanos("onfigure", {help: "控件详情", list: [], date: {onclick: function(event, can, item, target, figure) {
item.style && can.page.Modify(can, figure.fieldset, {style: item.style})
// 设置输入
function set(now) {

View File

@ -17,7 +17,7 @@ fieldset.editor {
background:#0b2c54ab;
}
fieldset.editor>div.output {
background-color:#173d40ab;
background-color:#173d4047;
}
fieldset.editor>div.output>table>tr {
background-color:#99CCFF00;
@ -88,6 +88,9 @@ fieldset.editor>div.output table.content td.text span.datatype {
fieldset.editor>div.output table.content td.text span.string {
color:magenta;
}
body.white fieldset.editor>div.output table.content td.text span.string {
color:#a703a7;
}
fieldset.editor>div.output div.search {
background-color:#060627ab; color:white;

View File

@ -262,7 +262,9 @@ Volcanos("onaction", {help: "控件交互", list: [],
if (can.current) {
var pos = can.current.offset()-can.current.line.offsetTop
can.current.scroll(0, -pos)
if (pos > 0 || -pos > can._output.offsetHeight) {
can.current.scroll(0, -pos)
}
}
},
searchLine: function(event, can, value) { value = value.trim()

View File

@ -20,7 +20,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
})
can.core.Timer(1000, function() {
var res = can.request({}, {_process: msg.Option("_progress")})
var res = can.request({}, {_progress: msg.Option("_progress")})
return can.onappend._output(can, can.Conf(), res._event, can.Pack(cmds), cb, silent)
})
return true