mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
opt git.status
This commit is contained in:
parent
54af1c8698
commit
2496b5864b
48
frame.js
48
frame.js
@ -1,4 +1,4 @@
|
||||
var _can_name = "/frame.js"
|
||||
var _can_name = "/frame.js"
|
||||
Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta, list, cb, target) {
|
||||
can.core.Next(list, function(item, next) { item.type = "panel"
|
||||
can.onappend._init(can, item, item.list, function(panel) {
|
||||
@ -20,7 +20,7 @@ Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta,
|
||||
fun && (sub = mod, mod = fun, fun = mod[value], key = value)
|
||||
}); if (!sub || !mod || !fun) {
|
||||
can.base.Warn("not found", cmds[1])
|
||||
cb(msg.Echo("warn: ", "not found: ", cmds[1]))
|
||||
can.base.isFunc(cb) && cb(msg.Echo("warn: ", "not found: ", cmds[1]))
|
||||
return
|
||||
}
|
||||
|
||||
@ -264,7 +264,8 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
function add(item, next) { item._input != "button" && item.type != "button" && index++
|
||||
Volcanos(item.name, {_follow: can._follow+"."+item.name,
|
||||
_option: can._option, _action: can._action, _output: can._output, _status: can._status,
|
||||
_target: can.onappend.input(can, item, args[index]||meta.option[item.name], option),
|
||||
// _target: can.onappend.input(can, item, args[index]||meta.option[item.name], option),
|
||||
_target: can.onappend.input(can, item, args[index], option),
|
||||
Option: can.Option, Action: can.Action, Status: can.Status,
|
||||
CloneInput: function() { add(item)._target.focus() },
|
||||
CloneField: function() { can.Clone() },
|
||||
@ -339,6 +340,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
}
|
||||
|
||||
return can.run(event, cmds, function(msg) { var sub = can.core.Value(can, "_outputs.-1")
|
||||
can._msg = msg
|
||||
if (can.core.CallFunc([sub, "onimport._process"], [sub, msg, cmds, cb])) { return }
|
||||
if (can.core.CallFunc([can, "onimport._process"], [can, msg, cmds, cb])) { return }
|
||||
if (can.base.isFunc(cb) && cb(msg)) { return }
|
||||
@ -536,43 +538,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
|
||||
can.onappend._init(can, meta, ["/plugin/state.js"], function(sub) {
|
||||
meta.type == "story" && sub.page.Remove(sub, sub._legend)
|
||||
can.base.isFunc(cb) && cb(sub, meta)
|
||||
can.page.Modify(sub, sub._legend, {
|
||||
onmouseenter: function(event) {
|
||||
Volcanos.meta.data.menu && can.page.Remove(can, Volcanos.meta.data.menu.first)
|
||||
Volcanos.meta.data.menu = can.user.carte(event, can, {
|
||||
"保存参数": function(event) {
|
||||
var msg = can.request(event, {river: can.Conf("river"), storm: can.Conf("storm"), id: meta.id})
|
||||
can.run(event, ["action", "modify", "arg", JSON.stringify(sub.Pack([], true))], function(msg) {
|
||||
can.user.toast(can, "保存成功")
|
||||
})
|
||||
},
|
||||
"清空参数": function(event) {
|
||||
can.page.Select(can, sub._option, '.args', function(item) { return item.value = "" })
|
||||
},
|
||||
"共享工具": function(event) {
|
||||
can.user.input(event, can, ["name"], function(event, button, data, list, args) {
|
||||
can.user.share(can, can.request(event), ["action", "share", "type", "field",
|
||||
"name", list[0], "text", JSON.stringify(sub.Pack([], true)),
|
||||
"river", meta.ctx||meta.key||"", "storm", meta.index||meta.cmd||meta.name])
|
||||
})
|
||||
},
|
||||
"刷新结果": function(event) {
|
||||
sub.onappend._output(sub, meta, {}, sub.Pack([], true))
|
||||
},
|
||||
"清空结果": function(event) {
|
||||
sub.onmotion.clear(sub, sub._output)
|
||||
},
|
||||
}, ["保存参数", "清空参数", "共享工具", "刷新结果", "清空结果"])
|
||||
|
||||
can.page.Modify(can, Volcanos.meta.data.menu.first, {style: {
|
||||
left: event.target.offsetLeft+can.run(event, ["search", "River.onexport.width"]),
|
||||
top: event.target.offsetTop-can._output.scrollTop+event.target.offsetHeight+can.run(event, ["search", "Header.onexport.height"]),
|
||||
}})
|
||||
},
|
||||
})
|
||||
sub._legend.onclick = function(event) {
|
||||
}
|
||||
sub.base.isFunc(cb) && cb(sub, meta)
|
||||
}, target||can._output)
|
||||
},
|
||||
plugin: function(can, meta, cb, target) { meta = meta || {}
|
||||
@ -638,7 +604,7 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can) {
|
||||
top = window.innerHeight - p.offsetHeight
|
||||
} if (top < 32) { top = 32 }
|
||||
|
||||
can.page.Modify(can, p, {style: {left: left, top: top}})
|
||||
can.page.Modify(can, p, {style: {left: can.user.isMobile? 30: left, top: top+30}})
|
||||
},
|
||||
resize: function(can, name, cb) {
|
||||
var list = []; can.onengine.listen(can, name, function(width, height) {
|
||||
|
@ -71,6 +71,7 @@ Volcanos("core", {help: "数据结构",
|
||||
return typeof cb == "function" && cb(timer, interval.interval||interval[i], i, interval)?
|
||||
typeof cbs == "function" && cbs(timer, interval): setTimeout(function() { loop(timer, i+1) }, interval.interval||interval[i+1])
|
||||
}
|
||||
if (interval.interval == 0) { cb(); return timer }
|
||||
setTimeout(function() { loop(timer, 0) }, interval.interval||interval[0])
|
||||
return timer
|
||||
}),
|
||||
|
@ -125,8 +125,11 @@ Volcanos("misc", {help: "工具模块", Message: function(event, can) { var msg
|
||||
msg[item] && (form[item] = msg[item])
|
||||
})
|
||||
|
||||
var path = (can.Conf("iceberg")||"/chat/")+dataset.names.toLowerCase()
|
||||
can.misc.POST(can, msg, can.base.MergeURL(path, "", (msg._can.sup||msg._can)._name, "_daemon", dataset.daemon), form, function(msg) {
|
||||
can.misc.POST(can, msg, can.base.MergeURL(
|
||||
(can.Conf("iceberg")||"/chat/")+dataset.names.toLowerCase(),
|
||||
"_", (msg._can.sup||msg._can)._name,
|
||||
"_daemon", dataset.daemon,
|
||||
), form, function(msg) {
|
||||
typeof cb == "function" && cb(msg)
|
||||
})
|
||||
}),
|
||||
|
@ -38,7 +38,11 @@ Volcanos("page", {help: "网页模块",
|
||||
"left": true, "right": true, "top": true, "bottom": true,
|
||||
"margin-top": true, "margin-left": true,
|
||||
}
|
||||
if (size[sub] && value && (typeof value == "number" || value.indexOf("px") == -1)) {
|
||||
if (parseInt(value) < 0 && sub == "height") {
|
||||
target[key] && (target[key][sub] = "")
|
||||
return
|
||||
}
|
||||
if (size[sub] && value && (typeof value == "number" || value.indexOf && value.indexOf("px") == -1)) {
|
||||
value += "px"
|
||||
}
|
||||
target[key] && (target[key][sub] = value)
|
||||
|
10
lib/user.js
10
lib/user.js
@ -67,7 +67,7 @@ Volcanos("user", {help: "用户模块", agent: {
|
||||
var width = meta.width||400, height = meta.height||100; if (width < 0) { width = window.innerWidth + width }
|
||||
|
||||
var ui = can.page.Append(can, document.body, [{view: "toast", style: {
|
||||
width: width, bottom: 100, left: window.innerWidth/2-width/2,
|
||||
width: width, bottom: 100, left: (window.innerWidth-width)/2,
|
||||
}, list: [
|
||||
{text: [meta.title||"", "div", "title"]},
|
||||
typeof meta.content == "object"? meta.content: {text: [meta.content||"执行成功", "div", "content"]},
|
||||
@ -79,7 +79,7 @@ Volcanos("user", {help: "用户模块", agent: {
|
||||
|
||||
ui.Close = function() { can.page.Remove(can, ui.first), timer.stop = true }
|
||||
var timer = can.core.Timer({interval: 100, length: (parseInt(meta.duration||1000))/100}, function(event, interval, index) {
|
||||
if (index > 20) { ui.duration.innerHTML = parseInt(index/10)+"."+(index%10)+"s..." }
|
||||
if (index > 30) { ui.duration.innerHTML = parseInt(index/10)+"."+(index%10)+"s..." }
|
||||
}, ui.Close)
|
||||
|
||||
can.onappend._action(can, meta.button||[], ui.button, {
|
||||
@ -172,7 +172,7 @@ Volcanos("user", {help: "用户模块", agent: {
|
||||
},
|
||||
input: function(event, can, form, cb) { // form [ string, array, object, {_input: }, {button: []} ]
|
||||
var msg = can.request(event, can.Option())
|
||||
var x = event.clientX||200, y = event.clientY+10||48
|
||||
var x = event.clientX||can.user.isMobile? 20: 200, y = event.clientY+10||48
|
||||
|
||||
var button; var ui = can.page.Append(can, document.body, [{view: ["input inputs", "fieldset"], style: {left: x, top: y}, list: [
|
||||
{view: ["option", "table"], list: can.core.List(form, function(item) {
|
||||
@ -194,6 +194,7 @@ Volcanos("user", {help: "用户模块", agent: {
|
||||
|
||||
item = typeof item == "string"? {_input: "text", name: item}:
|
||||
item.length > 0? {_input: "select", name: item[0], values: item.slice(1)}: item
|
||||
item._input = item.type||item._input||"text"
|
||||
|
||||
return {type: "tr", list: [{type: "td", list: [{text: item.name||""}]}, {type: "td", list: [
|
||||
item._input == "textarea"? /* textarea */ {type: "textarea", data: item, _init: _init}:
|
||||
@ -271,8 +272,7 @@ Volcanos("user", {help: "用户模块", agent: {
|
||||
},
|
||||
download: function(can, path, name) {
|
||||
var a = can.page.Append(can, document.body, [{type: "a", href: path, download: name||path.split("/").pop()}]).first
|
||||
a.click()
|
||||
can.page.Remove(can, a)
|
||||
a.click(), can.page.Remove(can, a)
|
||||
},
|
||||
logout: function(can) {
|
||||
if (can.user.confirm("logout?")) {
|
||||
|
@ -93,6 +93,12 @@ input[type=text] {
|
||||
input[type=text]:hover {
|
||||
background-color:white;
|
||||
}
|
||||
td>input[type=button][name=remove] {
|
||||
background-color:red;
|
||||
}
|
||||
td>input[type=button][name=create] {
|
||||
background-color:blue;
|
||||
}
|
||||
input[type=button] {
|
||||
background-color:black; color:cyan;
|
||||
letter-spacing:4px;
|
||||
@ -339,6 +345,9 @@ fieldset>div.output td.project {
|
||||
fieldset>div.output td.profile {
|
||||
background-color:#71909c91;
|
||||
}
|
||||
fieldset>div.output td.profile div.profile {
|
||||
overflow:auto;
|
||||
}
|
||||
|
||||
fieldset>div.output {
|
||||
clear:both; overflow:auto;
|
||||
@ -348,7 +357,7 @@ fieldset>div.output div.code a {
|
||||
color:yellow;
|
||||
}
|
||||
fieldset>div.output div.project {
|
||||
min-width:80px; max-width:240px;
|
||||
min-width:88px; max-width:240px;
|
||||
float:left; overflow:auto;
|
||||
}
|
||||
fieldset>div.output div.project div.item {
|
||||
@ -400,6 +409,12 @@ body.white {
|
||||
background-color:#052238bf;
|
||||
color:white;
|
||||
}
|
||||
body.white td>input[type=button][name=remove] {
|
||||
background-color:red;
|
||||
}
|
||||
body.white td>input[type=button][name=create] {
|
||||
background-color:blue;
|
||||
}
|
||||
body.white input[type=button] {
|
||||
background-color:#FF9900; color:white;
|
||||
border-radius:10px 10px 10px 10px;
|
||||
@ -470,6 +485,18 @@ body.print {
|
||||
background-color:white;
|
||||
color:black;
|
||||
}
|
||||
body.print fieldset.Header {
|
||||
background-color:white;
|
||||
color:black;
|
||||
}
|
||||
body.print fieldset.River {
|
||||
background-color:white;
|
||||
color:black;
|
||||
}
|
||||
body.print fieldset.Footer {
|
||||
background-color:white;
|
||||
color:black;
|
||||
}
|
||||
body.print legend {
|
||||
box-shadow:0px 0px 0px 0px #626bd0;
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ fieldset.Action div.output.grid fieldset.plugin>div.output {
|
||||
}
|
||||
fieldset.Action div.output.tabs fieldset.plugin {
|
||||
display:none;
|
||||
float:left;
|
||||
}
|
||||
fieldset.Action div.output.tabs fieldset.plugin.select {
|
||||
display:block;
|
||||
|
@ -34,6 +34,18 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
|
||||
can.onmotion.select(can, can._output, "fieldset.plugin", sub._target)
|
||||
can.onmotion.select(can, can._action, "div.item", event.target)
|
||||
}}])
|
||||
|
||||
sub.page.Modify(sub, sub._legend, {
|
||||
onmouseenter: function(event) {
|
||||
Volcanos.meta.data.menu && sub.page.Remove(sub, Volcanos.meta.data.menu.first)
|
||||
Volcanos.meta.data.menu = sub.user.carte(event, sub, sub.onaction, sub.onaction.list)
|
||||
|
||||
sub.page.Modify(sub, Volcanos.meta.data.menu.first, {style: {
|
||||
left: event.target.offsetLeft+can.run(event, ["search", "River.onexport.width"]),
|
||||
top: event.target.offsetTop-can._output.scrollTop+event.target.offsetHeight+can.run(event, ["search", "Header.onexport.height"]),
|
||||
}})
|
||||
},
|
||||
})
|
||||
},
|
||||
_share: function(can, msg, share) {
|
||||
can.Conf(can._WIDTH, window.innerWidth)
|
||||
@ -42,12 +54,22 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
|
||||
can.user.title(can.user.Search(can, can._TITLE)||msg.Option(can._TITLE))
|
||||
can.Conf(can._RIVER, "_share"), can.Conf(can._STORM, share)
|
||||
can.onimport._init(can, msg)
|
||||
can.onaction._layout(can, "flow")
|
||||
},
|
||||
_menu: function(can) {
|
||||
!can.user.isMobile && can.run({}, [can._SEARCH, "Header.onimport.menu", can._ACTION,
|
||||
["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"],
|
||||
], function(event, key) { can.onaction._layout(can, key) })
|
||||
},
|
||||
|
||||
height: function(can, height) {
|
||||
can.page.Modify(can, can._target, {style: {
|
||||
height: can.Conf(can._HEIGHT, height),
|
||||
}})
|
||||
can.page.Modify(can, can._output, {style: {
|
||||
height: can.Conf(can._HEIGHT, height-(can.Conf(can._LAYOUT)=="tabs"? 28: 10)),
|
||||
}})
|
||||
},
|
||||
})
|
||||
Volcanos("onengine", {help: "解析引擎", list: [],
|
||||
engine: function(event, page, msg, can, cmds, cb) {
|
||||
@ -74,7 +96,7 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
||||
can.const(
|
||||
"output", "fields",
|
||||
"search", "action", "share", "river", "storm",
|
||||
"title", "topic", "layout", "width", "height",
|
||||
"title", "topic", "layout", "width", "height", "top", "left",
|
||||
"plugin",
|
||||
)
|
||||
|
||||
@ -124,6 +146,11 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
||||
can.onmotion.select(can, can._output, "fieldset.plugin", 0)
|
||||
can.onmotion.select(can, can._action, "div.item", 0)
|
||||
}
|
||||
|
||||
|
||||
var header = can.get("Header", "height")
|
||||
var footer = can.get("Footer", "height")
|
||||
can.set("Action", "height", window.innerHeight-header-footer)
|
||||
},
|
||||
_select: function(can, msg, river, storm) {
|
||||
function key(name) { return can.Conf(can._RIVER)+"."+can.Conf(can._STORM)+"."+name}
|
||||
@ -153,8 +180,8 @@ Volcanos("onexport", {help: "导出数据", list: [],
|
||||
})
|
||||
},
|
||||
size: function(can, msg) {
|
||||
msg.Option("top", can._target.offsetTop)
|
||||
msg.Option("left", can._target.offsetLeft)
|
||||
msg.Option(can._TOP, can._target.offsetTop)
|
||||
msg.Option(can._LEFT, can._target.offsetLeft)
|
||||
msg.Option(can._WIDTH, can._target.offsetWidth)
|
||||
msg.Option(can._HEIGHT, can._target.offsetHeight)
|
||||
},
|
||||
|
@ -224,9 +224,28 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
|
||||
return can.menu
|
||||
},
|
||||
river: function(event, can) { can.onaction.River(can) },
|
||||
black: function(event, can, button) { can.onlayout.topic(can, button) },
|
||||
white: function(event, can, button) { can.onlayout.topic(can, button) },
|
||||
print: function(event, can, button) { can.onlayout.topic(can, "white print") },
|
||||
black: function(event, can, button) {
|
||||
can.onlayout.topic(can, button)
|
||||
|
||||
var header = can.get("Header", "height")
|
||||
var footer = can.get("Footer", "height")
|
||||
can.set("River", "height", window.innerHeight-header-footer)
|
||||
can.set("Action", "height", window.innerHeight-header-footer)
|
||||
},
|
||||
white: function(event, can, button) {
|
||||
can.onlayout.topic(can, button)
|
||||
|
||||
var header = can.get("Header", "height")
|
||||
var footer = can.get("Footer", "height")
|
||||
can.set("River", "height", window.innerHeight-header-footer)
|
||||
can.set("Action", "height", window.innerHeight-header-footer)
|
||||
},
|
||||
print: function(event, can, button) {
|
||||
can.onlayout.topic(can, "white print")
|
||||
|
||||
can.set("River", "height", -1)
|
||||
can.set("Action", "height", -1)
|
||||
},
|
||||
pack: function(event, can) {
|
||||
can.user.input(event, can, [
|
||||
{_input: "text", name: "name", value: "demo"},
|
||||
@ -254,6 +273,9 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
|
||||
shareuser: function(event, can) {
|
||||
can.user.share(can, can.request(event), [can._ACTION, can._SHARE, "type", "login"])
|
||||
},
|
||||
share: function(event, can, arg) {
|
||||
can.user.share(can, can.request(event), [can._ACTION, can._SHARE].concat(arg))
|
||||
},
|
||||
usernick: function(event, can) {
|
||||
can.user.input(event, can, [{_input: "text", name: "usernick", value: can.Conf(can._USERNAME)}], function(ev, button, data, list, args) {
|
||||
can.run(event, ["usernick", list[0]], function(msg) {
|
||||
|
@ -53,6 +53,15 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
}})
|
||||
return item
|
||||
},
|
||||
|
||||
height: function(can, height) {
|
||||
can.page.Modify(can, can._target, {style: {
|
||||
height: can.Conf(can._HEIGHT, height),
|
||||
}})
|
||||
can.page.Modify(can, can._output, {style: {
|
||||
height: can.Conf(can._HEIGHT, height-10),
|
||||
}})
|
||||
},
|
||||
})
|
||||
Volcanos("onengine", {help: "解析引擎", list: [], engine: function(event, can, msg, panel, cmds, cb) {
|
||||
cmds.length == 0 && can.core.Item(can.onengine.river, function(key, value) {
|
||||
|
@ -4,7 +4,11 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
if (event.key == "Escape") { can.onmotion.hide(can) }
|
||||
|
||||
if (event.key == "Enter") { event.stopPropagation(), event.preventDefault()
|
||||
if (event.ctrlKey && can.onaction.select(event, can, 0)) { return }
|
||||
if (event.ctrlKey) {
|
||||
can.type == "*"? can.onimport._plugin(can, can.list[0]): can.onaction.select(event, can, 0)
|
||||
return
|
||||
}
|
||||
if (event.shiftKey) { return can.onaction["完成"](event, can) }
|
||||
can.input(event, event.target.value)
|
||||
}
|
||||
}]},
|
||||
@ -12,37 +16,32 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
]), can.base.isFunc(cb) && cb(msg)
|
||||
can.page.ClassList.add(can, can.ui.display, "content")
|
||||
},
|
||||
_plugin: function(can, line) {
|
||||
can.onappend.plugin(can, {index: line.ctx&&line.cmd!="command"? line.ctx+"."+line.cmd: line.text+"."+line.name||msg.Option("index"), option: line}, function(sub, meta) {
|
||||
sub.run = function(event, cmds, cb) { var msg = can.request(event, line)
|
||||
can.run(event, ["action", "command", "run", meta.index].concat(cmds), function(msg) {
|
||||
can.base.isFunc(cb) && cb(msg)
|
||||
})
|
||||
}
|
||||
}, can.ui.preview)
|
||||
},
|
||||
_table: function(can, msg, fields) { can.onmotion.clear(can, can.ui.content)
|
||||
var table = can.onappend.table(can, msg, function(value, key, index, line) { can.Status("count", index+1)
|
||||
return {text: [key == "text" && can.base.isFunc(line.text) && 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) { var msg = can.request(event, line)
|
||||
can.run(event, ["action", "command", "run", meta.index].concat(cmds), function(msg) {
|
||||
can.base.isFunc(cb) && 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 (can.onaction.select(event, can, index)) { return }
|
||||
can.type == "*" || event.shiftKey? can.onimport._plugin(can, line): can.onaction.select(event, can, index)
|
||||
event.stopPropagation(), event.preventDefault()
|
||||
}}
|
||||
}, can.ui.content, can.core.List((msg.Option("sort")||"ctx,cmd,type,name,text").split(","), function(item) {
|
||||
return fields.indexOf(item)
|
||||
}))
|
||||
table && can.page.Modify(can, can.ui.display, {style: {width: table.offsetWidth}})
|
||||
})); table && can.page.Modify(can, can.ui.display, {style: {width: table.offsetWidth}})
|
||||
},
|
||||
_word: function(can, msg, cmds, fields) {
|
||||
msg = can.request({}, {word: cmds, fields: fields.join(","), sort: msg.Option("sort"), index: msg.Option("index")})
|
||||
_word: function(can, msg, cmds, fields) { can.type = cmds[0]
|
||||
msg.Option({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()
|
||||
can.onimport._table(can, msg, fields)
|
||||
})
|
||||
can.ui.word.setSelectionRange(0, -1)
|
||||
}), can.ui.word.setSelectionRange(0, -1)
|
||||
},
|
||||
|
||||
select: function(can, msg, cmds, cb) { can.ui.word.value = cmds[1]
|
||||
@ -51,14 +50,13 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
can.base.isFunc(cb) && cb(can.onexport.select(can)), can.onmotion.hide(can)
|
||||
}
|
||||
|
||||
can.input = function(event, word) { cmds[1] = word
|
||||
can.input = function(event, word) { cmds[1] = word||cmds[1]
|
||||
can.onimport._word(can, msg, cmds, fields)
|
||||
}
|
||||
}, can.onimport._word(can, msg, cmds, fields)
|
||||
|
||||
can.onmotion.show(can), can.ui.input.focus()
|
||||
can.onimport._word(can, msg, cmds, fields)
|
||||
|
||||
can.run({}, ["search", "Action.onexport.size"], function(msg, top, left, width, height) {
|
||||
can.search(["Action.onexport.size"], function(msg, top, left, width, height) {
|
||||
can.page.Modify(can, can._output, {style: {"max-width": width, "max-height": height-75}})
|
||||
can.page.Modify(can, can._target, {style: {top: top, left: left}})
|
||||
} )
|
||||
@ -72,6 +70,11 @@ Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"]
|
||||
"完成": function(event, can) { can.base.isFunc(can.cb) && can.cb() },
|
||||
|
||||
select: function(event, can, index) {
|
||||
|
||||
if (line.ctx == "web.chat" && line.cmd == "/search") {
|
||||
return can.onimport.select(can, msg, [line.type, line.name, line.text], can.cb)
|
||||
}
|
||||
|
||||
if (can.list && can.list[index]) {
|
||||
var text = can.list[index].text || ""
|
||||
if (can.base.isFunc(text)) {
|
||||
|
@ -17,7 +17,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
|
||||
var height = can.Conf("height")-320; height < 240 && (height = 240)
|
||||
can.page.Modify(can, can.ui.project, {style: {"max-height": height}})
|
||||
can.page.Modify(can, can.ui.content, {style: {"max-height": height}})
|
||||
can.page.Modify(can, can.ui.content, {style: {"min-width": can.Conf("width")-170}})
|
||||
// can.page.Modify(can, can.ui.content, {style: {"min-width": can.Conf("width")-170}})
|
||||
can.page.Modify(can, can.ui.display, {style: {display: "none"}})
|
||||
},
|
||||
_output: function(can, target) {
|
||||
@ -172,7 +172,7 @@ Volcanos("onaction", {help: "控件交互", list: ["项目", "收藏", "搜索",
|
||||
},
|
||||
"项目": function(event, can) {
|
||||
var width = can.Conf("width")-(can.onmotion.toggle(can, can.ui.project)? 170: 0)
|
||||
can.page.Modify(can, can.ui.content, {style: {"min-width": width}})
|
||||
// can.page.Modify(can, can.ui.content, {style: {"min-width": width}})
|
||||
},
|
||||
"收藏": function(event, can) { can.onmotion.toggle(can, can.ui.favor._target) },
|
||||
"搜索": function(event, can) { can.onmotion.toggle(can, can.ui.search) },
|
||||
|
@ -5,6 +5,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
can.onmotion.hidden(can, can._action)
|
||||
can.onimport[can.Option("scale")||"week"](can, msg)
|
||||
can.page.Modify(can, can.ui.profile, {style: {display: "block"}})
|
||||
can.page.Modify(can, can.ui.project, {style: {"max-height": can.ui.content.offsetHeight}})
|
||||
can.page.Modify(can, can.ui.profile, {style: {"max-height": can.ui.content.offsetHeight}})
|
||||
},
|
||||
_content: function(can, msg, head, list, key, get, set) {
|
||||
var hash = {}; msg.Table(function(value, index) {
|
||||
|
@ -3,6 +3,13 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
|
||||
_process: function(can, msg, cmds, cb, silent) {
|
||||
return can.core.CallFunc([can.onimport, msg.Option("_process")], [can, msg, cmds, cb, silent])
|
||||
},
|
||||
_refresh: function(can, msg) {
|
||||
can.core.Timer(parseInt(msg.Option("_delay")||"500"), function() {
|
||||
var sub = can.request({}, {_count: parseInt(msg.Option("_count"))-1})
|
||||
can.onappend._output(can, can.Conf(), sub._event, can.Pack())
|
||||
})
|
||||
return true
|
||||
},
|
||||
_hold: function(can, msg) {
|
||||
return true
|
||||
},
|
||||
@ -39,13 +46,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
|
||||
})
|
||||
return true
|
||||
},
|
||||
_refresh: function(can, msg) {
|
||||
can.core.Timer(parseInt(msg.Option("_delay")||"500"), function() {
|
||||
var sub = can.request({}, {_count: parseInt(msg.Option("_count"))-1})
|
||||
can.onappend._output(can, can.Conf(), sub._event, can.Pack())
|
||||
})
|
||||
return true
|
||||
},
|
||||
_field: function(can, msg) {
|
||||
msg.Table(function(item) { can.onappend._plugin(can, item, {}, function(sub, meta) {
|
||||
sub.run = function(event, cmds, cb, silent) {
|
||||
@ -62,12 +62,54 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
|
||||
return true
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) {
|
||||
Volcanos("onaction", {help: "交互操作", list: ["保存参数", "清空参数", "共享工具", "刷新数据", "复制数据", "下载数据", "清空数据"], _init: function(can, msg, list, cb, target) {
|
||||
},
|
||||
"保存参数": function(event, can) { var meta = can.Conf()
|
||||
var msg = can.request(event, {river: can.Conf("river"), storm: can.Conf("storm"), id: meta.id})
|
||||
can.run(event, ["action", "modify", "arg", JSON.stringify(can.Pack([], true))], function(msg) {
|
||||
can.user.toast(can, "保存成功")
|
||||
})
|
||||
},
|
||||
"清空参数": function(event, can) {
|
||||
can.page.Select(can, can._option, '.args', function(item) { return item.value = "" })
|
||||
},
|
||||
"共享工具": function(event, can) { var meta = can.Conf()
|
||||
can.user.input(event, can, [{name: "name", value: meta.name}], function(event, button, data, list, args) {
|
||||
var msg = can.request(event, {arg: [
|
||||
"type", "field",
|
||||
"name", list[0], "text", JSON.stringify(can.Pack([], true)),
|
||||
"river", meta.ctx||meta.key||"", "storm", meta.index||meta.cmd||meta.name,
|
||||
]})
|
||||
can.run(event, ["search", "Header.onaction.share"])
|
||||
})
|
||||
},
|
||||
"刷新数据": function(event, can) { var meta = can.Conf()
|
||||
can.onappend._output(can, meta, {}, can.Pack([], true))
|
||||
},
|
||||
"复制数据": function(event, can) { var meta = can.Conf(), msg = can._msg
|
||||
var res = [msg.append && msg.append.join(",")]; msg.Table(function(line, index, array) {
|
||||
res.push(can.core.Item(line, function(key, value) { return value }).join(","))
|
||||
})
|
||||
|
||||
res.length > 1 && can.user.copy(event, can, res.join("\n"))
|
||||
msg.result && can.user.copy(event, can, msg.Result())
|
||||
},
|
||||
"下载数据": function(event, can) { var meta = can.Conf(), msg = can._msg
|
||||
var res = [msg.append && msg.append.join(",")]; msg.Table(function(line, index, array) {
|
||||
res.push(can.core.Item(line, function(key, value) { return value }).join(","))
|
||||
})
|
||||
|
||||
res.length > 1 && can.user.download(can, URL.createObjectURL(new Blob([res.join("\n")])), meta.name+".csv")
|
||||
msg.result && can.user.download(can, URL.createObjectURL(new Blob([msg.Result()])), meta.name+".txt")
|
||||
},
|
||||
"清空数据": function(event, can) {
|
||||
can.onmotion.clear(can, can._output)
|
||||
},
|
||||
|
||||
change: function(event, can, name, value, cb) {
|
||||
return can.page.Select(can, can._option, "input.args", function(input) {
|
||||
if (input.name == name && value != input.value) { input.value = value
|
||||
var data = input.dataset || {}; data.action == "auto" && can.run(event, can.Pack(), cb)
|
||||
var data = input.dataset || {}; data.action == "auto" && can.onappend._output(can, can.Conf(), event, can.Pack(), cb)
|
||||
return input
|
||||
}
|
||||
})
|
||||
|
@ -1,15 +1,11 @@
|
||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||
if (can.sup.onimport._process(can.sup, msg)) { return can.base.isFunc(cb) && cb(can, msg) }
|
||||
if (can.onimport._process(can, msg)) { return can.base.isFunc(cb) && cb(can, msg) }
|
||||
|
||||
can.onmotion.clear(can)
|
||||
can.base.isFunc(cb) && cb(msg)
|
||||
|
||||
can.page.Append(can, target, [can.onimport._control(can, msg)])
|
||||
can.onappend.table(can, msg, function(value, key, index, line, array) {
|
||||
return can.onimport._table(can, value, key, index, line, array, cb)
|
||||
})
|
||||
|
||||
can.base.isFunc(cb) && cb(msg)
|
||||
can.onappend.board(can, msg.Result())
|
||||
can.onmotion.story(can, can._output)
|
||||
},
|
||||
@ -20,7 +16,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
return can.run(event, ["action", target.name], function(msg) { can.run() }, true)
|
||||
}
|
||||
|
||||
if (can.sup.onaction.change(event, can.sup, key, value, function(msg) { can.onimport._init(can, msg, [], cb) }).length > 0) { return }
|
||||
if (can.sup.onaction.change(event, can.sup, key, value, function(msg) {}).length > 0) { return }
|
||||
|
||||
}, ondblclick: function(event) {
|
||||
can.onmotion.modify(can, event.target, function(event, value, old) {
|
||||
|
11
proto.js
11
proto.js
@ -72,6 +72,17 @@ var Volcanos = shy("火山架", {args: {}, data: {}, pack: {}, libs: [], cache:
|
||||
can["_"+v.toUpperCase()] = v
|
||||
})
|
||||
},
|
||||
set: function(target, field, value) { var event = {}
|
||||
var msg = can.request(event, {}); msg.Option(field, value)
|
||||
return can.run(event, ["search", target+".onimport."+field])
|
||||
},
|
||||
cmd: function(target, field) {
|
||||
return can.run({}, ["search", target+".onaction."+field])
|
||||
},
|
||||
get: function(target, field) {
|
||||
return can.run({}, ["search", target+".onexport."+field])
|
||||
},
|
||||
search: function(cmds, cb) { can.run({}, ["search"].concat(cmds), cb) },
|
||||
Conf: function(key, value) { return can.core.Value(can._conf, key, value) }, _conf: {},
|
||||
}; can = can || {}; for (var k in proto) { can.hasOwnProperty(k) || (can[k] = proto[k]) }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user