mirror of
https://shylinux.com/x/volcanos
synced 2025-04-26 01:04:06 +08:00
add procstat
This commit is contained in:
parent
a6d6250839
commit
ab8a779aea
@ -228,7 +228,7 @@ Volcanos("user", {
|
|||||||
var ui = can.onappend.tabview(can, {
|
var ui = can.onappend.tabview(can, {
|
||||||
"扫码授权": function(target) { can.misc.WSS(can, {type: aaa.LOGIN, name: "", "sess.theme": can.getHeaderTheme()}, function(cmd, arg) {
|
"扫码授权": function(target) { can.misc.WSS(can, {type: aaa.LOGIN, name: "", "sess.theme": can.getHeaderTheme()}, function(cmd, arg) {
|
||||||
if (cmd == cli.PWD) { var _cmd = " space login "+arg[0]; return can.page.Modify(can, target, arg[2]), can.page.Append(can, target, [
|
if (cmd == cli.PWD) { var _cmd = " space login "+arg[0]; return can.page.Modify(can, target, arg[2]), can.page.Append(can, target, [
|
||||||
{text: "<br/>请授权: "+_cmd, title: "点击复制,并后台执行此命令,即可登录", style: {cursor: "copy"}, onclick: function() { can.user.copy(event, can, _cmd) }},
|
{text: "<br/>或命令授权: "+_cmd, title: "点击复制,并后台执行此命令,即可登录", style: {cursor: "copy"}, onclick: function() { can.user.copy(event, can, _cmd) }},
|
||||||
]), can.onmotion.delay(can, function() { layout() }, 10) }
|
]), can.onmotion.delay(can, function() { layout() }, 10) }
|
||||||
if (cmd == ice.MSG_SESSID) {
|
if (cmd == ice.MSG_SESSID) {
|
||||||
if (!can.misc.CookieSessid(can, arg[0])) { can.user.info.sessid = arg[0] }
|
if (!can.misc.CookieSessid(can, arg[0])) { can.user.info.sessid = arg[0] }
|
||||||
|
@ -22,6 +22,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.page.requireDraw(ca
|
|||||||
return {height: height, width: width, margin: margin, step: step}
|
return {height: height, width: width, margin: margin, step: step}
|
||||||
},
|
},
|
||||||
layout: function(can) { can.data && can.core.CallFunc(can.onaction[can.Action(ice.VIEW)], [{}, can]) },
|
layout: function(can) { can.data && can.core.CallFunc(can.onaction[can.Action(ice.VIEW)], [{}, can]) },
|
||||||
|
// transform: function(can, target) { target.Value("transform", "scale(1, -1)") },
|
||||||
transform: function(can, target) { target.Value("transform", "translate(0, "+parseInt(can.ConfHeight())+") scale(1, -1)") },
|
transform: function(can, target) { target.Value("transform", "translate(0, "+parseInt(can.ConfHeight())+") scale(1, -1)") },
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONACTION, {list: [[ice.VIEW, "趋势图", "柱状图", "折线图", "数据源"],
|
Volcanos(chat.ONACTION, {list: [[ice.VIEW, "趋势图", "柱状图", "折线图", "数据源"],
|
||||||
@ -42,13 +43,30 @@ Volcanos(chat.ONACTION, {list: [[ice.VIEW, "趋势图", "柱状图", "折线图"
|
|||||||
"折线图": function(event, can) { var args = can.onimport._layout(can); args.step = parseFloat((args.width-2*args.margin) / (can._msg.Length()-1))
|
"折线图": function(event, can) { var args = can.onimport._layout(can); args.step = parseFloat((args.width-2*args.margin) / (can._msg.Length()-1))
|
||||||
var black = can.onimport.group(can, cli.BLACK, kit.Dict(svg.STROKE, cli.BLACK, svg.FILL, cli.BLACK))
|
var black = can.onimport.group(can, cli.BLACK, kit.Dict(svg.STROKE, cli.BLACK, svg.FILL, cli.BLACK))
|
||||||
var white = can.onimport.group(can, cli.WHITE, kit.Dict(svg.STROKE, cli.WHITE, svg.FILL, cli.WHITE))
|
var white = can.onimport.group(can, cli.WHITE, kit.Dict(svg.STROKE, cli.WHITE, svg.FILL, cli.WHITE))
|
||||||
var group = can.getHeaderTheme() == cli.BLACK? black: white
|
var group = can.getHeaderTheme() == cli.BLACK? white: black;
|
||||||
can.onimport.transform(can, black), can.onimport.transform(can, white)
|
// can.onimport.transform(can, can.svg)
|
||||||
can.core.List(can.base.Obj(can.Conf(mdb.FIELD), can._msg.append), function(field) { var max = can.data[0][field], min = can.data[0][field]
|
can.onimport.transform(can, black)
|
||||||
for (var i = 1; i < can.data.length; i += 1) { var value = can.data[i][field]; if (value > max) { max = value } if (value < min) { min = value } }
|
can.onimport.transform(can, white)
|
||||||
function order(i) { return i*args.step+args.margin } function scale(y) { return (y - min)/(max - min)*(args.height-2*args.margin)+args.margin }
|
var color = can.core.List(can.base.Obj(can.Conf(cli.COLOR), []), function(color) { return can.onimport.group(can, color, kit.Dict(svg.STROKE, color, svg.FILL, color)) })
|
||||||
for (var i = 1; i < can.data.length; i += 1) { can.onimport.draw(can, {shape: svg.LINE, points: [{x: order(i-1), y: scale(can.data[i-1][field])}, {x: order(i), y: scale(can.data[i][field])}]}, group) }
|
can.core.List(color, function(color) {
|
||||||
|
can.onimport.transform(can, color)
|
||||||
})
|
})
|
||||||
|
var max, min
|
||||||
|
can.core.List(can.base.Obj(can.Conf(mdb.FIELD), can._msg.append), function(field, index) { max = can.data[0][field], min = can.data[0][field]
|
||||||
|
for (var i = 1; i < can.data.length; i += 1) { var value = can.data[i][field]; if (value > max) { max = value } if (value < min) { min = value } }
|
||||||
|
max = parseFloat(can.Conf("max")||max), min = parseFloat(can.Conf("min")||min)
|
||||||
|
function order(i) { return i*args.step+args.margin } function scale(y) { return (y - min)/(max - min)*(args.height-2*args.margin)+args.margin }
|
||||||
|
for (var i = 1; i < can.data.length; i += 1) { can.onimport.draw(can, {shape: svg.LINE, points: [{x: order(i-1), y: scale(can.data[i-1][field])}, {x: order(i), y: scale(can.data[i][field])}]}, color[index]||group) }
|
||||||
|
}), can.onappend._status(can, can._msg.Option(ice.MSG_STATUS))
|
||||||
|
var gray = can.onimport.group(can, cli.WHITE, kit.Dict(svg.STROKE, cli.GRAY, svg.FILL, cli.GRAY))
|
||||||
|
can.onimport.transform(can, gray)
|
||||||
|
var vline = can.onimport.draw(can, {shape: svg.LINE, points: [{x: 0, y: 0}, {x: 0, y: can.ConfHeight()}]}, gray)
|
||||||
|
var hline = can.onimport.draw(can, {shape: svg.LINE, points: [{x: 0, y: 0}, {x: can.ConfWidth(), y: 0}]}, gray)
|
||||||
|
can.svg.onmousemove = function(event) { var p = can._output.getBoundingClientRect(); p = {x: event.clientX - p.x, y: event.clientY - p.y}
|
||||||
|
vline.Val("x1", p.x), vline.Val("x2", p.x), hline.Val("y1", can.ConfHeight()-p.y), hline.Val("y2", can.ConfHeight()-p.y)
|
||||||
|
var item = can.data[parseInt((p.x - args.margin)/args.step)]
|
||||||
|
item && can.Status(item), can.Status("cursor", parseInt((can.ConfHeight()-p.y-args.margin)/(can.ConfHeight()-2*args.margin)*max))
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"柱状图": function(event, can) { var args = can.onimport._layout(can)
|
"柱状图": function(event, can) { var args = can.onimport._layout(can)
|
||||||
var black = can.onimport.group(can, cli.BLACK, kit.Dict(svg.STROKE, cli.BLACK, svg.FILL, cli.BLACK))
|
var black = can.onimport.group(can, cli.BLACK, kit.Dict(svg.STROKE, cli.BLACK, svg.FILL, cli.BLACK))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user