1
0
forked from x/volcanos

add plugin import

This commit is contained in:
shaoying 2019-12-12 19:54:02 +08:00
parent 30bcd0df6f
commit 9bdb7f464b
5 changed files with 51 additions and 6 deletions

View File

@ -32,10 +32,12 @@ var can = Volcanos("chat", {
action: field.querySelector("div.action"), action: field.querySelector("div.action"),
output: field.querySelector("div.output"), output: field.querySelector("div.output"),
Plugin: can.Plugin, Inputs: can.Inputs, Output: can.Output, Plugin: can.Plugin, Inputs: can.Inputs, Output: can.Output,
_plugins: [],
Export: function(event, value, key) {can.Report(event, value, key)}, Export: function(event, value, key) {can.Report(event, value, key)},
Import: function(event, value, key) {var cb = pane.onimport[key]; Import: function(event, value, key) {var cb = pane.onimport[key];
typeof cb == "function" && cb(event, pane, value, key, pane.output); typeof cb == "function" && cb(event, pane, value, key, pane.output);
can.core.List(pane._plugins, function(item) {item.Import(event, value, key)})
}, },
Size: function(event, width, height) {var cb = pane.onimport["size"]; Size: function(event, width, height) {var cb = pane.onimport["size"];
@ -117,6 +119,7 @@ var can = Volcanos("chat", {
Import: function(event, value, key) {var cb = plugin.onimport[key]; Import: function(event, value, key) {var cb = plugin.onimport[key];
typeof cb == "function" && cb(event, plugin, value, key, plugin.output); typeof cb == "function" && cb(event, plugin, value, key, plugin.output);
key && plugin[key] && plugin[key].target && plugin[key].Import(event, value, key)
}, },
Remove: function(event) {var list = can.page.Select(can, option, "input.temp") Remove: function(event) {var list = can.page.Select(can, option, "input.temp")
@ -156,7 +159,7 @@ var can = Volcanos("chat", {
}, },
Check: function(event, target, cb) { Check: function(event, target, cb) {
plugin.page.Select(can, option, ".args", function(item, index, list) { plugin.page.Select(can, option, ".args", function(item, index, list) {
if (item == target && index < list.length-1) {can._plugin.target == field && list[index+1].focus(); return item} if (item == target && index < list.length-1) {can._plugin && can._plugin.target == field && list[index+1].focus(); return item}
}).length == 0 && plugin.Runs(event, cb) }).length == 0 && plugin.Runs(event, cb)
}, },
Last: function(event) { Last: function(event) {

View File

@ -187,6 +187,40 @@ Volcanos("page", {help: "网页模块",
})) }))
return table; return table;
}), }),
RangeTable: function(can, table, index, sort_asc) {
var list = can.page.Select(can, table, "tr", function(tr) {
return tr.style.display == "none" || can.page.ClassList.has(can, tr, "hide")? null: tr
}).slice(1)
var is_time = true, is_number = true
can.core.List(list, function(tr) {
var text = tr.childNodes[index].innerText
is_time = is_time && Date.parse(text) > 0
is_number = is_number && !isNaN(parseInt(text))
})
var num_list = can.core.List(list, function(tr) {
var text = tr.childNodes[index].innerText
return is_time? Date.parse(text):
is_number? parseInt(text): text
})
for (var i = 0; i < num_list.length; i++) {
for (var j = i+1; j < num_list.length; j++) {
if (sort_asc? num_list[i] < num_list[j]: num_list[i] > num_list[j]) {
var temp = num_list[i]
num_list[i] = num_list[j]
num_list[j] = temp
var temp = list[i]
list[i] = list[j]
list[j] = temp
}
}
var tbody = list[i].parentElement
list[i].parentElement && tbody.removeChild(list[i])
tbody.appendChild(list[i])
}
},
Display: function(text) { Display: function(text) {
if (text.startsWith("http")) {return "<a href='"+text+"' target='_blank'>"+text+"</a>"} if (text.startsWith("http")) {return "<a href='"+text+"' target='_blank'>"+text+"</a>"}

View File

@ -1,9 +1,9 @@
Volcanos("onimport", {help: "导入数据", list: [], Volcanos("onimport", {help: "导入数据", list: [],
init: function(event, can, msg, cmd, output) {output.innerHTML = ""; init: function(event, can, msg, cmd, output) {output.innerHTML = "";
msg.Table(function(item, index) {if (!item.name) {return} msg.Table(function(item, index) {if (!item.name) {return}
can[item.name] = can.Plugin(can, item.name, item, function(event, cmds, cbs) { can._plugins.push(can[item.name] = can.Plugin(can, item.name, item, function(event, cmds, cbs) {
can.run(event, [item.river, item.storm, item.action].concat(cmds), cbs) can.run(event, [item.river, item.storm, item.action].concat(cmds), cbs)
}, can.page.AppendField(can, output, "item "+item.group+" "+item.name, item)) }, can.page.AppendField(can, output, "item "+item.group+" "+item.name, item)))
}) })
}, },
size: function(event, can, value, cmd, output) { size: function(event, can, value, cmd, output) {
@ -30,7 +30,7 @@ Volcanos("onimport", {help: "导入数据", list: [],
}, },
you: function(event, can, value, cmd, output) { you: function(event, can, value, cmd, output) {
can.page.Select(can, can.action, "input."+cmd, function(item) { can.page.Select(can, can.action, "input."+cmd, function(item) {
item.value = value document.title = item.value = value;
}) })
}, },
layout: function(event, can, value, cmd, output) {can.layout = value; layout: function(event, can, value, cmd, output) {can.layout = value;

View File

@ -1,5 +1,9 @@
Volcanos("onimport", {help: "导入数据", list: [], Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, conf, output) { _init: function(can, conf, output) {
can.Show(200, 100, -100)
can.target.style.height = ""
can.target.style.width = ""
can.user.toast = function(text, title, duration, list) {if (!text) {return can.Hide()} can.user.toast = function(text, title, duration, list) {if (!text) {return can.Hide()}
text = typeof text == "object"? text: {list: list, text: text, title: title||""} text = typeof text == "object"? text: {list: list, text: text, title: title||""}
text.duration = text.duration || conf.duration || 3000 text.duration = text.duration || conf.duration || 3000
@ -30,8 +34,6 @@ Volcanos("onimport", {help: "导入数据", list: [],
return timer return timer
} }
}, },
show: function(event, can, value, cmd, output) {
}
}) })
Volcanos("onaction", {help: "组件交互", list: []}) Volcanos("onaction", {help: "组件交互", list: []})
Volcanos("onchoice", {help: "组件菜单", list: []}) Volcanos("onchoice", {help: "组件菜单", list: []})

View File

@ -14,6 +14,12 @@ Volcanos("onimport", {help: "导入数据", list: [],
}) })
break break
case "TH": case "TH":
var index = 0;
can.page.Select(can, table, "th", function(item, i) {if (item == event.target) {index = i}})
var dataset = event.target.dataset
dataset["sort_asc"] = (dataset["sort_asc"] == "1") ? 0: 1
can.page.RangeTable(can, table, index, dataset["sort_asc"] == "1")
break
case "TR": case "TR":
case "TABLE": case "TABLE":
}} }}