forked from x/volcanos
opt plugin
This commit is contained in:
parent
52f3801585
commit
03b4897b13
84
frame.js
84
frame.js
@ -235,9 +235,25 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
Option: can.Option, Action: can.Action, Status: can.Status,
|
Option: can.Option, Action: can.Action, Status: can.Status,
|
||||||
}, [item.display||"/plugin/input.js"].concat(Volcanos.meta.volcano).concat(Volcanos.meta.libs), function(input) {
|
}, [item.display||"/plugin/input.js"].concat(Volcanos.meta.volcano).concat(Volcanos.meta.libs), function(input) {
|
||||||
input.Conf(item), input.sup = can, input.run = function(event, cmds, cb, silent) {
|
input.Conf(item), input.sup = can, input.run = function(event, cmds, cb, silent) {
|
||||||
return can.onappend._output(can, meta, event, can.Pack(cmds), cb, silent)
|
if (cmds && cmds[0] == "action" && input.onaction[cmds[1]]) {
|
||||||
|
return input.onaction[cmds[1]](event, input)
|
||||||
|
}
|
||||||
|
|
||||||
|
var sub = can.core.Value(can, "_outputs.-1")
|
||||||
|
if (cmds && cmds[0] == "action" && sub && sub.onaction[cmds[1]]) {
|
||||||
|
return sub.onaction[cmds[1]](event, sub)
|
||||||
|
}
|
||||||
|
|
||||||
|
return can.onappend._output(can, meta, event, can.Pack(cmds, silent), cb, silent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
can.onappend.figure(input, item, item.value, input._target)
|
||||||
|
can.core.Item(input.onaction, function(key, value) {
|
||||||
|
key.indexOf("on") == 0 && (input._target[key] = input._target[key] || function(event) {
|
||||||
|
value(event, input)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
input.onaction && input.onaction._init && input.onaction._init(input, item, [], next, input._target)
|
input.onaction && input.onaction._init && input.onaction._init(input, item, [], next, input._target)
|
||||||
}); return can._inputs[item.name] = input
|
}); return can._inputs[item.name] = input
|
||||||
}; can.core.Next(can.base.Obj(meta.inputs, []), add)
|
}; can.core.Next(can.base.Obj(meta.inputs, []), add)
|
||||||
@ -268,8 +284,28 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
return can.onaction[cmds[1]](event, can)
|
return can.onaction[cmds[1]](event, can)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var feature = can.Conf("feature")
|
||||||
|
var input = feature && feature[cmds[1]]; if (cmds[0] == "action" && input) {
|
||||||
|
can.user.input(event, can, input, function(ev, button, data, list) {
|
||||||
|
can.core.Item(data, function(key, value) {
|
||||||
|
key && value && cmds.push(key, value)
|
||||||
|
})
|
||||||
|
|
||||||
|
can.run(event, cmds, function(msg) {
|
||||||
|
var sub = can.core.Value(can, "_outputs.-1")
|
||||||
|
if (can.core.CallFunc("onimport._process", [sub, msg, cmds, cb], sub)) { return }
|
||||||
|
if (can.core.CallFunc("onimport._process", [can, msg, cmds, cb], can)) { return }
|
||||||
|
typeof cb == "function" && cb(msg)
|
||||||
|
}, silent)
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
return can.run(event, cmds||[], function(msg) {
|
return can.run(event, cmds||[], function(msg) {
|
||||||
if (can.onimport._process(can, msg, cmds, cb)) { return }
|
var sub = can.core.Value(can, "_outputs.-1")
|
||||||
|
if (can.core.CallFunc("onimport._process", [sub, msg, cmds, cb], sub)) { return }
|
||||||
|
if (can.core.CallFunc("onimport._process", [can, msg, cmds, cb], can)) { return }
|
||||||
typeof cb == "function" && cb(msg)
|
typeof cb == "function" && cb(msg)
|
||||||
if (silent) { return }
|
if (silent) { return }
|
||||||
|
|
||||||
@ -281,6 +317,10 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
Option: can.Option, Action: can.Action, Status: can.Status,
|
Option: can.Option, Action: can.Action, Status: can.Status,
|
||||||
}, [display].concat(Volcanos.meta.volcano).concat(Volcanos.meta.libs), function(table) {
|
}, [display].concat(Volcanos.meta.volcano).concat(Volcanos.meta.libs), function(table) {
|
||||||
table.Conf(can.Conf()), table.sup = can, table.run = function(event, cmds, cb, silent) {
|
table.Conf(can.Conf()), table.sup = can, table.run = function(event, cmds, cb, silent) {
|
||||||
|
if (cmds && cmds[0] == "action" && table.onaction[cmds[1]]) {
|
||||||
|
return table.onaction[cmds[1]](event, table)
|
||||||
|
}
|
||||||
|
|
||||||
return can.onappend._output(can, meta, event, can.Pack(cmds, silent), cb, silent)
|
return can.onappend._output(can, meta, event, can.Pack(cmds, silent), cb, silent)
|
||||||
}, table._msg = msg
|
}, table._msg = msg
|
||||||
|
|
||||||
@ -319,6 +359,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
var node = {}; can.core.List(list, function(item) {
|
var node = {}; can.core.List(list, function(item) {
|
||||||
item[field] && can.core.List(item[field].split(split), function(value, index, array) {
|
item[field] && can.core.List(item[field].split(split), function(value, index, array) {
|
||||||
var last = array.slice(0, index).join(split), name = array.slice(0, index+1).join(split)
|
var last = array.slice(0, index).join(split), name = array.slice(0, index+1).join(split)
|
||||||
|
|
||||||
node[name] || (node[name] = can.page.Append(can, node[last]||target, [{view: ["item", "div", value+(index==array.length-1?"":split)], onclick: function(event) {
|
node[name] || (node[name] = can.page.Append(can, node[last]||target, [{view: ["item", "div", value+(index==array.length-1?"":split)], onclick: function(event) {
|
||||||
index < array.length - 1? can.onmotion.toggle(can, node[name]): typeof cb == "function" && cb(event, item)
|
index < array.length - 1? can.onmotion.toggle(can, node[name]): typeof cb == "function" && cb(event, item)
|
||||||
}}, {view: "list", style: {display: "none"}}]).last)
|
}}, {view: "list", style: {display: "none"}}]).last)
|
||||||
@ -361,6 +402,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
case "text":
|
case "text":
|
||||||
item.value = value || item.value || ""
|
item.value = value || item.value || ""
|
||||||
item.className || can.page.ClassList.add(can, item, "args")
|
item.className || can.page.ClassList.add(can, item, "args")
|
||||||
|
item.autocomplete = "off"
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,28 +423,38 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
if (key.indexOf("@") != 0) { return }
|
if (key.indexOf("@") != 0) { return }
|
||||||
var list = can.core.Split(key, "@=", "@=", {simple: true})
|
var list = can.core.Split(key, "@=", "@=", {simple: true})
|
||||||
var pkey = list[0], pval = list[1]||""
|
var pkey = list[0], pval = list[1]||""
|
||||||
|
can.page.Modify(can, target, {autocomplete: "off"})
|
||||||
|
|
||||||
target.type != "button" && target.value.startsWith("@") && (target.value = pval||"")
|
target.type != "button" && target.value.startsWith("@") && (target.value = pval||"")
|
||||||
pkey && can.require(["/plugin/input/"+pkey+".js"], function(can) {
|
pkey && can.require(["/plugin/input/"+pkey+".js"], function(can) {
|
||||||
can.onfigure && can.core.Item(can.onfigure[pkey], function(key, cb) { if (key.startsWith("on")) {
|
can.onfigure && can.core.Item(can.onfigure[pkey], function(key, cb) { if (key.startsWith("on")) {
|
||||||
target[key] = function(event) { cb(event, can, meta, target) }
|
target[key] = function(event) {
|
||||||
|
can._figure && can.page.Remove(can, can._figure.fieldset)
|
||||||
|
var figure = can.onappend.field(can, "input "+pkey, {}, document.body)
|
||||||
|
can._figure = figure; can.onlayout.figure(can, figure, event)
|
||||||
|
|
||||||
|
cb(event, can, meta, target, figure)
|
||||||
|
}
|
||||||
} })
|
} })
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
_plugin: function(can, msg, meta, cb, target) {
|
||||||
|
meta.feature = can.base.Obj(msg.meta&&msg.meta[0] || "{}", {})
|
||||||
|
meta.inputs = can.base.Obj(msg.list&&msg.list[0] || "[]", [])
|
||||||
|
|
||||||
|
meta.name = meta.name || msg.name&&msg.name[0] || "story"
|
||||||
|
meta.help = meta.help || msg.help&&msg.help[0] || "story"
|
||||||
|
meta.width = meta.width || can.Conf("width")
|
||||||
|
meta.type = "story"
|
||||||
|
|
||||||
|
can.onappend._init(can, meta, ["/plugin/state.js"], function(sub) {
|
||||||
|
typeof cb == "function" && cb(sub, meta)
|
||||||
|
sub.page.Remove(sub, sub._legend)
|
||||||
|
}, target || can._output)
|
||||||
|
},
|
||||||
plugin: function(can, meta, cb, target) { meta = meta || {}
|
plugin: function(can, meta, cb, target) { meta = meta || {}
|
||||||
can.run({}, ["action", "command", meta.index], function(msg) {
|
can.run({}, ["action", "command", meta.index], function(msg) {
|
||||||
meta.feature = can.base.Obj(msg.meta&&msg.meta[0] || "{}", {})
|
can.onappend._plugin(can, msg, meta, cb, target)
|
||||||
meta.inputs = can.base.Obj(msg.list&&msg.list[0] || "[]", [])
|
|
||||||
|
|
||||||
meta.name = meta.name || msg.name&&msg.name[0] || "story"
|
|
||||||
meta.help = meta.help || msg.help&&msg.help[0] || "story"
|
|
||||||
meta.width = meta.width || can._target.offsetWidth
|
|
||||||
meta.type = "story"
|
|
||||||
|
|
||||||
can.onappend._init(can, meta, ["/plugin/state.js"], function(story) {
|
|
||||||
typeof cb == "function" && cb(story, meta)
|
|
||||||
story.page.Remove(story, story._legend)
|
|
||||||
}, target || can._output)
|
|
||||||
}, true)
|
}, true)
|
||||||
},
|
},
|
||||||
plugins: function(can, meta, cb, target) {
|
plugins: function(can, meta, cb, target) {
|
||||||
@ -653,7 +705,7 @@ Volcanos("onmotion", {help: "动态交互", list: [], _init: function(can, targe
|
|||||||
show: function(can, time, cb, target) { target = target || can._target
|
show: function(can, time, cb, target) { target = target || can._target
|
||||||
time = typeof time == "object"? time: {value: 10, length: time||20}
|
time = typeof time == "object"? time: {value: 10, length: time||20}
|
||||||
|
|
||||||
can.page.Modify(can, target, {style: {opacity: 0, display: ""}})
|
can.page.Modify(can, target, {style: {opacity: 0, display: "block"}})
|
||||||
can.core.Timer(time, function(event, value, index) {
|
can.core.Timer(time, function(event, value, index) {
|
||||||
can.page.Modify(can, target, {style: {opacity: (index+1)/time.length}})
|
can.page.Modify(can, target, {style: {opacity: (index+1)/time.length}})
|
||||||
}, cb)
|
}, cb)
|
||||||
|
@ -56,6 +56,7 @@ Volcanos("core", {help: "核心模块",
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
Value: function(data, key, value) {
|
Value: function(data, key, value) {
|
||||||
|
if (data == undefined) { return }
|
||||||
if (key == undefined) { return data }
|
if (key == undefined) { return data }
|
||||||
if (typeof key == "object") { for (var k in key) {
|
if (typeof key == "object") { for (var k in key) {
|
||||||
arguments.callee.call(this, data, k, key[k])
|
arguments.callee.call(this, data, k, key[k])
|
||||||
@ -65,6 +66,7 @@ Volcanos("core", {help: "核心模块",
|
|||||||
if (data[key] != undefined) { return data[key] }
|
if (data[key] != undefined) { return data[key] }
|
||||||
|
|
||||||
var p = data, ls = key.split("."); while (p && ls.length > 0) {
|
var p = data, ls = key.split("."); while (p && ls.length > 0) {
|
||||||
|
if (ls[0] == "-1") { ls[0] = p.length-1 }
|
||||||
p = p[ls[0]], ls = ls.slice(1)
|
p = p[ls[0]], ls = ls.slice(1)
|
||||||
}; return p
|
}; return p
|
||||||
},
|
},
|
||||||
@ -75,8 +77,8 @@ Volcanos("core", {help: "核心模块",
|
|||||||
var ls = func.toString(); ls = ls.split(")")[0], ls = ls.split("(")[1]
|
var ls = func.toString(); ls = ls.split(")")[0], ls = ls.split("(")[1]
|
||||||
|
|
||||||
var msg = args["msg"], can = args["can"], echo = false
|
var msg = args["msg"], can = args["can"], echo = false
|
||||||
var list = []; this.List(ls.split(","), function(item) { item = item.trim()
|
var list = []; this.List(ls.split(","), function(item, index) { item = item.trim()
|
||||||
list.push(args[item] || msg&&msg.Option(item) || can&&can.Conf(item) || args)
|
list.push(args[index] || args[item] || msg&&msg.Option(item) || can&&can.Conf(item))
|
||||||
if (item == "cb") { echo = true }
|
if (item == "cb") { echo = true }
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -236,6 +236,13 @@ body>fieldset.input.key {
|
|||||||
body>fieldset.input.date {
|
body>fieldset.input.date {
|
||||||
z-index:70;
|
z-index:70;
|
||||||
}
|
}
|
||||||
|
body>fieldset.input.date table {
|
||||||
|
text-align:center;
|
||||||
|
width:260px;
|
||||||
|
}
|
||||||
|
body>fieldset.input.date table td:hover {
|
||||||
|
background-color:red;
|
||||||
|
}
|
||||||
|
|
||||||
div.carte {
|
div.carte {
|
||||||
position:fixed;
|
position:fixed;
|
||||||
|
@ -2,38 +2,28 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta,
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta, list, cb, target) {
|
Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta, list, cb, target) {
|
||||||
can.core.Item(can.onaction, function(key, value) {
|
typeof cb == "function" && cb(); switch (meta.type) {
|
||||||
key.indexOf("on") == 0 && (can._target[key] = can._target[key] || function(event) {
|
|
||||||
value(event, can)
|
|
||||||
})
|
|
||||||
}) , typeof cb == "function" && cb()
|
|
||||||
|
|
||||||
switch (meta.type) {
|
|
||||||
case "textarea":
|
case "textarea":
|
||||||
case "text":
|
case "text":
|
||||||
!target.placeholder && (target.placeholder = meta.name || "")
|
!target.placeholder && (target.placeholder = can.user.trans(can, meta.name) || "")
|
||||||
!target.title && (target.title = target.placeholder)
|
!target.title && (target.title = target.placeholder)
|
||||||
break
|
break
|
||||||
case "button": meta.action == "auto" && can._target.click(); break
|
|
||||||
case "select": meta.value && (target.value = meta.value); break
|
case "select": meta.value && (target.value = meta.value); break
|
||||||
|
case "button": meta.action == "auto" && target.click(); break
|
||||||
}
|
}
|
||||||
|
|
||||||
can.onappend.figure(can, meta, meta.value, target)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
"upload": function(event, can) { can.user.upload(event, can) },
|
"upload": function(event, can) { can.user.upload(event, can) },
|
||||||
"关闭": function(event, can) { can.page.Remove(can, can.sup._target) },
|
|
||||||
"上传": function(event, can) { can.user.upload(event, can) },
|
|
||||||
"执行": function(event, can) { can.run(event) },
|
"执行": function(event, can) { can.run(event) },
|
||||||
"刷新": function(event, can) { can.run(event) },
|
"刷新": function(event, can) { can.run(event) },
|
||||||
"查看": function(event, can) { can.run(event) },
|
"查看": function(event, can) { can.run(event) },
|
||||||
"返回": function(event, can) {
|
"返回": function(event, can) {
|
||||||
can.sup._history.pop(); var his = can.sup._history.pop(); if (his) {
|
can.sup._history.pop(); for (var his = can.sup._history.pop(); his; his = can.sup._history.pop()) {
|
||||||
|
if (his[0] == "action") { continue }
|
||||||
can.page.Select(can, can._option, "textarea.args,input.args,select.args", function(item, index) {
|
can.page.Select(can, can._option, "textarea.args,input.args,select.args", function(item, index) {
|
||||||
item.value = his[index] || ""
|
item.value = his[index] || ""
|
||||||
})
|
}), can.run(event); break
|
||||||
}
|
}
|
||||||
can.run(event)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
onchange: function(event, can) {
|
onchange: function(event, can) {
|
||||||
@ -41,58 +31,22 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta,
|
|||||||
},
|
},
|
||||||
ondblclick: function(event, can) {
|
ondblclick: function(event, can) {
|
||||||
if (can.Conf("type") == "text") { event.target.setSelectionRange(0, -1) }
|
if (can.Conf("type") == "text") { event.target.setSelectionRange(0, -1) }
|
||||||
if (can.Conf("type") == "textarea") { event.target.setSelectionRange(0, -1) }
|
|
||||||
},
|
},
|
||||||
onclick: function(event, can) { var msg = can.sup.request(event)
|
onclick: function(event, can) {
|
||||||
// 插件回调
|
if (can.Conf("type") == "button") { can.run(event, ["action", can.Conf("name")].concat(can.sup.Pack())) }
|
||||||
var name = can.Conf("name"), action = can.Conf("action")
|
|
||||||
var sub = can.sup._outputs && can.sup._outputs[can.sup._outputs.length-1]
|
|
||||||
var cb = sub && sub.onaction && (sub.onaction[action] || sub.onaction[name])
|
|
||||||
if (typeof cb == "function") { return cb(event, sub, name) }
|
|
||||||
|
|
||||||
// 交互回调
|
|
||||||
var feature = can.sup.Conf("feature")
|
|
||||||
var input = feature && feature[name]; if (input) {
|
|
||||||
return can.sup.onaction.input(event, can.sup, name, function(msg) {
|
|
||||||
can.user.toast(can, can.Conf("value")+"成功")
|
|
||||||
if (can.sup._outputs && can.sup._outputs.length > 0) { var i = can.sup._outputs.length - 1
|
|
||||||
can.sup._outputs[i].onimport._process && can.sup._outputs[i].onimport._process(can.sup._outputs[i], msg)
|
|
||||||
return
|
|
||||||
}; can.sup.onimport._process(can.sup, msg)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 控件回调
|
|
||||||
var cb = can.onaction[action] || can.onaction[name]
|
|
||||||
if (typeof cb == "function") { return cb(event, can, name) }
|
|
||||||
|
|
||||||
// 组件回调
|
|
||||||
var cb = can.sup.onaction[action] || can.sup.onaction[name]
|
|
||||||
if (typeof cb == "function") { return cb(event, can, name) }
|
|
||||||
|
|
||||||
// 通用回调
|
|
||||||
if (can.Conf("type") == "button") { can.run(event, [name].concat(can.sup.Pack())) }
|
|
||||||
},
|
},
|
||||||
|
|
||||||
onkeydown: function(event, can) { var target = event.target
|
onkeydown: function(event, can) { var target = event.target
|
||||||
can.onkeypop.input(event, can, target)
|
can.onkeypop.input(event, can, target); switch (event.key) {
|
||||||
switch (event.key) {
|
|
||||||
case "Enter":
|
case "Enter":
|
||||||
if (can.Conf("type") == "text") { event.target.setSelectionRange(0, -1), can.run(event) }
|
if (can.Conf("type") == "text") { event.target.setSelectionRange(0, -1), can.run(event) }
|
||||||
if (can.Conf("type") == "textarea") { if (!event.ctrlKey) { break }; can.run(event) }
|
if (can.Conf("type") == "textarea") { if (event.ctrlKey) { break } can.run(event) }
|
||||||
event.stopPropagation(), event.preventDefault()
|
event.stopPropagation(), event.preventDefault(); break
|
||||||
break
|
case "b": if (event.ctrlKey) { can.CloneInput() } break
|
||||||
case "b": if (!event.ctrlKey) { break }; can.CloneInput(); break
|
case "m": if (event.ctrlKey) { can.CloneField() } break
|
||||||
case "m": if (!event.ctrlKey) { break }; can.CloneField(); break
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onkeyup: function(event, can) {
|
|
||||||
switch (event.key) {
|
|
||||||
case "Enter":
|
|
||||||
if (can.Conf("type") == "textarea") { break }
|
|
||||||
event.stopPropagation(), event.preventDefault()
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
onkeyup: function(event, can) { },
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: []})
|
Volcanos("onexport", {help: "导出数据", list: []})
|
||||||
|
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
Volcanos("onfigure", {help: "控件详情", list: [],
|
|
||||||
city: {click: function(event, can, value, cmd, target, figure) {
|
|
||||||
function run() {figure.output.innerHTML = ""
|
|
||||||
can.Run(event, ["action", "input", can.item.name, target.value], function(msg) {
|
|
||||||
can.page.AppendTable(can, msg, figure.output, msg.append, function(event, value, key, index, tr, td) {
|
|
||||||
target.value = value; msg.Option("_refresh") && run()
|
|
||||||
})
|
|
||||||
}, true)
|
|
||||||
}
|
|
||||||
run()
|
|
||||||
}},
|
|
||||||
})
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
|||||||
fieldset.input.date {
|
|
||||||
background-color:black;
|
|
||||||
position:fixed;
|
|
||||||
z-index:100;
|
|
||||||
}
|
|
||||||
fieldset.input.date div.action>hr {
|
|
||||||
clear:both;
|
|
||||||
}
|
|
||||||
fieldset.input.date div.output table {
|
|
||||||
text-align:center;
|
|
||||||
width:260px;
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
Volcanos("onfigure", {help: "控件详情", list: [], date: {onclick: function(event, can, item, target) {
|
Volcanos("onfigure", {help: "控件详情", list: [], date: {onclick: function(event, can, item, target, figure) {
|
||||||
|
|
||||||
// 设置输入
|
// 设置输入
|
||||||
function set(now) {
|
function set(now) {
|
||||||
@ -6,10 +6,6 @@ Volcanos("onfigure", {help: "控件详情", list: [], date: {onclick: function(e
|
|||||||
item && item.action == "auto" && can.run({})
|
item && item.action == "auto" && can.run({})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加插件
|
|
||||||
can._figure && can.page.Remove(can, can._figure.fieldset)
|
|
||||||
var figure = can.onappend.field(can, "input date", {}, document.body)
|
|
||||||
can._figure = figure; can.onlayout.figure(can, figure, event)
|
|
||||||
figure.table = can.page.Append(can, figure.output, [{type: "table"}]).first
|
figure.table = can.page.Append(can, figure.output, [{type: "table"}]).first
|
||||||
|
|
||||||
// 添加控件
|
// 添加控件
|
||||||
@ -73,5 +69,5 @@ Volcanos("onfigure", {help: "控件详情", list: [], date: {onclick: function(e
|
|||||||
for (var day = new Date(end); end.getDay() != 0 && day < tail; day.setDate(day.getDate()+1)) {add(day, "next")}
|
for (var day = new Date(end); end.getDay() != 0 && day < tail; day.setDate(day.getDate()+1)) {add(day, "next")}
|
||||||
return now
|
return now
|
||||||
}; show(now)
|
}; show(now)
|
||||||
}} }, ["/plugin/input/date.css"])
|
}} }, [])
|
||||||
|
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
fieldset.input.key div.output {
|
|
||||||
max-height:400px;
|
|
||||||
overflow:auto;
|
|
||||||
}
|
|
@ -1,23 +1,19 @@
|
|||||||
Volcanos("onfigure", {help: "控件详情", list: [], key: {onclick: function(event, can, item, target) { function run() {
|
Volcanos("onfigure", {help: "控件详情", list: [], key: {onclick: function(event, can, item, target, figure) { function run() {
|
||||||
var msg = can.request(event, can.Option()); msg.Option("action", item._action)
|
var msg = can.request(event, can.Option())
|
||||||
can.run(event, ["action", "inputs", item.name, target.value], function(msg) {
|
can.run(event, ["action", "inputs", item.name, target.value], function(msg) {
|
||||||
if (!msg.append) { return }
|
if (!msg.append) { return }
|
||||||
|
|
||||||
can._figure && can.page.Remove(can, can._figure.fieldset)
|
|
||||||
var figure = can.onappend.field(can, "input key", {}, document.body)
|
|
||||||
can._figure = figure; can.onlayout.figure(can, figure, event)
|
|
||||||
|
|
||||||
can.onappend._action(can, [
|
can.onappend._action(can, [
|
||||||
{button: ["清空", function(event) { target.value = "" }]},
|
{button: ["清空", function(event) { target.value = "" }]},
|
||||||
{button: ["关闭", function(event) { can.page.Remove(can, can._figure.fieldset) }]},
|
{button: ["关闭", function(event) { can.page.Remove(can, figure.fieldset) }]},
|
||||||
], can._figure.action)
|
], figure.action)
|
||||||
|
|
||||||
can.onappend.table(can, "content", msg, function(value, key, index, line) {
|
can.onappend.table(can, "content", msg, function(value, key, index, line) {
|
||||||
return {type: "td", inner: value, onclick: function() {
|
return {type: "td", inner: value, onclick: function() {
|
||||||
target.value = value; msg.Option("_refresh") && run()
|
target.value = value, msg.Option("_refresh") && run()
|
||||||
can.page.Remove(can, can._figure.fieldset)
|
can.page.Remove(can, figure.fieldset)
|
||||||
}}
|
}}
|
||||||
}, can._figure.output)
|
}, figure.output)
|
||||||
}, true)
|
}, true)
|
||||||
}; run() }}, }, ["/plugin/input/key.css"])
|
}; run() }}, }, [])
|
||||||
|
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, list, cb, target) {
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, list, cb, target) {
|
|
||||||
},
|
|
||||||
})
|
|
@ -1,17 +1,18 @@
|
|||||||
Volcanos("onfigure", {help: "控件详情", list: [],
|
Volcanos("onfigure", {help: "控件详情", list: [],
|
||||||
province: {click: function(event, can, value, cmd, target, figure) {
|
province: {onclick: function(event, can, item, target, figure) {
|
||||||
figure.fieldset.style.left = "20px"
|
can.onappend._action(can, [
|
||||||
figure.fieldset.style.top = "200px"
|
{button: ["清空", function(event) { target.value = "" }]},
|
||||||
|
{button: ["关闭", function(event) { can.page.Remove(can, figure.fieldset) }]},
|
||||||
|
], figure.action)
|
||||||
|
|
||||||
var china_chart = echarts.init(can.page.Append(can, figure.output, [{type: "div", style: {width: "600px", height: "400px"}}]).last);
|
can.page.Modify(can, figure.fieldset, {style: {left: 120}})
|
||||||
|
can.require(["/require/github.com/shylinux/echarts/echarts.js","/require/github.com/shylinux/echarts/china.js"], function() {
|
||||||
var option = {geo: {map: 'china'}};
|
var china_chart = echarts.init(can.page.Append(can, figure.output, [{type: "div", style: {width: "600px", height: "400px"}}]).first);
|
||||||
china_chart.setOption(option);
|
china_chart.setOption({geo: {map: 'china'}}), china_chart.on('click', function (params) {
|
||||||
|
target.value = params.name, msg.Option("_refresh") && run()
|
||||||
china_chart.on('click', function (params) {
|
can.page.Remove(can, figure.fieldset)
|
||||||
target.value = params.name;
|
})
|
||||||
});
|
})
|
||||||
// , ["require/github.com/shylinux/echarts/echarts.js","require/github.com/shylinux/echarts/china.js"])
|
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, list, cb, target) {
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
Volcanos("onfigure", {help: "控件详情", list: [],
|
|
||||||
upload: {click: function(event, can, value, cmd, target, figure) {figure.stick = true
|
|
||||||
var begin = new Date();
|
|
||||||
function show(event, value, total, loaded) {
|
|
||||||
var now = new Date(); can.page.Appends(can, figure.output, [
|
|
||||||
{view: ["progress"], style: {height: "10px", border: "solid 2px red"}, list: [{
|
|
||||||
view: ["progress"], style: {height: "10px", width: value + "%", background: "red"},
|
|
||||||
}]},
|
|
||||||
{text: [value+"%", "div"], style: {"float": "right"}},
|
|
||||||
{text: [can.base.Duration(now - begin), "div"], style: {"float": "left"}},
|
|
||||||
{text: [can.base.Size(loaded)+"/"+can.base.Size(total), "div"], style: {"text-align": "center"}},
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
var action = can.page.AppendAction(can, figure.action, [
|
|
||||||
{type: "input", data: {name: "upload", type: "file", onchange: function(event) {
|
|
||||||
var file = action.upload.files[0]
|
|
||||||
console.log(file)
|
|
||||||
show(event, 0, file.size, 0)
|
|
||||||
}}, style: {width: "200px"}}, "上传", "关闭"], function(event, value, cmd) {
|
|
||||||
if (action.upload.files.length == 0) {return action.upload.focus()}
|
|
||||||
if (value == "关闭") {figure.stick = false; return}
|
|
||||||
|
|
||||||
var msg = can.Event(event);
|
|
||||||
can.page.Select(can, can._plugin.option, "input", function(item) {
|
|
||||||
item.name && item.value && msg.Option(item.name, item.value)
|
|
||||||
})
|
|
||||||
|
|
||||||
// 上传文件
|
|
||||||
begin = new Date();
|
|
||||||
msg._progress = show
|
|
||||||
msg.upload = action.upload.files[0];
|
|
||||||
can.run(event, ["action", "upload"], function(msg) {
|
|
||||||
can.user.toast(can, "上传成功")
|
|
||||||
}, true);
|
|
||||||
})
|
|
||||||
}},
|
|
||||||
})
|
|
||||||
|
|
@ -23,7 +23,7 @@ body fieldset div.story[data-type=spark] {
|
|||||||
background-color:#2169a9; color:white;
|
background-color:#2169a9; color:white;
|
||||||
box-shadow: 4px 4px 10px 1px #626bd0;
|
box-shadow: 4px 4px 10px 1px #626bd0;
|
||||||
border-left:solid 4px blue;
|
border-left:solid 4px blue;
|
||||||
padding:4px 10px; margin:10px;
|
padding:4px 10px; margin:10px 0px;
|
||||||
}
|
}
|
||||||
body fieldset div.story[data-type=spark] span:hover {
|
body fieldset div.story[data-type=spark] span:hover {
|
||||||
background-color:#c10c8a;
|
background-color:#c10c8a;
|
||||||
|
@ -30,48 +30,28 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
|
|||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
_refresh: function(can, msg) {
|
_refresh: function(can, msg) {
|
||||||
can.core.Timer(500, function(timer) {
|
can.core.Timer(parseInt(msg.Option("_delay")||"500"), function() {
|
||||||
var sub = can.request({}, {_count: parseInt(msg.Option("_count"))-1})
|
var sub = can.request({}, {_count: parseInt(msg.Option("_count"))-1})
|
||||||
can.onappend._output(can, can.Conf(), {}, can.Pack())
|
can.onappend._output(can, can.Conf(), sub._event, can.Pack())
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_field: function(can, msg) {
|
_field: function(can, msg) {
|
||||||
msg.Table(function(value) {
|
can.onappend._plugin(can, msg, {}, function(sub, meta) {
|
||||||
value.feature = can.base.Obj(msg.meta&&msg.meta[0]||"{}", {})
|
sub.run = function(event, cmds, cb, silent) {
|
||||||
value.inputs = can.base.Obj(msg.list&&msg.list[0]||"[]", [])
|
var res = can.request(event); can.core.Item(can.Option(), function(key, value) {
|
||||||
value.width = can._target.offsetWidth
|
res.Option(key) || res.Option(key, value)
|
||||||
value.type = "story"
|
})
|
||||||
|
can.run(event, (msg["_prefix"]||[]).concat(cmds), cb, true)
|
||||||
can.onappend._init(can, value, ["/plugin/state.js"], function(sub) {
|
}
|
||||||
sub.run = function(event, cmds, cb, silent) {
|
|
||||||
var res = can.request(event)
|
|
||||||
can.core.Item(can.Option(), function(key, value) {
|
|
||||||
res.Option(key) || res.Option(key, value)
|
|
||||||
})
|
|
||||||
can.run(event, (msg["_prefix"]||[]).concat(cmds), cb, true)
|
|
||||||
}
|
|
||||||
}, can._output)
|
|
||||||
})
|
})
|
||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
},
|
},
|
||||||
input: function(event, can, name, cb) { var feature = can.Conf("feature")
|
|
||||||
var msg = can.request(event, can.Option())
|
|
||||||
feature[name]? can.user.input(event, can, feature[name], function(ev, button, data, list) {
|
|
||||||
var args = ["action", name]; can.core.Item(data, function(key, value) {
|
|
||||||
key && value && args.push(key, value)
|
|
||||||
})
|
|
||||||
|
|
||||||
var sub = can._outputs && can._outputs[can._outputs.length-1] || can
|
|
||||||
sub.run(event, args, function(msg) { typeof cb == "function" && cb(msg) }, true)
|
|
||||||
return true
|
|
||||||
}): can.run(event, ["action", name], function(msg) { typeof cb == "function" && cb(msg) }, true)
|
|
||||||
},
|
|
||||||
change: function(event, can, name, value, cb) {
|
change: function(event, can, name, value, cb) {
|
||||||
can.page.Select(can, can._option, "input.args", function(input) {
|
can.page.Select(can, can._option, "input.args", function(input) {
|
||||||
if (input.name == name && value != input.value) { input.value = value;
|
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.run(event, can.Pack(), cb)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -2,8 +2,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
typeof cb == "function" && cb(msg)
|
typeof cb == "function" && cb(msg)
|
||||||
can.msg = msg, can.data = msg.Table()
|
can.msg = msg, can.data = msg.Table()
|
||||||
can.dir_root = msg.Option("dir_root")
|
can.dir_root = msg.Option("dir_root")
|
||||||
can._tree = can.onimport._tree(can, msg)
|
|
||||||
can.Action("scale", parseInt(msg.Option("scale")||"1"))
|
can.Action("scale", parseInt(msg.Option("scale")||"1"))
|
||||||
|
can._tree = can.onimport._tree(can, msg.Table(), "path", "/")
|
||||||
|
|
||||||
can.onmotion.clear(can)
|
can.onmotion.clear(can)
|
||||||
can.onappend.plugins(can, {index: "web.wiki.draw"}, function(sub) {
|
can.onappend.plugins(can, {index: "web.wiki.draw"}, function(sub) {
|
||||||
@ -23,20 +23,24 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
_tree: function(can, msg) { var list = {}
|
_tree: function(can, list, field, split) {
|
||||||
msg.Table(function(value, index) {
|
var node = {}; can.core.List(list, function(item) {
|
||||||
value.path && can.core.List(value.path.split("/"), function(item, index, array) {
|
item[field] && can.core.List(item[field].split(split), function(value, index, array) {
|
||||||
var last = array.slice(0, index).join("/") || ""
|
var last = array.slice(0, index).join(split) || "", name = array.slice(0, index+1).join(split)
|
||||||
var name = array.slice(0, index+1).join("/")
|
if (!value || node[name]) { return }
|
||||||
list[last] = list[last] || {name: last, list: []}
|
|
||||||
if (!item || list[name]) { return }
|
node[last] = node[last] || {name: last, list: []}
|
||||||
list[last].list.push(list[name] = {hide: true, file: value.path, name: item+(index==array.length-1? "": "/"), last: last, list: []})
|
node[last].list.push(node[name] = {
|
||||||
|
name: value+(index==array.length-1? "": split),
|
||||||
|
meta: item, list: [], last: last,
|
||||||
|
file: item[field], hide: true,
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
return list
|
return node
|
||||||
},
|
},
|
||||||
_height: function(can, tree) {
|
_height: function(can, tree) {
|
||||||
if (!tree) { return }
|
if (!tree) { return 0 }
|
||||||
if (tree.hide) { return tree.height = 1 }
|
if (tree.hide) { return tree.height = 1 }
|
||||||
if (tree.list.length == 0) { return tree.height = 1 }
|
if (tree.list.length == 0) { return tree.height = 1 }
|
||||||
|
|
||||||
@ -66,17 +70,16 @@ Volcanos("onaction", {help: "操作数据", list: ["编辑", ["view", "横向",
|
|||||||
},
|
},
|
||||||
|
|
||||||
_show: function(can, args, layout) {
|
_show: function(can, args, layout) {
|
||||||
can.page.Remove(can, can.inner), can.onappend.plugin(can, {
|
can.onappend.plugin(can, {
|
||||||
index: "web.code.inner", args: args,
|
index: "web.code.inner", args: args,
|
||||||
_action: ["关闭", "最大", "分屏", "复制"],
|
_action: ["关闭", "最大", "分屏", "复制"],
|
||||||
width: layout.width, height: layout.height,
|
width: layout.width, height: layout.height,
|
||||||
}, function(sub) { can.inner = sub._target
|
}, function(sub) { can.page.Modify(can, sub._target, {style: layout})
|
||||||
sub.run = function(event, cmds, cb, silent) {
|
sub.run = function(event, cmds, cb, silent) {
|
||||||
can.run(event, ["action", "inner"].concat(cmds), function(msg) {
|
can.run(event, ["action", "inner"].concat(cmds), function(msg) {
|
||||||
typeof cb == "function" && cb(msg)
|
typeof cb == "function" && cb(msg)
|
||||||
}, true)
|
}, true)
|
||||||
}
|
}
|
||||||
can.page.Modify(can, sub._target, {style: layout})
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_draw: function(can, tree, x, y) { var sub = can.sub, name = tree.name || can.Option("name") || "."
|
_draw: function(can, tree, x, y) { var sub = can.sub, name = tree.name || can.Option("name") || "."
|
||||||
@ -151,8 +154,8 @@ Volcanos("onaction", {help: "操作数据", list: ["编辑", ["view", "横向",
|
|||||||
},
|
},
|
||||||
"横向": function(event, can) {
|
"横向": function(event, can) {
|
||||||
if (!can._tree[""]) { return }
|
if (!can._tree[""]) { return }
|
||||||
|
|
||||||
can.onmotion.clear(can, can.sub.svg)
|
can.onmotion.clear(can, can.sub.svg)
|
||||||
|
|
||||||
can.onimport._height(can, can._tree[""])
|
can.onimport._height(can, can._tree[""])
|
||||||
can.sub.svg.Val("height", can._tree[""].height*30)
|
can.sub.svg.Val("height", can._tree[""].height*30)
|
||||||
can.width = 0, can.onaction._draw(can, can._tree[""], 0, 0)
|
can.width = 0, can.onaction._draw(can, can._tree[""], 0, 0)
|
||||||
|
180
plugin/table.js
180
plugin/table.js
@ -1,47 +1,113 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
if (can.onimport._process(can, msg)) { return typeof cb == "function" && cb(can, msg) }
|
if (can.onimport._process(can, msg)) { return typeof cb == "function" && cb(can, msg) }
|
||||||
|
if (can.sup.onimport._process(can.sup, msg)) { return typeof cb == "function" && cb(can, msg) }
|
||||||
|
|
||||||
|
can.onmotion.clear(can)
|
||||||
can.ui = can.onlayout.display(can)
|
can.ui = can.onlayout.display(can)
|
||||||
// can.ui = can.page.Appends(can, target, [can.onimport._control(can, msg)].concat([
|
typeof cb == "function" && cb(msg)
|
||||||
// {view: ["content", "div"]}, {view: ["display", "pre"]},
|
|
||||||
// ]))
|
|
||||||
|
|
||||||
|
can.page.Append(can, can.ui.content, [can.onimport._control(can, msg)])
|
||||||
can.onappend.table(can, "content", msg, function(value, key, index, line, array) {
|
can.onappend.table(can, "content", msg, function(value, key, index, line, array) {
|
||||||
return can.onimport._table(can, value, key, index, line, array)
|
return can.onimport._table(can, value, key, index, line, array)
|
||||||
}, can.ui.content)
|
}, can.ui.content)
|
||||||
|
|
||||||
can.onappend.board(can, "content", msg.Result(), can.ui.display)
|
can.onappend.board(can, "content", msg.Result(), can.ui.display)
|
||||||
can.onimport._board(can, msg)
|
can.onimport._board(can, msg)
|
||||||
|
|
||||||
typeof cb == "function" && cb(msg)
|
|
||||||
},
|
},
|
||||||
|
_table: function(can, value, key, index, line, array) {
|
||||||
|
return {text: [value, "td"], onclick: function(event) { var target = event.target
|
||||||
|
if (target.tagName == "INPUT" && target.type == "button") { var msg = can.sup.request(event, can.Option())
|
||||||
|
key == "value"? can.core.List(array, function(item, index) { msg.Option(item.key, item.value) }): msg.Option(line)
|
||||||
|
return can.run(event, ["action", target.name], function(msg) { can.run() }, true)
|
||||||
|
}
|
||||||
|
can.sup.onaction.change(event, can.sup, key, value, function(msg) { can.onimport._init(can, msg) })
|
||||||
|
|
||||||
|
}, ondblclick: function(event) {
|
||||||
|
can.onmotion.modify(can, event.target, function(event, value, old) {
|
||||||
|
var msg = can.sup.request(event, can.Option());
|
||||||
|
can.run(event, ["action", "modify", key == "value"? line.key: key, value], function(msg) { }, true)
|
||||||
|
})
|
||||||
|
}, onmouseover: function(event) {
|
||||||
|
can.user.toast(can, index+1+"/"+array.length)
|
||||||
|
}}
|
||||||
|
},
|
||||||
|
_board: function(can, msg) {
|
||||||
|
can.page.Select(can, can._output, ".story", function(item) { var data = item.dataset
|
||||||
|
can.page.Modify(can, item, {style: can.base.Obj(data.style)})
|
||||||
|
can.core.CallFunc(can.onimport[data.type], [can, data, item])
|
||||||
|
})
|
||||||
|
},
|
||||||
|
spark: function(can, list, target) {
|
||||||
|
if (list["name"] == "inner") {
|
||||||
|
target.title = "点击复制", target.onclick = function(event) {
|
||||||
|
can.user.copy(event, can, target.innerText)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
can.page.Select(can, target, "span", function(item) {
|
||||||
|
item.title = "点击复制", item.onclick = function(event) {
|
||||||
|
can.user.copy(event, can, item.innerText)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
_process: function(can, msg) {
|
||||||
|
var cb = can.onimport[msg.Option("_process")]
|
||||||
|
return typeof cb == "function" && cb(can, msg)
|
||||||
|
},
|
||||||
|
_follow: function(can, msg) {
|
||||||
|
if (msg.Option("cache.status") == "stop") { return can.user.toast(can, msg.Option("cache.action")+" done!")}
|
||||||
|
|
||||||
|
can.page.Modify(can, can.ui.display, {className: "code", style: {"max-height": 400}})
|
||||||
|
can.page.Append(can, can.ui.display, [{text: msg.Result()}])
|
||||||
|
can.ui.display.scrollBy(0, 1000)
|
||||||
|
|
||||||
|
can.core.Timer(100, function() { var sub = can.request({})
|
||||||
|
sub.Option("cache.hash", msg.Option("cache.hash"))
|
||||||
|
sub.Option("cache.begin", msg.Option("cache.begin"))
|
||||||
|
sub.Option("cache.limit", msg.Option("cache.limit"))
|
||||||
|
can.run(sub._event, ["action", msg.Option("cache.action")], function(msg) {
|
||||||
|
can.onimport._follow(can, msg)
|
||||||
|
}, true)
|
||||||
|
})
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
_inner: function(can, msg) {
|
||||||
|
can.onappend.table(can, "content", msg, function(value, key, index, line, array) {
|
||||||
|
return can.onimport._table(can, value, key, index, line, array)
|
||||||
|
}, can.ui.display)
|
||||||
|
|
||||||
|
can.onappend.board(can, "content", msg.Result(), can.ui.display)
|
||||||
|
can.onimport._board(can, msg)
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
|
||||||
_control: function(can, msg) {
|
_control: function(can, msg) {
|
||||||
var cb = can.onimport[msg.Option("_control")]
|
var cb = can.onimport[msg.Option("_control")]
|
||||||
return typeof cb == "function" && cb(can, msg)
|
return typeof cb == "function" && cb(can, msg)
|
||||||
},
|
},
|
||||||
_page: function(can, msg) {
|
_page: function(can, msg) { var ui = {}
|
||||||
return {view: ["control", "div"], list: [
|
return {view: ["control", "div"], list: [
|
||||||
{button: ["上一页", function(event) {
|
{button: ["上一页", function(event) {
|
||||||
can.ui["cache.offend"].value = parseInt(can.ui["cache.offend"].value||0) + parseInt(can.ui["cache.limit"].value)
|
ui.offend.value = parseInt(ui.offend.value||0) + parseInt(ui.limit.value)
|
||||||
can.run(event)
|
can.run(event)
|
||||||
}]},
|
}]},
|
||||||
|
|
||||||
{input: ["cache.offend", function(event) {
|
{input: ["cache.offend", function(event) {
|
||||||
event.key == "Enter" && can.run(event)
|
event.key == "Enter" && can.run(event)
|
||||||
}], style: {width: 50}, _init: function(item) {
|
}], style: {width: 50}, _init: function(item) {
|
||||||
item.value = msg.Option("cache.offend")
|
ui.offend = item, item.value = msg.Option("cache.offend")
|
||||||
}, data: {"className": "args"}},
|
}, data: {"className": "args"}},
|
||||||
|
|
||||||
{select: [["cache.limit", 10, 30, 100, 1000], function(event) {
|
{select: [["cache.limit", 10, 30, 100, 1000], function(event) {
|
||||||
can.run(event)
|
can.run(event)
|
||||||
}], _init: function(item) {
|
}], _init: function(item) {
|
||||||
item.value = msg.Option("cache.limit")
|
ui.limit = item, item.value = msg.Option("cache.limit")
|
||||||
}, data: {"className": "args"}},
|
}, data: {"className": "args"}},
|
||||||
|
|
||||||
{button: ["下一页", function(event) {
|
{button: ["下一页", function(event) {
|
||||||
can.ui["cache.offend"].value = parseInt(can.ui["cache.offend"].value||0) - parseInt(can.ui["cache.limit"].value)
|
ui.offend.value = parseInt(ui.offend.value||0) - parseInt(ui.limit.value)
|
||||||
if (can.ui["cache.offend"].value < 0) {
|
if (ui.offend.value < 0) {
|
||||||
can.ui["cache.offend"].value = 0
|
ui.offend.value = 0
|
||||||
}
|
}
|
||||||
can.run(event)
|
can.run(event)
|
||||||
}]},
|
}]},
|
||||||
@ -56,7 +122,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
{input: ["cache.value", function(event) {
|
{input: ["cache.value", function(event) {
|
||||||
if (event.key == "Enter") {
|
if (event.key == "Enter") {
|
||||||
can.page.Select(can, can.ui.content, "tr", function(tr, index) {
|
can.page.Select(can, can.ui.content, "tr", function(tr, index) {
|
||||||
if (event.target.value == "" && can.page.Modify(can, tr, {style: {"display": ""}})) { return }
|
if (event.target.value == "") { can.page.Modify(can, tr, {style: {"display": ""}}); return }
|
||||||
index > 0 && can.page.Modify(can, tr, {style: {"display": "none"}})
|
index > 0 && can.page.Modify(can, tr, {style: {"display": "none"}})
|
||||||
can.page.Select(can, tr, "td", function(td, index) {
|
can.page.Select(can, tr, "td", function(td, index) {
|
||||||
if (td.innerText.indexOf(event.target.value) > -1) {
|
if (td.innerText.indexOf(event.target.value) > -1) {
|
||||||
@ -70,95 +136,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
}, data: {"className": "args"}},
|
}, data: {"className": "args"}},
|
||||||
]}
|
]}
|
||||||
},
|
},
|
||||||
_table: function(can, value, key, index, line, array) {
|
|
||||||
return {type: "td", inner: value, click: function(event) { var target = event.target
|
|
||||||
if (target.tagName == "INPUT" && target.type == "button") {
|
|
||||||
var msg = can.sup.request(event, can.Option())
|
|
||||||
key == "value"? can.core.List(array, function(item, index) { msg.Option(item.key, item.value) }): msg.Option(line)
|
|
||||||
|
|
||||||
var cb = can.onaction[msg.Option("action", target.name)]
|
|
||||||
typeof cb == "function"? cb(event, can, target.name): can.sup.onaction.input(event, can.sup, target.name, function(msg) {
|
|
||||||
can.onimport._process(can, msg) || can.run({})
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
can.sup.onaction.change(event, can.sup, key, value, function(msg) {
|
|
||||||
can.run(event)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}, ondblclick: function(event) {
|
|
||||||
can.onmotion[value.indexOf("\n") >= 0 || event.ctrlKey? "modifys": "modify"](can, event.target, function(event, value, old) {
|
|
||||||
var msg = can.sup.request(event); msg.Option(can.Option())
|
|
||||||
if (can._msg.Option("modify.hold") == "true") {
|
|
||||||
if (can._msg.append.length == 2 && can._msg.append[0] == "key" && can._msg.append[1] == "value") {
|
|
||||||
can.core.List(can._msg.key, function(key, index) {
|
|
||||||
msg.Option(key, can._msg.value[index])
|
|
||||||
})
|
|
||||||
}
|
|
||||||
can.run(event, ["action", "modify"])
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
msg.Option(line)
|
|
||||||
if (key == "value") { key = line.key }
|
|
||||||
can.run(event, ["action", "modify", key, value], function(msg) { can.run({}) }, true)
|
|
||||||
})
|
|
||||||
}, onmouseover: function(event) {
|
|
||||||
can.user.toast(can, index+1+"/"+array.length)
|
|
||||||
}}
|
|
||||||
},
|
|
||||||
_board: function(can, msg) {
|
|
||||||
can.page.Select(can, can.ui.display, ".story", function(item) { var data = item.dataset
|
|
||||||
var cb = can.onimport[data.type]; typeof cb == "function" && cb(can, data, item)
|
|
||||||
can.page.Modify(can, item, {style: can.base.Obj(data.style)})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
_process: function(can, msg) {
|
|
||||||
var cb = can.onimport[msg.Option("_process") || can.Conf("feature._process")]
|
|
||||||
return typeof cb == "function" && cb(can, msg)
|
|
||||||
},
|
|
||||||
_follow: function(can, msg) {
|
|
||||||
if (msg.Option("cache.status") == "stop") { return can.user.toast(can, msg.Option("cache.action")+" done!")}
|
|
||||||
can.ui || (can.ui = can.page.Appends(can, can._target, [{view: ["content", "div"]}]))
|
|
||||||
can.page.ClassList.add(can, can.ui.content, "code")
|
|
||||||
can.page.Modify(can, can.ui.content, {style: {"max-height": 400}})
|
|
||||||
can.page.Append(can, can.ui.content, [{text: msg.Result()}])
|
|
||||||
can.ui.content.scrollBy(0, 1000)
|
|
||||||
|
|
||||||
can.core.Timer(100, function() {
|
|
||||||
var sub = can.request({})
|
|
||||||
sub.Option("cache.hash", msg.Option("cache.hash"))
|
|
||||||
sub.Option("cache.begin", msg.Option("cache.begin"))
|
|
||||||
sub.Option("cache.limit", msg.Option("cache.limit"))
|
|
||||||
can.run(sub._event, [msg.Option("cache.action")], function(msg) {
|
|
||||||
can.onimport._follow(can, msg)
|
|
||||||
}, true)
|
|
||||||
})
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
_inner: function(can, msg) {
|
|
||||||
can.onappend.table(can, "content", msg, function(value, key, index, line, array) {
|
|
||||||
return can.onimport._table(can, value, key, index, line, array)
|
|
||||||
}, can._output)
|
|
||||||
|
|
||||||
can.onappend.board(can, "content", msg.Result(), can._output)
|
|
||||||
// can.onimport._board(can, msg)
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
|
|
||||||
spark: function(can, list, target) {
|
|
||||||
if (list["name"] == "inner") {
|
|
||||||
target.title = "点击复制", target.onclick = function(event) {
|
|
||||||
can.user.copy(event, can, target.innerText)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
can.page.Select(can, target, "span", function(item) {
|
|
||||||
item.title = "点击复制", item.onclick = function(event) {
|
|
||||||
can.user.copy(event, can, item.innerText)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "控件交互", list: []})
|
Volcanos("onaction", {help: "控件交互", list: []})
|
||||||
Volcanos("onexport", {help: "导出数据", list: []})
|
Volcanos("onexport", {help: "导出数据", list: []})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user