diff --git a/frame.js b/frame.js
index cf97a040..c34014a7 100644
--- a/frame.js
+++ b/frame.js
@@ -359,47 +359,47 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
return target;
},
table: function(can, target, type, msg, cb) {
- var table = can.page.AppendTable(can, target, msg, msg.append, function(event, value, key, index, tr, td) {
- can.page.Select(can, can._option, "input.args", function(input) { if (input.name == key) { var data = input.dataset || {}
- input.value = value; typeof cb == "function" && cb(event, value); if (data.action == "auto") {
- var sub = can.request(event)
- can.core.Item(can.Option(), sub.Option)
- sub.Option("_action", msg.Option("_action"))
- can.run(event, can.page.Select(can, can._option, "input.args", function(item) {
- return item.name && item.value || ""
- }))
+ var table = can.page.AppendTables(can, target, msg, msg.append, cb || function(value, key, index, line) {
+ function run(event, item, value) {
+ var msg = can.request(event); msg.Option(line)
+ var cb = can.onaction[item] || can.onaction["运行"]
+ cb? cb(event, can, item): can.run(event, ["action", item, key, value.trim()], function(res) {
+ can.ui.display.innerHTML = ""
+ can.onappend.table(can, can.ui.display, "table", res)
+ can.onappend.board(can, can.ui.display, "board", res)
+ }, true)
+ }
+ return {type: "td", inner: value, click: function(event) {
+ var target = event.target; if (target.tagName == "INPUT" && target.type == "button") {
+ return run(event, event.target.value, value)
}
- } })
- }, function(event, value, key, index, tr, td) {
- can.onappend.carte(can, can.ondetail||{}, msg["_detail"] || can.Conf("detail") || can.ondetail.list, function(event, item, meta) {
- var back = td.innerHTML
- switch (item) {
- case "编辑":
- var ui = can.page.Appends(can, td, [{type: "input", value: back, onkeydown: function(event) {
- switch (event.key) {
- case "Enter":
- td.innerHTML = event.target.value
-
- var res = can.request(event); can.core.List(msg.append, function(key) {
- res.Option(key, msg[key][index])
- }); can.run(event, ["action", item, key, event.target.value.trim(), value.trim()], function(res) {}, true)
- break
- case "Escape":
- td.innerHTML = back
- break
- }
- }, onkeyup: function(event) {
-
- }}]);
- ui.input.focus()
- ui.input.setSelectionRange(0, -1)
- return
- }
-
- var res = can.request(event); can.core.List(msg.append, function(key) {
- res.Option(key, msg[key][index])
- }); can.run(event, ["action", item, key, value.trim()], function(res) {}, true)
- })
+ can.page.Select(can, can._option, "input.args", function(input) { if (input.name == key) { var data = input.dataset || {}
+ input.value = value; typeof cb == "function" && cb(event, value); if (data.action == "auto") {
+ var sub = can.request(event)
+ can.core.Item(can.Option(), sub.Option)
+ sub.Option("_action", msg.Option("_action"))
+ can.run(event, can.page.Select(can, can._option, "input.args", function(item) {
+ return item.name && item.value || ""
+ }))
+ }
+ } })
+ }, ondblclick: function(event) {
+ can.onappend.modify(can, event.target, function(event, value, old) {
+ run(event, "编辑", value)
+ })
+ }, oncontextmenu: function(event) {
+ can.onappend.carte(can, can.ondetail||{}, msg["_detail"] || can.Conf("detail") || can.ondetail.list, function(event, item, meta) {
+ switch (item) {
+ case "编辑":
+ can.onappend.modify(can, event.target, function(event, value, old) {
+ run(event, "编辑", value)
+ })
+ break
+ default:
+ run(event, item, value)
+ }
+ })
+ }, }
})
},
board: function(can, target, type, msg) {
diff --git a/index.css b/index.css
index a4d4ae37..52eaa440 100644
--- a/index.css
+++ b/index.css
@@ -111,6 +111,9 @@ fieldset>div.output {
overflow:auto;
position:relative;
}
+fieldset>div.output div.code a {
+ color:yellow;
+}
fieldset>div.output>div.project {
float:left;
/* position:fixed; */
diff --git a/lib/page.js b/lib/page.js
index 63e0e78e..3f6cd960 100644
--- a/lib/page.js
+++ b/lib/page.js
@@ -252,6 +252,26 @@ var page = Volcanos("page", {help: "网页模块",
}))
return table;
}),
+ AppendTables: shy("添加表格", function(can, target, msg, list, cb) {
+ if (!msg.append || msg.append.length == 0) {return}
+
+ var table = can.page.Append(can, target, "table");
+ var tr = can.page.Append(can, table, "tr", {dataset: {index: -1}});
+ can.core.List(list, function(key, index) {if (key.indexOf("_") == 0) {return}
+ can.page.Append(can, tr, "th", key.trim()).onclick = function(event) {
+ var dataset = event.target.dataset;
+ dataset["sort_asc"] = (dataset["sort_asc"] == "1") ? 0: 1;
+ can.page.RangeTable(can, table, index, dataset["sort_asc"] == "1");
+ }
+ });
+
+ 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) {if (key.indexOf("_") == 0) {return}
+ return cb(can.page.Display(line[key]).trim(), key, index, line)
+ })}
+ }))
+ 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
@@ -328,7 +348,11 @@ var page = Volcanos("page", {help: "网页模块",
}),
Display: function(text) {
- if (text.startsWith("http")) {return ""+text+""}
+ if (text.startsWith("http")) {
+ var ls = text.split(" ")
+ return ""+ls[0]+""+ls.slice(1).join(" ")
+ }
+
text = text.replace(/\033\[31m/g, "")
text = text.replace(/\033\[32m/g, "")
text = text.replace(/\033\[33m/g, "")
diff --git a/plugin/table.js b/plugin/table.js
index e108cd77..93eb5ac0 100644
--- a/plugin/table.js
+++ b/plugin/table.js
@@ -1,7 +1,10 @@
Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, msg, list, cb, target) { can._output.innerHTML = "";
- can.onappend.table(can, target, "table", msg)
- can.onappend.board(can, target, "board", msg)
+ can.ui = can.page.Append(can, can._target, [
+ {view: ["content", "div"]}, {view: ["display", "pre"]},
+ ])
+ can.onappend.table(can, can.ui.content, "table", msg)
+ can.onappend.board(can, can.ui.display, "board", msg)
return typeof cb == "function" && cb(msg)
},
})