mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt misc.js
This commit is contained in:
parent
786e786089
commit
adc9ebbf9d
32
frame.js
32
frame.js
@ -36,10 +36,14 @@ var can = Volcanos("chat", {
|
|||||||
|
|
||||||
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)})
|
can.core.List(pane._plugins, function(item) {item.Import(event, value, key)})
|
||||||
|
// 导入数据
|
||||||
pane.page.Select(pane, pane.action, "input."+key, function(item) {item.value = value})
|
pane.page.Select(pane, pane.action, "input."+key, function(item) {item.value = value})
|
||||||
},
|
},
|
||||||
|
|
||||||
Action: function(key, value) {
|
Action: function(key, value) {
|
||||||
return can.page.Select(can, pane.action, "input[name="+key+"],select."+key+",select[name="+key+"]", function(item) {
|
return can.page.Select(can, pane.action, "input[name="+key+"],select."+key+",select[name="+key+"]", function(item) {
|
||||||
value != undefined && (item.value = value), value = item.value
|
value != undefined && (item.value = value), value = item.value
|
||||||
@ -120,9 +124,26 @@ var can = Volcanos("chat", {
|
|||||||
Inputs: can.Inputs, Output: can.Output,
|
Inputs: can.Inputs, Output: can.Output,
|
||||||
|
|
||||||
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)
|
key && plugin[key] && plugin[key].target && plugin[key].Import(event, value, key)
|
||||||
},
|
},
|
||||||
|
Report: function(event, value, key, index) {
|
||||||
|
// 导入数据
|
||||||
|
plugin.Import(event, value, key)
|
||||||
|
|
||||||
|
for (var i = 0; i < exports.length; i += 3) {
|
||||||
|
if (exports[i+1] == key) {key = exports[i]
|
||||||
|
if (exports[i+2]) {var cb = plugin.onexport[exports[i+2]], res;
|
||||||
|
// 数据转换
|
||||||
|
value = typeof cb == "function" && ((res = cb(event, plugin, plugin.msg, value, key, index)) != undefined) && res || value;
|
||||||
|
}
|
||||||
|
// 上报数据
|
||||||
|
key && can.Import(event, value, key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
Share: function(event) {
|
Share: function(event) {
|
||||||
can.user.input(event, can, ["name", "text"], function(event, cmd, meta, list) {
|
can.user.input(event, can, ["name", "text"], function(event, cmd, meta, list) {
|
||||||
@ -161,17 +182,6 @@ var can = Volcanos("chat", {
|
|||||||
return key != undefined? option[key] && option[key].value || "":
|
return key != undefined? option[key] && option[key].value || "":
|
||||||
plugin.page.Select(can, option, ".args", function(item) {return item.value})
|
plugin.page.Select(can, option, ".args", function(item) {return item.value})
|
||||||
},
|
},
|
||||||
Report: function(event, value, key, index) {
|
|
||||||
key && plugin[key] && plugin[key].target && plugin[key].Import(event, value, key, index)
|
|
||||||
for (var i = 0; i < exports.length; i += 3) {
|
|
||||||
if (exports[i+1] == key) {key = exports[i]
|
|
||||||
if (exports[i+2]) {var cb = plugin.onexport[exports[i+2]], res;
|
|
||||||
value = typeof cb == "function" && ((res = cb(event, plugin, plugin.msg, value, key, index)) != undefined) && res || value;
|
|
||||||
}
|
|
||||||
key && can.Import(event, value, key)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
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 && 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}
|
||||||
|
88
lib/misc.js
88
lib/misc.js
@ -1,101 +1,76 @@
|
|||||||
Volcanos("misc", {help: "工具模块",
|
Volcanos("misc", {help: "工具模块",
|
||||||
POST: shy("请求后端", {order: 0}, function(can, msg, url, form, cb) {
|
POST: shy("请求后端", {order: 0}, function(can, msg, url, form, cb) {
|
||||||
var xhr = new XMLHttpRequest()
|
var xhr = new XMLHttpRequest();
|
||||||
xhr.onreadystatechange = function() {
|
xhr.open("POST", url), xhr.onreadystatechange = function() {
|
||||||
if (xhr.readyState != 4) {return}
|
if (xhr.readyState != 4) {return}
|
||||||
if (xhr.status != 200) {return}
|
try { // 解析响应
|
||||||
|
var res = JSON.parse(xhr.responseText);
|
||||||
try {
|
|
||||||
var res = JSON.parse(xhr.responseText||'[{"result":[]}]')
|
|
||||||
res.length > 0 && res[0] && (res = res[0])
|
|
||||||
|
|
||||||
if (res.download_file) {
|
|
||||||
window.open(res.download_file.join(""))
|
|
||||||
} else if (res.page_redirect) {
|
|
||||||
location.href = res.page_redirect.join("")
|
|
||||||
} else if (res.page_refresh) {
|
|
||||||
location.reload()
|
|
||||||
}
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
var res = {"result": [xhr.responseText]}
|
var res = {"result": [xhr.responseText]}
|
||||||
}
|
}
|
||||||
|
xhr.status == 200 && typeof cb == "function" && cb(msg.Copy(res));
|
||||||
typeof cb == "function" && cb(msg.Copy(res))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
xhr.open("POST", url)
|
|
||||||
if (msg.upload) {
|
if (msg.upload) {
|
||||||
var data = new FormData()
|
// 文件参数
|
||||||
|
var data = new FormData();
|
||||||
can.core.Item(form, function(key, value) {
|
can.core.Item(form, function(key, value) {
|
||||||
can.core.List(value, function(item) {
|
can.core.List(value, function(item) {data.append(key, item)});
|
||||||
data.append(key, item)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
data.append("upload", msg.upload)
|
data.append("upload", msg.upload);
|
||||||
} else {
|
} else {
|
||||||
var args = can.core.Items(form, function(value, index, key) {
|
// 表单参数
|
||||||
|
var data = can.core.Items(form, function(value, index, key) {
|
||||||
return key+"="+encodeURIComponent(value)
|
return key+"="+encodeURIComponent(value)
|
||||||
})
|
}).join("&");
|
||||||
var data = args.join("&")
|
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||||
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发送请求
|
||||||
|
++arguments.callee.meta.order
|
||||||
xhr.setRequestHeader("Accept", "application/json")
|
xhr.setRequestHeader("Accept", "application/json")
|
||||||
xhr.send(data)
|
xhr.send(data)
|
||||||
++arguments.callee.meta.order
|
|
||||||
}),
|
}),
|
||||||
Run: shy("请求后端", {order: 0}, function(event, can, dataset, cmd, cb) {
|
Run: shy("请求后端", {order: 0}, function(event, can, dataset, cmd, cb) {
|
||||||
var msg = can.Event(event)
|
var msg = can.Event(event);
|
||||||
|
|
||||||
|
// 解析参数
|
||||||
var option = {"cmds": cmd||msg.cmd}
|
var option = {"cmds": cmd||msg.cmd}
|
||||||
msg.option && msg.option.forEach(function(item) {
|
msg.option && msg.option.forEach(function(item) {
|
||||||
msg[item] && (option[item] = msg[item])
|
msg[item] && (option[item] = msg[item])
|
||||||
})
|
})
|
||||||
// for (var k in dataset) {
|
msg.option = can.core.Item(option, function(key, value) {
|
||||||
// option[k] = dataset[k].toLowerCase().split(",")
|
return msg[key] = value, key
|
||||||
// }
|
})
|
||||||
|
|
||||||
var what = ++arguments.callee.meta.order
|
msg._hand = true, can.misc.POST(can, msg, can.Conf("iceberg")+(dataset.names||msg.names).toLowerCase(), option, function(msg) {
|
||||||
|
|
||||||
msg._hand = true
|
|
||||||
msg.option = []
|
|
||||||
for (var k in option) {
|
|
||||||
msg.option.push(k)
|
|
||||||
msg[k] = option[k]
|
|
||||||
}
|
|
||||||
// msg.detail = ["run", what].concat(option.group).concat(option.names).concat(option.cmds)
|
|
||||||
// kit.Log(msg.detail.concat([msg]))
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
// kit.History("run", -1, option)
|
|
||||||
this.POST(can, msg, can.Conf("iceberg")+(dataset.names||msg.names).toLowerCase(), option, function(msg) {
|
|
||||||
// kit.Log("run", what, "result", msg.result? msg.result[0]: "", msg)
|
|
||||||
typeof cb == "function" && cb(msg)
|
typeof cb == "function" && cb(msg)
|
||||||
}), delete(event.msg)
|
}), delete(event.msg)
|
||||||
}),
|
}),
|
||||||
WSS: shy("请求后端", {order: 0}, function(can, url, args, cb, onopen, onerror, onclose) {var meta = arguments.callee.meta
|
WSS: shy("请求后端", {order: 0}, function(can, url, args, cb, onopen, onerror, onclose) {var meta = arguments.callee.meta
|
||||||
can._socket = new WebSocket(url+"?"+can.base.Args(args))
|
can._socket = new WebSocket(url+"?"+can.base.Args(args))
|
||||||
|
|
||||||
var timer = can.Timer(30000, function() {
|
var timer = can.Timer(30000, function() {can._socket.send("{}")})
|
||||||
can._socket.send("{}")
|
can._socket.onclose = onclose || function() {
|
||||||
})
|
|
||||||
can._socket.onerror = onerror || function() {
|
|
||||||
can._socket.close()
|
|
||||||
}, can._socket.onclose = onclose || function() {
|
|
||||||
timer.stop = true, can.user.toast("wss redial")
|
timer.stop = true, can.user.toast("wss redial")
|
||||||
can.Log("wss", "close"), delete(can._socket), setTimeout(function() {
|
can.Log("wss", "close"), delete(can._socket), setTimeout(function() {
|
||||||
|
// 断线重连
|
||||||
can.misc.WSS(can, url, args, cb, onerror, onclose, onopen)
|
can.misc.WSS(can, url, args, cb, onerror, onclose, onopen)
|
||||||
}, 1000)
|
}, 1000)
|
||||||
|
}, can._socket.onerror = onerror || function() {
|
||||||
|
can._socket.close()
|
||||||
}, can._socket.onopen = onopen
|
}, can._socket.onopen = onopen
|
||||||
|
|
||||||
can._socket.onmessage = function(event) {var order = ++meta.order
|
can._socket.onmessage = function(event) {var order = ++meta.order
|
||||||
try {
|
try {
|
||||||
var msg = JSON.parse(event.data||'{}')
|
// 解析命令
|
||||||
|
var msg = JSON.parse(event.data)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
var msg = {"result": [event.data]}
|
var msg = {"result": [event.data]}
|
||||||
}
|
}
|
||||||
|
|
||||||
msg = can.Event(event, msg), msg.Reply = function() {
|
msg = can.Event(event, msg), msg.Reply = function() {
|
||||||
|
// 回复命令
|
||||||
msg.Option("_handle", true)
|
msg.Option("_handle", true)
|
||||||
msg.Option("_target", msg.Option("_source"))
|
msg.Option("_target", msg.Option("_source"))
|
||||||
can.Log(["wss", order, "result"].concat(msg.result).concat([msg]))
|
can.Log(["wss", order, "result"].concat(msg.result).concat([msg]))
|
||||||
@ -103,10 +78,11 @@ Volcanos("misc", {help: "工具模块",
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// 执行命令
|
||||||
can.Log(["wss", order].concat(msg.detail).concat([msg]))
|
can.Log(["wss", order].concat(msg.detail).concat([msg]))
|
||||||
typeof cb == "function" && cb(event, msg)
|
typeof cb == "function" && cb(event, msg)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
msg.Option("_handle", true)
|
// 执行失败
|
||||||
msg.Reply(can.Log("err", e))
|
msg.Reply(can.Log("err", e))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -199,6 +199,8 @@ Volcanos("page", {help: "网页模块",
|
|||||||
return field.Meta = item, field;
|
return field.Meta = item, field;
|
||||||
}),
|
}),
|
||||||
AppendTable: shy("添加表格", function(can, target, msg, list, cb, cbs) {
|
AppendTable: shy("添加表格", function(can, target, msg, list, cb, cbs) {
|
||||||
|
if (!msg.append || msg.append.length == 0) {return {}}
|
||||||
|
|
||||||
var table = can.page.Append(can, target, "table");
|
var table = can.page.Append(can, target, "table");
|
||||||
var tr = can.page.Append(can, table, "tr");
|
var tr = can.page.Append(can, table, "tr");
|
||||||
can.core.List(list, function(key, index) {can.page.Append(can, tr, "th", key).onclick = function(event) {
|
can.core.List(list, function(key, index) {can.page.Append(can, tr, "th", key).onclick = function(event) {
|
||||||
|
@ -37,8 +37,8 @@ Volcanos("onimport", {help: "导入数据", list: [],
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var code = can.page.Append(can, output, [{view: ["code", "div", can.page.Display(msg.Result())]}]).code;
|
msg.result && can.page.Append(can, output, [{view: ["code", "div", can.page.Display(msg.Result())]}]).code;
|
||||||
return typeof cb == "function" && cb(msg), code;
|
return typeof cb == "function" && cb(msg);
|
||||||
},
|
},
|
||||||
which: function(event, table, list, cb) {if (event.target == table) {return cb(-1, "")}
|
which: function(event, table, list, cb) {if (event.target == table) {return cb(-1, "")}
|
||||||
can.page.Select(can, table, "tr", function(tr, index) {if (event.target == tr) {return cb(tr.dataset.index, "")}
|
can.page.Select(can, table, "tr", function(tr, index) {if (event.target == tr) {return cb(tr.dataset.index, "")}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user