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

mix 'master'

This commit is contained in:
shaoying 2020-03-09 19:30:07 +08:00
commit 08c9873fc5
7 changed files with 113 additions and 105 deletions

View File

@ -212,9 +212,8 @@ Volcanos("page", {help: "网页模块",
var table = can.page.Append(can, target, "table"); var table = can.page.Append(can, target, "table");
var tr = can.page.Append(can, table, "tr", {dataset: {index: -1}}); var tr = can.page.Append(can, table, "tr", {dataset: {index: -1}});
can.core.List(list, function(key, index) { can.core.List(list, function(key, index) {if (key.indexOf("_") == 0) {return}
if (key.indexOf("_") == 0) {return} can.page.Append(can, tr, "th", key.trim()).onclick = function(event) {
can.page.Append(can, tr, "th", key).onclick = function(event) {
var dataset = event.target.dataset; var dataset = event.target.dataset;
dataset["sort_asc"] = (dataset["sort_asc"] == "1") ? 0: 1; dataset["sort_asc"] = (dataset["sort_asc"] == "1") ? 0: 1;
can.page.RangeTable(can, table, index, dataset["sort_asc"] == "1"); can.page.RangeTable(can, table, index, dataset["sort_asc"] == "1");
@ -222,15 +221,14 @@ Volcanos("page", {help: "网页模块",
}); });
can.page.Append(can, table, can.core.List(msg.Table(), function(line, index) { can.page.Append(can, table, can.core.List(msg.Table(), function(line, index) {
return {type: "tr", dataset: {index: index}, list: can.core.List(list, function(key) { return {type: "tr", dataset: {index: index}, list: can.core.List(list, function(key) {if (key.indexOf("_") == 0) {return}
if (key.indexOf("_") == 0) {return}
var cbcb, cbcbs; var cbcb, cbcbs;
typeof cb == "function" && (cbcb = function(event) {cb(event, line[key], key, index, event.target.parentNode, event.target)}); typeof cb == "function" && (cbcb = function(event) {cb(event, line[key], key, index, event.target.parentNode, event.target)});
typeof cbs == "function" && (cbcbs = function(event) { typeof cbs == "function" && (cbcbs = function(event) {
cbs(event, line[key], key, index, event.target.parentNode, event.target); cbs(event, line[key], key, index, event.target.parentNode, event.target);
event.stopPropagation(), event.preventDefault(); event.stopPropagation(), event.preventDefault();
}); });
return {type: "td", inner: can.page.Display(line[key]), click: cbcb, oncontextmenu: cbcbs}; return {type: "td", inner: can.page.Display(line[key]).trim(), click: cbcb, oncontextmenu: cbcbs};
})} })}
})) }))
return table; return table;

View File

@ -46,6 +46,8 @@ Volcanos("onaction", {help: "控件交互", list: [],
can.item.type == "select" && can.item.action == "auto" && can.Runs(event) can.item.type == "select" && can.item.action == "auto" && can.Runs(event)
}, },
onkeydown: function(event, can) { onkeydown: function(event, can) {
if (event.target.tagName == "TEXTAREA") {return}
can.page.oninput(event, can, function(event) { can.page.oninput(event, can, function(event) {
switch (event.key) { switch (event.key) {
case "b": case "b":
@ -73,6 +75,8 @@ Volcanos("onaction", {help: "控件交互", list: [],
return true return true
}, },
onkeyup: function(event, can) { onkeyup: function(event, can) {
if (event.target.tagName == "TEXTAREA") {return}
switch (event.key) { switch (event.key) {
default: return false default: return false
} }

View File

@ -44,6 +44,9 @@ Volcanos("ondetail", {help: "组件详情", list: ["选择", "编辑", "删除",
var input = can.page.Appends(can, td, [{type: "input", value: text, style: {width: td.clientWidth+"px"}, data: {onkeydown: function(event) { var input = can.page.Appends(can, td, [{type: "input", value: text, style: {width: td.clientWidth+"px"}, data: {onkeydown: function(event) {
if (event.key != "Enter") {return} if (event.key != "Enter") {return}
if (key == "value" && msg.key) {key = msg.key[index]} if (key == "value" && msg.key) {key = msg.key[index]}
var sub = can.Event(event);
can.core.List(msg.append, function(key) {sub.Option(key, msg[key][index])})
can.run(event, ["action", "modify", key, event.target.value, text, can.Option("id")||msg.Ids(index)], function(msg) { can.run(event, ["action", "modify", key, event.target.value, text, can.Option("id")||msg.Ids(index)], function(msg) {
td.innerHTML = event.target.value; td.innerHTML = event.target.value;
can.user.toast("修改成功") can.user.toast("修改成功")

View File

@ -1,3 +1,6 @@
fieldset.item.plan div.output td {
vertical-align:top;
}
fieldset.item.plan div.output td.over { fieldset.item.plan div.output td.over {
border:solid 2px red; border:solid 2px red;
} }

View File

@ -33,6 +33,7 @@ Volcanos("onimport", {help: "导入数据", list: [],
can.user.carte(event, shy("", can.ondetail, can.feature.detail || can.ondetail.list, function(event, cmd, meta) {var cb = meta[cmd]; can.user.carte(event, shy("", can.ondetail, can.feature.detail || can.ondetail.list, function(event, cmd, meta) {var cb = meta[cmd];
typeof cb == "function"? cb(event, can, msg, data.id, data.zone, cmd, target): typeof cb == "function"? cb(event, can, msg, data.id, data.zone, cmd, target):
can.run(event, ["action", typeof cb == "string"? cb: cmd, data.id, data.zone], function(msg) { can.run(event, ["action", typeof cb == "string"? cb: cmd, data.id, data.zone], function(msg) {
can.user.toast("修改成功")
}, true) }, true)
})) }))
event.stopPropagation() event.stopPropagation()

View File

@ -37,6 +37,11 @@ Volcanos("onfigure", {help: "组件菜单", list: ["保存", "求和"],
}, },
}) })
Volcanos("onaction", {help: "组件菜单", list: ["保存", ["mode", "正常", "块选", "反选", "多选", "拖动", "编辑"], "求和", "最大", "最小", "平均"], Volcanos("onaction", {help: "组件菜单", list: ["保存", ["mode", "正常", "块选", "反选", "多选", "拖动", "编辑"], "求和", "最大", "最小", "平均"],
"保存": function(event, can, msg, cmd, target) {
can.run(event, ["action", cmd, can.Option("path"), can.Export(event, "", "file")], function(msg) {
can.user.toast("保存成功")
}, true)
},
"正常": function(event, can, msg, cmd, target) { "正常": function(event, can, msg, cmd, target) {
cmd && can.Action("mode", cmd) cmd && can.Action("mode", cmd)
can.page.Select(can, can.table, "tr", function(item) { can.page.Select(can, can.table, "tr", function(item) {
@ -92,13 +97,6 @@ Volcanos("onaction", {help: "组件菜单", list: ["保存", ["mode", "正常",
item.setAttribute("contenteditable", true) item.setAttribute("contenteditable", true)
}) })
}, },
"保存": function(event, can, msg, cmd, target) {
can.run(event, ["action", cmd, can.Option("path"), can.page.Select(can, target, "tr", function(tr) {
return can.page.Select(can, tr, "th,td", function(td) {return td.innerHTML}).join(",")
}).join("\n")], function() {
can.user.toast("保存成功")
}, true)
},
show: function(event, can, msg, cmd, target) { show: function(event, can, msg, cmd, target) {
var res = {}; var res = {};
@ -141,5 +139,11 @@ Volcanos("ondetail", {help: "组件详情", list: ["复制", "块选", "反选",
}, },
}) })
Volcanos("onstatus", {help: "组件状态", list: []}) Volcanos("onstatus", {help: "组件状态", list: []})
Volcanos("onexport", {help: "导出数据", list: []}) Volcanos("onexport", {help: "导出数据", list: [],
file: function(event, can, csv, cmd, target) {
return can.page.Select(can, target, "tr", function(tr) {
return can.page.Select(can, tr, "th,td", function(td) {return td.innerHTML}).join(",")
}).join("\n")
},
})

View File

@ -1,8 +1,12 @@
Volcanos("onimport", {help: "导入数据", list: [], Volcanos("onimport", {help: "导入数据", list: [],
init: function(can, msg, cb, output, action, option) {output.innerHTML = ""; init: function(can, msg, cb, output, action, option) {output.innerHTML = "";
if (can.page.AppendTable(can, output, msg, msg.append, function(event, value, key, index, tr, td) { if (msg.Option("_display") == "table") {
can.Export(event, value, key) // 文件目录
})) {return} can.page.AppendTable(can, output, msg, msg.append, function(event, value, key, index, tr, td) {
can.Export(event, value, key)
})
return typeof cb == "function" && cb(msg);
}
output.innerHTML = msg.Result() output.innerHTML = msg.Result()
@ -16,14 +20,14 @@ Volcanos("onimport", {help: "导入数据", list: [],
switch (item.tagName) { switch (item.tagName) {
case "FIELDSET": case "FIELDSET":
can.Plugin(can, item.name, JSON.parse(data.meta||"{}"), function(event, cmds, cb, silent) { can.Plugin(can, data.name, JSON.parse(data.meta||"{}"), function(event, cmds, cb, silent) {
can.run(event, ["action", "story", data.type, data.name, data.text].concat(cmds), cb, true) can.run(event, ["action", "story", data.type, data.name, data.text].concat(cmds), cb, true)
}, item, function(sub) { }, item, function(sub) {
}) })
break break
default: default:
var figure = can.onfigure[item.type||item.tagName] var figure = can.onfigure[data.type||item.tagName]
figure && figure.init && figure.init({}, can, msg, "init", item) figure && figure.init && figure.init({}, can, msg, "init", item)
} }
@ -33,6 +37,7 @@ Volcanos("onimport", {help: "导入数据", list: [],
}, ["/plugin/wiki/word.css"]) }, ["/plugin/wiki/word.css"])
Volcanos("onfigure", {help: "图形绘制", list: [], Volcanos("onfigure", {help: "图形绘制", list: [],
_spawn: function(sup, can) {can.sup = sup}, _spawn: function(sup, can) {can.sup = sup},
_swell: function(can, sub) {},
_begin: function(can) {}, _begin: function(can) {},
_start: function(can) {}, _start: function(can) {},
_close: function(can) {}, _close: function(can) {},
@ -52,40 +57,42 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
save: function(event, can, value, cmd, target) {return "endmenu"}, save: function(event, can, value, cmd, target) {return "endmenu"},
}, },
h1: { h1: {
push: function(event, can, value, cmd, target) {var data = target.dataset; push: function(event, can, value) {
return [{view: ["story", "h1", "h1"], dataset: {type: "title", name: "", text: ""}, inner: "h1...."}] return [{view: ["story", "h1", value.text], dataset: {type: "title", name: value.name, text: value.text}}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'title "' + value.replace(data.name+" ", "") + '"': "" return value? 'title "' + value.replace(data.name+" ", "") + '"': ""
}, },
}, },
h2: { h2: {
push: function(event, can, value, cmd, target) { push: function(event, can, value) {
return [{view: ["story", "h2", "h2"], dataset: {type: "title", name: "", text: ""}, inner: "h2...."}] return [{view: ["story", "h2", value.text], dataset: {type: "chapter", name: value.name, text: value.text}}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'chapter "' + value.replace(data.name+" ", "") + '"': "" return value? 'chapter "' + value.replace(data.name+" ", "") + '"': ""
}, },
}, },
h3: { h3: {
push: function(event, can, value, cmd, target) {var data = target.dataset; push: function(event, can, value) {
return [{view: ["story", "h3", "h3"], dataset: {type: "title", name: "", text: ""}, inner: "h3...."}] return [{view: ["story", "h3", value.text], dataset: {type: "section", name: value.name, text: value.text}}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'section "' + value.replace(data.name+" ", "") + '"': "" return value? 'section "' + value.replace(data.name+" ", "") + '"': ""
}, },
}, },
brief: { brief: {
push: function(event, can, value, cmd, target) {var data = target.dataset; push: function(event, can, value) {
return [{view: ["story", "p", "p"], dataset: {type: "brief", name: "", text: ""}, inner: "brief...."}] return [{view: ["story", "p", value.text], dataset: {type: "brief", name: value.name, text: value.text}}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'brief "'+data.name+'" `' + value + '`': "" return value? 'brief "'+data.name+'" `' + value + '`': ""
}, },
}, },
refer: { refer: {
push: function(event, can, value, cmd, target) {var data = target.dataset; push: function(event, can, value, cmd, target) {
return [{view: ["story", "ul"], dataset: {type: "refer", name: "", text: ""}, list: [{type: "li", inner: "refer...."}]}] return [{view: ["story", "ul"], dataset: {type: "refer", name: value.name, text: value.text}, list: can.core.List(value.text.split("\n"), function(line) {
return {type: "li", inner: line}
})}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'refer "'+data.name+'" `\n' + can.page.Select(can, target, "li", function(item) { return value? 'refer "'+data.name+'" `\n' + can.page.Select(can, target, "li", function(item) {
@ -94,8 +101,8 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
}, },
}, },
spark: { spark: {
push: function(event, can, value, cmd, target) {var data = target.dataset; push: function(event, can, value) {
return [{view: ["story", "p", "p"], dataset: {type: "spark", name: "", text: ""}, inner: "spark...."}] return [{view: ["story", "p", value.text], dataset: {type: "spark", name: value.name, text: value.text}}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'spark "'+data.name+'" `' + value + '`': "spark" return value? 'spark "'+data.name+'" `' + value + '`': "spark"
@ -103,24 +110,35 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
}, },
local: { local: {
push: function(event, can, value, cmd, target) {var data = target.dataset; push: function(event, can, value) {
return [{view: ["story", "div"], dataset: {type: "local", name: "", text: ""}, inner: "local...."}] return [{view: ["story", "div", value.text], dataset: {type: "local", name: value.name, text: value.text}}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'local "'+data.name+'" '+' `' + data.text + '`': "" return value? 'local "'+data.name+'" '+' `' + data.text + '`': ""
}, },
}, },
shell: { shell: {
push: function(event, can, value, cmd, target) {var data = target.dataset; push: function(event, can, value) {
return [{view: ["story", "code", "code"], dataset: {type: "shell", name: "", text: "", dir: "./"}, inner: "shell...."}] return [{view: ["story", "code", value.text], dataset: {type: "shell", name: value.name, dir: "./", text: value.text}}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'shell "'+data.name+'" '+'"'+data.dir+'"' +' `' + data.text + '`': "" return value? 'shell "'+data.name+'" '+'"'+data.dir+'"' +' `' + data.text + '`': ""
}, },
}, },
field: {
push: function(event, can, value) {
return [{view: ["story", "code", value.text], dataset: {type: "field", name: value.name, text: value.text}}]
},
save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'field "'+data.name+'" `'+data.text+'`': ""
},
},
order: { order: {
push: function(event, can, value, cmd, target) {var data = target.dataset; push: function(event, can, value) {
return [{view: ["story", "ul"], dataset: {type: "order", name: "", text: ""}, list: [{type: "li", inner: "order...."}]}] return [{view: ["story", "ul"], dataset: {type: "order", name: value.name, text: value.text}, list: can.core.List(value.text.split("\n"), function(line) {
return {type: "li", inner: line}
})}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'order "'+data.name+'" `\n' + can.page.Select(can, target, "li", function(item) { return value? 'order "'+data.name+'" `\n' + can.page.Select(can, target, "li", function(item) {
@ -130,11 +148,12 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
}, },
table: { table: {
data: {menu: ["追加行", "追加列", "删除行", "删除列"]}, data: {menu: ["追加行", "追加列", "删除行", "删除列"]},
push: function(event, can, value, cmd, target) {var data = target.dataset; push: function(event, can, value) {
return [{view: ["story", "table", "table"], dataset: {type: "table", name: "", text: ""}, list: [ return [{view: ["story", "table"], dataset: {type: "table", name: value.name, text: value.text}, list: can.core.List(value.text.split("\n"), function(line, index) {
{type: "tr", list: [{type: "th"}, {type: "th"}]}, return {type: "tr", list: can.core.List(line.split(" "), function(word) {
{type: "tr", list: [{type: "td"}, {type: "td"}]}, return {type: index==0? "th": "td", inner: word}
]}] })}
})}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'table "'+data.name+'" `\n' + can.page.Select(can, target, "tr", function(tr) { return value? 'table "'+data.name+'" `\n' + can.page.Select(can, target, "tr", function(tr) {
@ -198,20 +217,19 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
} }
}) })
}, },
push: function(event, can, value, cmd, target) {var data = target.dataset; push: function(event, can, value) {
return [{view: ["stack", "div"], dataset: {type: "stack", name: "", text: ""}}] return [{view: ["story", "div", value.text], dataset: {type: "stack", name: value.name, text: value.text}}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'stack "'+data.name+'"' +' `' + data.text + '`': "" return value? 'stack "'+data.name+'"' +' `' + data.text + '`': ""
}, },
}, },
label: { label: {
init: function(event, can, value, cmd, target) {var data = target.dataset; init: function(event, can, value, cmd, target) {var data = target.dataset;
target.Value = function(key, value) {return value && target.setAttribute(key, value), target.getAttribute(key||"class")||target[key]&&target[key].baseVal&&target[key].baseVal.value||target[key]&&target[key].baseVal||""} target.Value = function(key, value) {return value && target.setAttribute(key, value), target.getAttribute(key||"class")||target[key]&&target[key].baseVal&&target[key].baseVal.value||target[key]&&target[key].baseVal||""}
}, },
push: function(event, can, value, cmd, target) {var data = target.dataset; push: function(event, can, value) {
return [{view: ["story", "svg"], dataset: {type: "story", name: "", text: ""}}] return [{view: ["story", "svg", value.text], dataset: {type: "label", name: value.name, text: value.text}}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'label "'+data.name+'"' +' `\n' + data.text + '\n`' + " " + [ return value? 'label "'+data.name+'"' +' `\n' + data.text + '\n`' + " " + [
@ -220,8 +238,11 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
}, },
}, },
chain: { chain: {
push: function(event, can, value, cmd, target) {var data = target.dataset; init: function(event, can, value, cmd, target) {var data = target.dataset;
return [{view: ["story", "svg"], dataset: {type: "story", name: "", text: ""}}] target.Value = function(key, value) {return value && target.setAttribute(key, value), target.getAttribute(key||"class")||target[key]&&target[key].baseVal&&target[key].baseVal.value||target[key]&&target[key].baseVal||""}
},
push: function(event, can, value) {
return [{view: ["story", "svg", value.text], dataset: {type: "chain", name: value.name, text: value.text}}]
}, },
save: function(event, can, value, cmd, target) {var data = target.dataset; save: function(event, can, value, cmd, target) {var data = target.dataset;
return value? 'chain "'+data.name+'"' +' `\n' + data.text + '\n`': "" return value? 'chain "'+data.name+'"' +' `\n' + data.text + '\n`': ""
@ -230,32 +251,16 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
}, [], function(can) {var sup = can.sup }, [], function(can) {var sup = can.sup
}) })
Volcanos("onaction", {help: "组件菜单", list: ["刷新", "保存", ["操作", "只读", "排序", "编辑"], Volcanos("onaction", {help: "组件菜单", list: ["保存", "刷新", ["操作", "只读", "排序", "编辑"]],
"插入", ["元素", "h1", "h2", "h3", "brief", "refer", "spark", "shell", "order", "table", "stack"]],
"刷新": function(event, can, value, cmd, target) {
can.run(event)
},
"追加": function(event, can, value, cmd, target) {
can.user.input(event, can, [["type", "spark", "label", "section", "chapter", "title"], "name", {name: "text", type: "textarea"}], function(event, value, form, list) {
value == "提交" && can.run(event, ["action", cmd, can.Option("name")].concat(list), function(msg) {
can.user.confirm("是否刷新") && can.run({})
}, true)
return true
})
},
"保存": function(event, can, value, cmd, target) { "保存": function(event, can, value, cmd, target) {
var save = can.page.Select(can, target, ".story", function(story) { can.run(event, ["action", cmd, can.Option("path"), can.Export(event, "", "file")], function(msg) {
var figure = can.onfigure[story.dataset.type] || can.onfigure[story.localName];
var text = figure && figure.save && figure.save(event, can, story.innerText||story.innerHTML, cmd, story) || story.innerText||story.innerHTML
console.log(story.dataset.type, text)
return text
}).join("\n\n")
can.run(event, ["action", cmd, can.Option("name"), save], function(msg) {
can.user.toast("保存成功") can.user.toast("保存成功")
}, true) }, true)
}, },
"刷新": function(event, can, value, cmd, target) {
can.run(event)
},
"只读": function(event, can, value, cmd, target) { "只读": function(event, can, value, cmd, target) {
can.page.Select(can, can.target, ".story", function(item) { can.page.Select(can, can.target, ".story", function(item) {
item.setAttribute("contenteditable", false) item.setAttribute("contenteditable", false)
@ -277,43 +282,33 @@ Volcanos("onaction", {help: "组件菜单", list: ["刷新", "保存", ["操作"
item.setAttribute("contenteditable", true) item.setAttribute("contenteditable", true)
}) })
}, },
"插入": function(event, can, value, cmd, target) {var figure = can.onfigure[can.Action("元素")];
can.page.Append(can, can.target, figure.push(event, can, value, cmd, target)).first.setAttribute("contenteditable", true)
},
}) })
Volcanos("onchoice", {help: "组件交互", list: ["刷新", "保存", "追加", "清空", ["rect", "rect", "line", "circle"]], Volcanos("onchoice", {help: "组件交互", list: ["保存", "刷新", "编辑", "排序"]})
"清空": function(event, can, msg, cmd, target) { Volcanos("ondetail", {help: "组件详情", list: ["保存", "刷新", "编辑", "复制", "插入", "删除"],
console.log("choice", cmd) "复制": function(event, can, value, cmd, target) {
var clone = target.cloneNode(true);
target.parentNode.insertBefore(clone, target);
}, },
}) "插入": function(event, can, value, cmd, target) {
Volcanos("ondetail", {help: "组件详情", list: ["刷新", "追加", "编辑", "删除", "插入"], can.user.input(event, can, [["type", "spark", "refer", "brief", "h3", "h2", "h1",
"删除": function(event, can, msg, index, key, cmd, target) { "local", "shell", "field", "order", "table", "stack", "label", "chain"], "name", {name: "text", type: "textarea"}], function(event, value, form, list) {
can.page.Remove(can, target) var figure = can.onfigure[form.type]
}, var node = can.page.Append(can, target.parentNode, figure.push(event, can, form)).first;
figure && figure.init && figure.init(event, can, figure, "init", node);
"删除行": function(event, can, msg, index, key, cmd, target) { target.parentNode.insertBefore(node, target);
var table = target.parentNode.parentNode
var tr = target.parentNode
table.removeChild(tr)
},
"追加行": function(event, can, msg, index, key, cmd, target) {
var tr = document.createElement("tr")
can.page.Append(can, tr, can.page.Select(can, target.parentNode, "td,th", function() {
return {type: "td", inner: " "}
}))
target.parentNode.parentNode.append(tr)
},
"追加列": function(event, can, msg, index, key, cmd, target) {
var table = target.parentNode.parentNode
var tr = target.parentNode
var index = can.page.Select(can, tr, "th,td", function(item, index) {
return item == target && index || undefined
})[0]
can.page.Select(can, table, "tr", function(tr, index) {
can.page.Append(can, tr, [{type: index == 0? "th": "td", inner: " "}])
}) })
}, },
"删除": function(event, can, value, cmd, target) {
can.page.Remove(can, target)
},
})
Volcanos("onexport", {help: "导出数据", list: [],
file: function(event, can, shy, cmd, target) {
return can.page.Select(can, target, ".story", function(story) {
var figure = can.onfigure[story.dataset.type] || can.onfigure[story.localName];
var text = figure && figure.save && figure.save(event, can, story.innerText||story.innerHTML, cmd, story) || story.innerText||story.innerHTML
return text
}).join("\n\n")
},
}) })
Volcanos("onexport", {help: "导出数据", list: []})