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

opt git.status

This commit is contained in:
shaoying 2021-05-03 15:33:52 +08:00
parent 54af1c8698
commit 2496b5864b
16 changed files with 212 additions and 98 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -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?")) {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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