mirror of
https://shylinux.com/x/volcanos
synced 2025-04-26 01:04:06 +08:00
opt some
This commit is contained in:
parent
782bf8e490
commit
e19514bf86
2
frame.js
2
frame.js
@ -601,7 +601,7 @@ Volcanos(chat.ONLAYOUT, {help: "页面布局", _init: function(can, target) { ta
|
|||||||
Volcanos(chat.ONMOTION, {help: "动态特效", _init: function(can, target) {
|
Volcanos(chat.ONMOTION, {help: "动态特效", _init: function(can, target) {
|
||||||
window.addEventListener(html.ORIENTATIONCHANGE, function(event) { can.onengine.signal(can, html.ORIENTATIONCHANGE) })
|
window.addEventListener(html.ORIENTATIONCHANGE, function(event) { can.onengine.signal(can, html.ORIENTATIONCHANGE) })
|
||||||
window.onresize = function(event) {
|
window.onresize = function(event) {
|
||||||
window.setsize(window.innerWidth, window.innerHeight)
|
window.setsize && window.setsize(window.innerWidth, window.innerHeight)
|
||||||
can.onengine.signal(can, chat.ONRESIZE)
|
can.onengine.signal(can, chat.ONRESIZE)
|
||||||
}
|
}
|
||||||
can.onmotion.float.auto(can, target)
|
can.onmotion.float.auto(can, target)
|
||||||
|
@ -280,7 +280,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: {
|
|||||||
|
|
||||||
item._init = function(target) {
|
item._init = function(target) {
|
||||||
item._enter = function(event) { action.submit(event, can, "submit") }
|
item._enter = function(event) { action.submit(event, can, "submit") }
|
||||||
item.run = function(event, cmds, cb) {
|
item.run = item.run||function(event, cmds, cb) {
|
||||||
var _msg = can.request(event, {_handle: ice.TRUE, action: msg.Option(html.ACTION)}, msg, can.Option())
|
var _msg = can.request(event, {_handle: ice.TRUE, action: msg.Option(html.ACTION)}, msg, can.Option())
|
||||||
can.page.Select(can, ui.table, html.OPTION_ARGS, function(item) {
|
can.page.Select(can, ui.table, html.OPTION_ARGS, function(item) {
|
||||||
item.name && item.value && _msg.Option(item.name, item.value)
|
item.name && item.value && _msg.Option(item.name, item.value)
|
||||||
|
@ -67,6 +67,7 @@ fieldset.plug>form.option input[type=button][name=close]{ display:block; }
|
|||||||
|
|
||||||
fieldset.plugin>div.status { border-top:1px solid darkcyan; height:30px; }
|
fieldset.plugin>div.status { border-top:1px solid darkcyan; height:30px; }
|
||||||
fieldset.story>div.status { border-top:1px solid darkcyan; }
|
fieldset.story>div.status { border-top:1px solid darkcyan; }
|
||||||
|
fieldset.output { padding:0; margin:0; }
|
||||||
fieldset.output>form.option { display:none; }
|
fieldset.output>form.option { display:none; }
|
||||||
fieldset.output>div.action { display:none; }
|
fieldset.output>div.action { display:none; }
|
||||||
fieldset.output>div.status { display:none; }
|
fieldset.output>div.status { display:none; }
|
||||||
|
@ -309,7 +309,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", _trans: {link: "链接", width: "
|
|||||||
case nfs.LINE: return can.onaction.selectLine(can, parseInt(ls[1])), can.current.scroll(can.current.scroll()-4)
|
case nfs.LINE: return can.onaction.selectLine(can, parseInt(ls[1])), can.current.scroll(can.current.scroll()-4)
|
||||||
default: can.core.List(can.sup.paths, function(path) { if (list[0].indexOf(path) == 0) { can.onimport.tabview(can, path, list[0].slice(path.length)) } })
|
default: can.core.List(can.sup.paths, function(path) { if (list[0].indexOf(path) == 0) { can.onimport.tabview(can, path, list[0].slice(path.length)) } })
|
||||||
}
|
}
|
||||||
})._target, html.LEFT, can.ui.project.offsetWidth+can.ui.content.offsetWidth/4-34, html.TOP, can.ui.content.offsetHeight/4)
|
})._target, html.LEFT, can.ui.project.offsetWidth+can.ui.content.offsetWidth/4-34, html.TOP, can.ui.content.offsetHeight/4, html.RIGHT, "")
|
||||||
},
|
},
|
||||||
show: function(event, can) {
|
show: function(event, can) {
|
||||||
if (can.base.Ext(can.Option(nfs.FILE)) == nfs.JS) { delete(Volcanos.meta.cache[can.base.Path("/require/", can.Option(nfs.PATH), can.Option(nfs.FILE))]) }
|
if (can.base.Ext(can.Option(nfs.FILE)) == nfs.JS) { delete(Volcanos.meta.cache[can.base.Path("/require/", can.Option(nfs.PATH), can.Option(nfs.FILE))]) }
|
||||||
|
@ -223,8 +223,10 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互",
|
|||||||
var rest = can.onkeymap.deleteText(target, target.selectionEnd), text = can.ui.current.value
|
var rest = can.onkeymap.deleteText(target, target.selectionEnd), text = can.ui.current.value
|
||||||
var left = text.substr(0, text.indexOf(text.trimLeft()))||(text.trimRight() == ""? text: "")
|
var left = text.substr(0, text.indexOf(text.trimLeft()))||(text.trimRight() == ""? text: "")
|
||||||
text && can.core.List(["{}", "[]", "()"], function(item) { if (can.base.endWith(text, item[0])) {
|
text && can.core.List(["{}", "[]", "()"], function(item) { if (can.base.endWith(text, item[0])) {
|
||||||
!can.base.beginWith(rest, item[1]) && (!rest && can.onaction.insertLine(can, left+item[1], can.current.next()), left += ice.TB)
|
if (can.base.beginWith(rest, item[1])) { return true }
|
||||||
} }); if (can.base.endWith(text, "`") && can.base.count(text, "`")%2==1) { !rest && can.onaction.insertLine(can, left+"`", can.current.next()) }
|
(!rest && can.onaction.insertLine(can, left+item[1], can.current.next()), left += ice.TB)
|
||||||
|
} }).length == 0 && rest && ["}", "]", ")"].indexOf(rest[0]) > -1 && (left = left.slice(0, -1))
|
||||||
|
if (can.base.endWith(text, "`") && can.base.count(text, "`")%2==1) { !rest && can.onaction.insertLine(can, left+"`", can.current.next()) }
|
||||||
var line = can.onaction.insertLine(can, left+rest.trimLeft(), can.current.next())
|
var line = can.onaction.insertLine(can, left+rest.trimLeft(), can.current.next())
|
||||||
can.current.text(text.trimRight()||text), can.onaction.selectLine(can, line)
|
can.current.text(text.trimRight()||text), can.onaction.selectLine(can, line)
|
||||||
can.onkeymap.cursorMove(target, 0, left.length)
|
can.onkeymap.cursorMove(target, 0, left.length)
|
||||||
|
@ -24,9 +24,9 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
|
|||||||
can.onaction.modifyTask(event, can, task, "begin_time", time+task.begin_time.slice(time.length), task.begin_time)
|
can.onaction.modifyTask(event, can, task, "begin_time", time+task.begin_time.slice(time.length), task.begin_time)
|
||||||
} }, draggable: time != undefined, title: can.onexport.title(can, task), _init: function(target) {
|
} }, draggable: time != undefined, title: can.onexport.title(can, task), _init: function(target) {
|
||||||
var item = can.onimport.item(can, {nick: task.name+ice.DF+task.text}, function() { can.onmotion.delay(can, function() {
|
var item = can.onimport.item(can, {nick: task.name+ice.DF+task.text}, function() { can.onmotion.delay(can, function() {
|
||||||
can.onmotion.select(can, can.ui.content, html.TD, target.parentNode), can.onimport._profile(can, task)
|
can.onmotion.select(can, can.ui.content, html.TD, target.parentNode), can.onimport._profile(can, task), can.Status(mdb.COUNT, msg.Length())
|
||||||
}) }, null, can.ui.project); task._target = target, target.onclick = function(event) { item.click() }
|
}) }, null, can.ui.project); task._target = target, target.onclick = function(event) { item.click() }
|
||||||
can.sup.task = can.sup.task||task, can.sup.task.zone == task.zone && can.sup.task.id == task.id && (can.sup.task._target = target)
|
can.sup.task && can.sup.task.zone == task.zone && can.sup.task.id == task.id && (can.sup.task._target = target)
|
||||||
var ls = can.core.Split(decodeURIComponent(location.hash.slice(1)))||[]; if (ls[0] == task.zone && ls[1] == task.id) { can.sup.task = task }
|
var ls = can.core.Split(decodeURIComponent(location.hash.slice(1)))||[]; if (ls[0] == task.zone && ls[1] == task.id) { can.sup.task = task }
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -143,7 +143,9 @@ Volcanos(chat.ONACTION, {list: [mdb.PREV, mdb.NEXT, mdb.INSERT, mdb.EXPORT, mdb.
|
|||||||
can.runAction(event, mdb.INSERT, [mdb.ZONE, args[1], "begin_time", time].concat(args))
|
can.runAction(event, mdb.INSERT, [mdb.ZONE, args[1], "begin_time", time].concat(args))
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
modifyTask: function(event, can, task, key, value) { can.runAction(can.request(event, task, can.Option()), mdb.MODIFY, [key, value], function() { can.Update() }) },
|
modifyTask: function(event, can, task, key, value) {
|
||||||
|
can.runAction(can.request(event, task, can.Option()), mdb.MODIFY, [key, value], function() { can.Update() })
|
||||||
|
},
|
||||||
|
|
||||||
_filter: function(event, can, key, value) { var count = 0
|
_filter: function(event, can, key, value) { var count = 0
|
||||||
if (value == "all") {
|
if (value == "all") {
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb) {
|
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.onmotion.clear(can)
|
||||||
can.base.isFunc(cb) && cb(msg)
|
if (can.Option(mdb.TYPE)) { return can.onfigure[can.Option(mdb.TYPE)](can, msg, can.Option("fields")) }
|
||||||
|
can.ui = can.onlayout.display(can), can.table = can.onappend.table(can, msg, function(value, key, index, line) {
|
||||||
can.ui = can.onlayout.display(can)
|
|
||||||
can.table = can.onappend.table(can, msg, function(value, key, index, line) {
|
|
||||||
return {text: [value, html.TD], oncontextmenu: function(event) {
|
return {text: [value, html.TD], oncontextmenu: function(event) {
|
||||||
can.user.carte(event, can, can.ondetail, can.ondetail.list, function(ev, cmd, meta) {
|
can.user.carte(event, can, can.ondetail, can.ondetail.list, function(ev, cmd, meta) {
|
||||||
var cb = meta[cmd]; cb && cb(event, can, cmd, value, key, index, line)
|
var cb = meta[cmd]; cb && cb(event, can, cmd, value, key, index, line)
|
||||||
@ -12,10 +10,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb) {
|
|||||||
}, ondblclick: function(event) {
|
}, ondblclick: function(event) {
|
||||||
can.page.editable(can, event.target, true)
|
can.page.editable(can, event.target, true)
|
||||||
}}
|
}}
|
||||||
}, can.ui.content)
|
}, can.ui.content), can.base.isFunc(cb) && cb(msg), can.onappend._status(can, msg.append), can.onaction._compute(event, can)
|
||||||
|
|
||||||
can.onappend._status(can, msg.append)
|
|
||||||
can.onaction._compute(event, can)
|
|
||||||
},
|
},
|
||||||
}, [""])
|
}, [""])
|
||||||
Volcanos(chat.ONFIGURE, {help: "组件菜单",
|
Volcanos(chat.ONFIGURE, {help: "组件菜单",
|
||||||
@ -34,6 +29,18 @@ Volcanos(chat.ONFIGURE, {help: "组件菜单",
|
|||||||
res[ncol] = res[ncol] / nrow
|
res[ncol] = res[ncol] / nrow
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"折线图": function(can, msg, fields) {
|
||||||
|
return can.onappend.plugin(can, {type: "output", index: "can.plugin", display: "/plugin/story/trend.js", width: can.ConfWidth(), height: can.ConfHeight()}, function(sub) {
|
||||||
|
sub.list = can.core.List(can.core.Split(fields), function(field) { return msg.Table(function(item) { return item[field] }) })
|
||||||
|
sub.Conf(ice.VIEW, "折线图")
|
||||||
|
})
|
||||||
|
},
|
||||||
|
"比例图": function(can, msg, fields) {
|
||||||
|
return can.onappend.plugin(can, {type: "output", index: "can.plugin", display: "/plugin/story/pie.js", width: can.ConfWidth(), height: can.ConfHeight()}, function(sub) {
|
||||||
|
sub.list = can.core.List(can.core.Split(fields), function(field) { return msg.Table(function(item) { return item[field] }) })
|
||||||
|
sub.__msg = msg, sub.Conf(mdb.FIELD, fields)
|
||||||
|
})
|
||||||
|
},
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONACTION, {help: "组件菜单", list: [ice.SAVE, [ice.MODE, "全选", "块选", "反选", "多选", "拖动", "编辑"], [ice.EXEC, "求和", "最大", "最小", "平均"]],
|
Volcanos(chat.ONACTION, {help: "组件菜单", list: [ice.SAVE, [ice.MODE, "全选", "块选", "反选", "多选", "拖动", "编辑"], [ice.EXEC, "求和", "最大", "最小", "平均"]],
|
||||||
_compute: function(event, can) {
|
_compute: function(event, can) {
|
||||||
@ -50,6 +57,168 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [ice.SAVE, [ice.MODE, "全
|
|||||||
|
|
||||||
save: function(event, can, button) { can.runAction(event, button, [can.Option(nfs.PATH), can.onexport.file(can)]) },
|
save: function(event, can, button) { can.runAction(event, button, [can.Option(nfs.PATH), can.onexport.file(can)]) },
|
||||||
exec: function(event, can, button) { can.onaction._compute(event, can) },
|
exec: function(event, can, button) { can.onaction._compute(event, can) },
|
||||||
|
push: function(event, can, button) {
|
||||||
|
can.user.input(event, can, can.page.Select(can, can._output, ["table.content", "tr>th"], function(th, index) { return {name: th.innerText, run: function(event, cmds, cb) {
|
||||||
|
var msg = can.request(event); can.page.Select(can, can._output, ["table.content", "tr"], function(tr, order) { order != 0 && msg.Push(mdb.VALUE, tr.children[index].innerText) }), cb(msg)
|
||||||
|
}} }), function(list) { can.run(can.request(event, {_handle: true}), [button, can.Option(nfs.PATH)].concat(list), function() { can.Update() }) })
|
||||||
|
},
|
||||||
|
draw: function(event, can, button) {
|
||||||
|
can.user.input(event, can, [["type", "折线图", "比例图"], {name: "fields", run: function(event, cmds, cb) {
|
||||||
|
var msg = can.request(event); can.page.Select(can, can._output, ["table.content", "tr>th"], function(th) { msg.Push(mdb.VALUE, th.innerText) }), cb(msg)
|
||||||
|
}}], function(list) { can.onfigure[list[0]](can, can._msg, list[1]) })
|
||||||
|
},
|
||||||
|
|
||||||
|
_foreach: function(can, button, cb) {
|
||||||
|
button && can.Action(ice.MODE, button)
|
||||||
|
can.page.Select(can, can.ui.content, html.TR, function(item) {
|
||||||
|
cb(item)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
"全选": function(event, can, button) {
|
||||||
|
can.onaction._foreach(can, button, function(item) {
|
||||||
|
can.page.editable(can, item, false)
|
||||||
|
can.page.draggable(can, item, false)
|
||||||
|
item.onmouseenter = null, item.onclick = null
|
||||||
|
can.page.ClassList.del(can, item, html.SELECT)
|
||||||
|
can.page.ClassList.del(can, item, "over")
|
||||||
|
})
|
||||||
|
can.onaction._compute(event, can)
|
||||||
|
},
|
||||||
|
"块选": function(event, can, button) {
|
||||||
|
can.onaction._foreach(can, button, function(item) {
|
||||||
|
item.onmouseenter = function() {
|
||||||
|
can.page.ClassList.add(can, item, html.SELECT)
|
||||||
|
can.onaction._compute(event, can)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
"反选": function(event, can, button) {
|
||||||
|
can.onaction._foreach(can, button, function(item) {
|
||||||
|
item.onmouseenter = function() {
|
||||||
|
can.page.ClassList.del(can, item, html.SELECT)
|
||||||
|
can.onaction._compute(event, can)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
"多选": function(event, can, button) {
|
||||||
|
can.onaction._foreach(can, button, function(item) {
|
||||||
|
item.onmouseenter = function() {}
|
||||||
|
item.onclick = function() {
|
||||||
|
can.page.ClassList.neg(can, item, html.SELECT)
|
||||||
|
can.onaction._compute(event, can)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
"拖动": function(event, can, button) {
|
||||||
|
can.onaction["全选"](event, can, button)
|
||||||
|
can.onaction._foreach(can, "", function(item) {
|
||||||
|
can.page.draggable(can, item, true)
|
||||||
|
item.ondragstart = function(event) { can.drag = item }
|
||||||
|
item.ondragover = function(event) { event.preventDefault(), can.page.ClassList.add(can, item, "over")}
|
||||||
|
item.ondragleave = function(event) { can.page.ClassList.del(can, item, "over") }
|
||||||
|
item.ondrop = function(event) { event.preventDefault()
|
||||||
|
can.page.Select(can, can.ui.content, html.TABLE, function(table) {
|
||||||
|
table.insertBefore(can.drag, item)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
"编辑": function(event, can, button) {
|
||||||
|
can.onaction._foreach(can, button, function(item) {
|
||||||
|
can.page.editable(can, item, true)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
})
|
||||||
|
Volcanos(chat.ONDETAIL, {help: "组件详情", list: ["复制", "删除"],
|
||||||
|
"复制": function(event, can, button, value, key, index, line) {
|
||||||
|
var end = can.page.Append(can, can.table, [{type: html.TR, list: can.core.List(can._msg.append, function(key) {
|
||||||
|
return {text: [line[key], html.TD]}
|
||||||
|
})}]).tr; can.table.insertBefore(end, event.target.parentNode)
|
||||||
|
},
|
||||||
|
"删除": function(event, can, button) {
|
||||||
|
can.page.Remove(can, event.target.parentNode)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
Volcanos(chat.ONEXPORT, {help: "导出数据",
|
||||||
|
file: function(can) {
|
||||||
|
return can.page.Select(can, can.ui.content, html.TR, function(tr) {
|
||||||
|
return can.page.Select(can, tr, can.page.Keys(html.TH, html.TD), function(td) {return td.innerHTML}).join(ice.FS)
|
||||||
|
}).join(ice.NL)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.onmotion.clear(can)
|
||||||
|
if (can.Option(mdb.TYPE)) { return can.onfigure[can.Option(mdb.TYPE)](can, msg, can.Option("fields")) }
|
||||||
|
can.ui = can.onlayout.display(can), can.table = can.onappend.table(can, msg, function(value, key, index, line) {
|
||||||
|
return {text: [value, html.TD], oncontextmenu: function(event) {
|
||||||
|
can.user.carte(event, can, can.ondetail, can.ondetail.list, function(ev, cmd, meta) {
|
||||||
|
var cb = meta[cmd]; cb && cb(event, can, cmd, value, key, index, line)
|
||||||
|
})
|
||||||
|
}, onclick: function(event) {
|
||||||
|
key == nfs.PATH && can.run(event, [can.Option(nfs.PATH, value)])
|
||||||
|
}, ondblclick: function(event) {
|
||||||
|
can.page.editable(can, event.target, true)
|
||||||
|
}}
|
||||||
|
}, can.ui.content), can.base.isFunc(cb) && cb(msg), can.onappend._status(can, msg.append), can.onaction._compute(event, can)
|
||||||
|
},
|
||||||
|
}, [""])
|
||||||
|
Volcanos(chat.ONFIGURE, {help: "组件菜单",
|
||||||
|
"求和": function(event, can, res, td, index) {
|
||||||
|
res[index] = parseInt(td.innerText) + (res[index]||0);
|
||||||
|
},
|
||||||
|
"最大": function(event, can, res, td, index) {
|
||||||
|
(res[index] === undefined || parseInt(td.innerText) > parseInt(res[index])) && (res[index] = parseInt(td.innerText))
|
||||||
|
},
|
||||||
|
"最小": function(event, can, res, td, index) {
|
||||||
|
(res[index] === undefined || parseInt(td.innerText) < parseInt(res[index])) && (res[index] = parseInt(td.innerText))
|
||||||
|
},
|
||||||
|
"平均": function(event, can, res, td, ncol, cols, rows, nrow) {
|
||||||
|
res[ncol] = parseInt(td.innerText) + (res[ncol]||0);
|
||||||
|
if (nrow == rows.length - 1) {
|
||||||
|
res[ncol] = res[ncol] / nrow
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"折线图": function(can, msg, fields) {
|
||||||
|
return can.onappend.plugin(can, {type: "output", index: "can.plugin", display: "/plugin/story/trend.js", width: can.ConfWidth(), height: can.ConfHeight()}, function(sub) {
|
||||||
|
sub.list = can.core.List(can.core.Split(fields), function(field) { return msg.Table(function(item) { return item[field] }) })
|
||||||
|
sub.Conf(ice.VIEW, "折线图")
|
||||||
|
})
|
||||||
|
},
|
||||||
|
"比例图": function(can, msg, fields) {
|
||||||
|
return can.onappend.plugin(can, {type: "output", index: "can.plugin", display: "/plugin/story/pie.js", width: can.ConfWidth(), height: can.ConfHeight()}, function(sub) {
|
||||||
|
sub.list = can.core.List(can.core.Split(fields), function(field) { return msg.Table(function(item) { return item[field] }) })
|
||||||
|
sub.__msg = msg, sub.Conf(mdb.FIELD, fields)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
})
|
||||||
|
Volcanos(chat.ONACTION, {help: "组件菜单", list: [ice.SAVE, [ice.MODE, "全选", "块选", "反选", "多选", "拖动", "编辑"], [ice.EXEC, "求和", "最大", "最小", "平均"]],
|
||||||
|
_compute: function(event, can) {
|
||||||
|
var mul = html.TR + (can.Action(ice.MODE) == "全选"? "": ".select")
|
||||||
|
var method = can.onfigure[can.Action(ice.EXEC)], res = {}
|
||||||
|
|
||||||
|
can.page.Select(can, can.ui.content, mul, function(tr, nrow, rows) {
|
||||||
|
(mul != html.TR || nrow > 0) && can.page.Select(can, tr, html.TD, function(td, ncol, cols) {
|
||||||
|
method && method(event, can, res, td, ncol, cols, rows, nrow)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
can.core.Item(res, function(key, value) { can.Status(can._msg.append[key], value||"") })
|
||||||
|
},
|
||||||
|
|
||||||
|
save: function(event, can, button) { can.runAction(event, button, [can.Option(nfs.PATH), can.onexport.file(can)]) },
|
||||||
|
exec: function(event, can, button) { can.onaction._compute(event, can) },
|
||||||
|
draw: function(event, can, button) {
|
||||||
|
can.user.input(event, can, [{name: "type", values: ["折线图", "比例图"]}, "fields"], function(list) { can.onfigure[list[0]](can, can._msg, list[1]) })
|
||||||
|
},
|
||||||
|
push: function(event, can, button) {
|
||||||
|
can.user.input(event, can, can.page.Select(can, can._output, ["table.content", "tr>th"], function(th, index) { return {name: th.innerText, run: function(event, cmds, cb) {
|
||||||
|
var msg = can.request(event); can.page.Select(can, can._output, ["table.content", "tr"], function(tr, order) {
|
||||||
|
order != 0 && msg.Push("value", tr.children[index].innerText)
|
||||||
|
}), cb(msg)
|
||||||
|
}} }), function(list) {
|
||||||
|
can.run(can.request(event, {_handle: true}), [button, can.Option(nfs.PATH)].concat(list), function() { can.Update() })
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
_foreach: function(can, button, cb) {
|
_foreach: function(can, button, cb) {
|
||||||
button && can.Action(ice.MODE, button)
|
button && can.Action(ice.MODE, button)
|
||||||
|
@ -2,7 +2,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
var color = [cli.RED, cli.YELLOW, cli.GREEN, cli.CYAN, cli.BLUE, cli.PURPLE]
|
var color = [cli.RED, cli.YELLOW, cli.GREEN, cli.CYAN, cli.BLUE, cli.PURPLE]
|
||||||
var color = ["#3300FF", "#2196F3", "#4CAF50", "#CDDC39", "#FFEB3B", "#9C27B0", "#795548", "#607D8B", "#CC33FF"]
|
var color = ["#3300FF", "#2196F3", "#4CAF50", "#CDDC39", "#FFEB3B", "#9C27B0", "#795548", "#607D8B", "#CC33FF"]
|
||||||
var height = msg.Option(html.HEIGHT)||can.ConfHeight()
|
var height = msg.Option(html.HEIGHT)||can.ConfHeight()
|
||||||
|
msg = can.sup.__msg||msg
|
||||||
can.page.ClassList.add(can, can._fields, "draw"), can.onmotion.hidden(can, can._action)
|
can.page.ClassList.add(can, can._fields, "draw"), can.onmotion.hidden(can, can._action)
|
||||||
can.require(["/plugin/local/wiki/draw.js", "/plugin/local/wiki/draw/path.js"], function() { can.onimport._show(can, msg)
|
can.require(["/plugin/local/wiki/draw.js", "/plugin/local/wiki/draw/path.js"], function() { can.onimport._show(can, msg)
|
||||||
var margin = height/8, r = height/2-margin; can.svg.Val(html.WIDTH, 2*(r+margin)), can.svg.Val(html.HEIGHT, 2*(r+margin))
|
var margin = height/8, r = height/2-margin; can.svg.Val(html.WIDTH, 2*(r+margin)), can.svg.Val(html.HEIGHT, 2*(r+margin))
|
||||||
|
@ -2,7 +2,9 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
can.onmotion.clear(can), can.page.ClassList.add(can, can._fields, "draw")
|
can.onmotion.clear(can), can.page.ClassList.add(can, can._fields, "draw")
|
||||||
can.require(["/plugin/local/wiki/draw.js", "/plugin/local/wiki/draw/path.js"], function() {
|
can.require(["/plugin/local/wiki/draw.js", "/plugin/local/wiki/draw/path.js"], function() {
|
||||||
can.data = msg.Table(), can.onimport._sum(can)
|
can.data = msg.Table(), can.onimport._sum(can)
|
||||||
can.base.isFunc(cb) && cb(msg), can.onimport.layout(can), can.base.isFunc(cb) && cb(msg)
|
can.base.isFunc(cb) && cb(msg), can.Conf(ice.VIEW) && can.Action(ice.VIEW, can.Conf(ice.VIEW))
|
||||||
|
can.list = can.sup.list||can.list
|
||||||
|
can.onimport.layout(can), can.base.isFunc(cb) && cb(msg)
|
||||||
can.data = msg.Table(), can.onimport._sum(can)
|
can.data = msg.Table(), can.onimport._sum(can)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -43,13 +45,30 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
layout: function(can) {
|
layout: function(can) {
|
||||||
can.onaction[can.Action(ice.VIEW)]({}, can)
|
can.onaction[can.Action(ice.VIEW)]({}, can)
|
||||||
},
|
},
|
||||||
|
transform: function(can, target) {
|
||||||
|
target.Value("transform", "translate(0, "+parseInt(can.ConfHeight())+") scale(1, -1)")
|
||||||
|
},
|
||||||
}, [""])
|
}, [""])
|
||||||
Volcanos(chat.ONACTION, {help: "组件菜单", list: [
|
Volcanos(chat.ONACTION, {help: "组件菜单", list: [
|
||||||
[ice.VIEW, "趋势图", "柱状图", "数据源"],
|
[ice.VIEW, "趋势图", "柱状图", "折线图", "数据源"],
|
||||||
[html.HEIGHT, ice.AUTO, 100, 200, 400, 600, 800, ice.AUTO],
|
[html.HEIGHT, ice.AUTO, 100, 200, 400, 600, 800, ice.AUTO],
|
||||||
["space", 10, 20, 50, 100],
|
["space", 10, 20, 50, 100],
|
||||||
[html.SPEED, 10, 20, 50, 100],
|
[html.SPEED, 10, 20, 50, 100],
|
||||||
],
|
],
|
||||||
|
"折线图": function(event, can) { var args = can.onimport._layout(can)
|
||||||
|
var black = can.onimport.group(can, cli.BLACK, kit.Dict(html.STROKE, cli.BLACK, html.FILL, cli.BLACK))
|
||||||
|
var white = can.onimport.group(can, cli.WHITE, kit.Dict(html.STROKE, cli.WHITE, html.FILL, cli.WHITE))
|
||||||
|
can.onimport.transform(can, black), can.onimport.transform(can, white)
|
||||||
|
can.core.List(can.list, function(list) {
|
||||||
|
var max = list[0], min = list[0], step = (can.ConfWidth()-2*args.space)/(list.length-1)
|
||||||
|
for (var i = 1; i < list.length; i += 1) { if (list[i] > max) { max = list[i] } if (list[i] < min) { min = list[i] } }
|
||||||
|
function scale(y) { return (y - min)/(max - min)*(args.height-2*args.space)+args.space }
|
||||||
|
function order(i) { return i*step+args.space }
|
||||||
|
for (var i = 1; i < list.length; i += 1) {
|
||||||
|
can.onimport.draw({}, can, {shape: svg.LINE, point: [{x: order(i-1), y: scale(list[i-1])}, {x: order(i), y: scale(list[i])}]}, white)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
"趋势图": function(event, can) { var args = can.onimport._layout(can)
|
"趋势图": function(event, can) { var args = can.onimport._layout(can)
|
||||||
function scale(y) { return (y - can.min)/(can.max - can.min)*(args.height-2*args.space) }
|
function scale(y) { return (y - can.min)/(can.max - can.min)*(args.height-2*args.space) }
|
||||||
function order(index, x, y) { return {x: args.space+args.step*index+x, y: args.height-args.space-scale(y)} }
|
function order(index, x, y) { return {x: args.space+args.step*index+x, y: args.height-args.space-scale(y)} }
|
||||||
|
1
proto.js
1
proto.js
@ -341,6 +341,7 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", pack:
|
|||||||
for (var i = 0; i < cache.length; i++) { var sub = cache[i], name = sub._name
|
for (var i = 0; i < cache.length; i++) { var sub = cache[i], name = sub._name
|
||||||
if (typeof each == lang.FUNCTION && each(can, name, sub)) { continue }
|
if (typeof each == lang.FUNCTION && each(can, name, sub)) { continue }
|
||||||
!can[name] && (can[name] = {}); for (var k in sub) {
|
!can[name] && (can[name] = {}); for (var k in sub) {
|
||||||
|
if (name == "onimport" && k == "_init") { can[name]["_last_init"] = sub[k] }
|
||||||
can[name].hasOwnProperty(k) || !sub.hasOwnProperty(k) || (can[name][k] = sub[k])
|
can[name].hasOwnProperty(k) || !sub.hasOwnProperty(k) || (can[name][k] = sub[k])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user