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

opt table

This commit is contained in:
shaoying 2020-06-15 09:56:22 +08:00
parent a4b99ca2f9
commit cda9ab80c5
4 changed files with 73 additions and 43 deletions

View File

@ -359,7 +359,20 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
return target; return target;
}, },
table: function(can, target, type, msg, cb) { table: function(can, target, type, msg, cb) {
var table = can.page.AppendTable(can, target, msg, msg.append, function(event, value, key, index, tr, td) { 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)
}
can.page.Select(can, can._option, "input.args", function(input) { if (input.name == key) { var data = input.dataset || {} 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") { input.value = value; typeof cb == "function" && cb(event, value); if (data.action == "auto") {
var sub = can.request(event) var sub = can.request(event)
@ -370,36 +383,23 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
})) }))
} }
} }) } })
}, function(event, value, key, index, tr, td) { }, 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) { can.onappend.carte(can, can.ondetail||{}, msg["_detail"] || can.Conf("detail") || can.ondetail.list, function(event, item, meta) {
var back = td.innerHTML
switch (item) { switch (item) {
case "编辑": case "编辑":
var ui = can.page.Appends(can, td, [{type: "input", value: back, onkeydown: function(event) { can.onappend.modify(can, event.target, function(event, value, old) {
switch (event.key) { run(event, "编辑", value)
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)
}) })
break
default:
run(event, item, value)
}
})
}, }
}) })
}, },
board: function(can, target, type, msg) { board: function(can, target, type, msg) {

View File

@ -111,6 +111,9 @@ fieldset>div.output {
overflow:auto; overflow:auto;
position:relative; position:relative;
} }
fieldset>div.output div.code a {
color:yellow;
}
fieldset>div.output>div.project { fieldset>div.output>div.project {
float:left; float:left;
/* position:fixed; */ /* position:fixed; */

View File

@ -252,6 +252,26 @@ var page = Volcanos("page", {help: "网页模块",
})) }))
return table; 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) { RangeTable: function(can, table, index, sort_asc) {
var list = can.page.Select(can, table, "tr", function(tr) { var list = can.page.Select(can, table, "tr", function(tr) {
return tr.style.display == "none" || can.page.ClassList.has(can, tr, "hide")? null: 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) { Display: function(text) {
if (text.startsWith("http")) {return "<a href='"+text+"' target='_blank'>"+text+"</a>"} if (text.startsWith("http")) {
var ls = text.split(" ")
return "<a href='"+ls[0]+"' target='_blank'>"+ls[0]+"</a>"+ls.slice(1).join(" ")
}
text = text.replace(/\033\[31m/g, "<span style='color:#f00'>") text = text.replace(/\033\[31m/g, "<span style='color:#f00'>")
text = text.replace(/\033\[32m/g, "<span style='color:#0f0'>") text = text.replace(/\033\[32m/g, "<span style='color:#0f0'>")
text = text.replace(/\033\[33m/g, "<span style='color:#ff0'>") text = text.replace(/\033\[33m/g, "<span style='color:#ff0'>")

View File

@ -1,7 +1,10 @@
Volcanos("onimport", {help: "导入数据", list: [], Volcanos("onimport", {help: "导入数据", list: [],
_init: function(can, msg, list, cb, target) { can._output.innerHTML = ""; _init: function(can, msg, list, cb, target) { can._output.innerHTML = "";
can.onappend.table(can, target, "table", msg) can.ui = can.page.Append(can, can._target, [
can.onappend.board(can, target, "board", msg) {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) return typeof cb == "function" && cb(msg)
}, },
}) })