forked from x/volcanos
opt zml
This commit is contained in:
parent
77d928bb7e
commit
d75d499726
35
frame.js
35
frame.js
@ -442,10 +442,11 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
case html.MAIN:
|
||||
case html.FOOT:
|
||||
case html.TABS:
|
||||
case "username":
|
||||
case html.MENU: item.type = ls[0]; break
|
||||
default: item.name = ls[0]; break
|
||||
}
|
||||
for (var i = 1; i < ls.length; i += 2) { item[ls[i]] = ls[i+1]
|
||||
for (var i = 1; i < ls.length; i += 2) { can.core.Value(item, ls[i], ls[i+1])
|
||||
if (ls[i] == ctx.INDEX) { item.type = item.type||html.PLUGIN }
|
||||
}
|
||||
})
|
||||
@ -471,13 +472,13 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
} else if (can.base.isObject(list)) { var meta = list }
|
||||
|
||||
keys = can.core.Keys(keys, meta.name||meta.type)
|
||||
var item = {view: meta.type}, init; switch (meta.type) {
|
||||
case html.HEAD: data = {}
|
||||
var item = {view: meta.type}, init, subtype; switch (meta.type) {
|
||||
case html.HEAD: subtype = "menu", data = {}
|
||||
init = function(target) { data.head = target
|
||||
can.page.ClassList.add(can, target, html.LAYOUT)
|
||||
}
|
||||
break
|
||||
case html.LEFT:
|
||||
case html.LEFT: subtype = "item"
|
||||
init = function(target) {
|
||||
can.page.ClassList.add(can, target, html.LAYOUT)
|
||||
can.core.Timer(10, function() { var height = target.parentNode.offsetHeight
|
||||
@ -536,16 +537,22 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
}), can.page.Select(can, ui.name, html.DIV_ITEM)[0].click()
|
||||
}
|
||||
break
|
||||
case "username":
|
||||
// item.inner = can.user.info.usernick
|
||||
can.page.Append(can, target, [
|
||||
can.base.Copy({view: ["username", "div"], onclick: function(event) {
|
||||
}, list: [{view: ["some", html.DIV, can.user.info.usernick]}, {img: "/share/local/avatar"}]})])
|
||||
return
|
||||
}
|
||||
|
||||
item._init = item._init||function(target) {
|
||||
meta.list && can.onappend.parse(can, meta.list, target, keys, data, type)
|
||||
meta.list && can.onappend.parse(can, meta.list, target, keys, data, type||subtype)
|
||||
can.base.isFunc(init) && init(target), can.base.isFunc(meta.init) && meta.init(target)
|
||||
}
|
||||
if (can.base.isString(meta.style)) { item.className = meta.style }
|
||||
if (can.base.isObject(meta.style)) { item.style = meta.style }
|
||||
|
||||
if (meta.type == html.MENU) {
|
||||
if ((meta.type||type) == html.MENU) {
|
||||
can.page.Append(can, target, [can.base.Copy({view: [html.MENU, html.DIV, meta.name||meta], onclick: function(event) {
|
||||
if (meta.list && meta.list.length > 0) { return }
|
||||
can.onengine.signal(can, meta.name) || can.onengine.signal(can, html.MENU, can.request(event, {item: meta.name}))
|
||||
@ -556,7 +563,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
}})]).first
|
||||
return
|
||||
}
|
||||
if (type == html.ITEM) { item.view = html.LIST
|
||||
if ((type||subtype) == html.ITEM) { item.view = item.view||html.LIST
|
||||
if (meta.action == "auto") {
|
||||
meta.init = meta.init||function(item) { can.core.Timer(100, function() { item.click() }) }
|
||||
}
|
||||
@ -565,10 +572,18 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
switch (meta.type) {
|
||||
case html.PLUGIN:
|
||||
if (can.onmotion.cache(can, function() { return keys }, data.main)) { break }
|
||||
can.onappend.plugin(can, {index: meta.index}, function(sub) {
|
||||
if (can.base.Ext(meta.index) == "zml") {
|
||||
can.page.Append(can, data.main, [{type: "iframe", src: "/chat/cmd/"+meta.index,
|
||||
width: data.main.offsetWidth, height: data.main.offsetHeight,
|
||||
}])
|
||||
break
|
||||
}
|
||||
|
||||
can.onappend.plugin(can, {index: meta.index, args: can.base.Obj(meta.args)}, function(sub) {
|
||||
sub.ConfHeight(data.main.offsetHeight-160)
|
||||
sub.run = function(event, cmds, cb, silent) {
|
||||
can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth(data.main.offsetWidth-40))
|
||||
can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, meta.index], cmds), function(msg) {
|
||||
can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, sub._index||meta.index], cmds), function(msg) {
|
||||
cb(msg), can.core.Timer(10, function() {
|
||||
can.page.style(can, sub._table, html.MAX_HEIGHT, data.main.offsetHeight-150)
|
||||
})
|
||||
@ -590,6 +605,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
_plugin: function(can, value, meta, cb, target) {
|
||||
meta.feature = can.base.getValid(meta.feature, can.base.Obj(value.meta))||{}
|
||||
meta.inputs = can.base.getValid(meta.inputs, can.base.Obj(value.list))||[]
|
||||
meta.display = meta.display||value.display
|
||||
|
||||
meta.height = meta.height||can.Conf(html.HEIGHT)
|
||||
meta.width = meta.width||can.Conf(html.WIDTH)
|
||||
@ -599,6 +615,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
meta.help = meta.help||value.help
|
||||
|
||||
can.onappend._init(can, meta, [chat.PLUGIN_STATE_JS], function(sub, skip) {
|
||||
sub._index = value.index||meta.index
|
||||
sub.run = function(event, cmds, cb) { can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, meta.index], cmds), cb) }
|
||||
can.base.isFunc(cb) && cb(sub, meta, skip)
|
||||
}, target||can._output)
|
||||
|
16
lib/core.js
16
lib/core.js
@ -16,7 +16,21 @@ Volcanos("core", {help: "数据结构",
|
||||
if (typeof key == lang.OBJECT && key.length > 0) { key = key.join(ice.PT) }
|
||||
if (typeof key == lang.OBJECT) { for (var k in key) { arguments.callee.call(this, data, k, key[k]) } return data }
|
||||
|
||||
if (value != undefined) { data[key] = value }
|
||||
if (value != undefined) {
|
||||
var _data = data
|
||||
|
||||
var ls = key.split(ice.PT)
|
||||
for (var i = 0; i < ls.length; i++) {
|
||||
var _sub = _data[ls[i]]||{}
|
||||
_data[ls[i]] = _sub
|
||||
if (i == ls.length - 1) {
|
||||
_data[ls[i]] = value
|
||||
} else {
|
||||
_data = _sub
|
||||
}
|
||||
}
|
||||
// data[key] = value
|
||||
}
|
||||
if (data[key] != undefined) { return data[key] }
|
||||
|
||||
var p = data, ls = key.split(ice.PT); while (p && ls.length > 0) {
|
||||
|
@ -239,6 +239,7 @@ Volcanos("user", {help: "用户操作", agent: {
|
||||
can.page.Modify(can, ui._target, {style: {left: event.clientX, top: event.clientY}})
|
||||
},
|
||||
|
||||
info: {},
|
||||
input: function(event, can, form, cb, button) { if (!form || form.length == 0) { return cb() }
|
||||
var msg = can.request(event)
|
||||
var ui = can.page.Append(can, document.body, [{view: [html.INPUT], style: {left: 0, top: 0}, list: [
|
||||
|
@ -13,6 +13,22 @@ fieldset.Header>div.output div.menu:hover { background-color:#2e515f; border-bot
|
||||
div.head {
|
||||
background-color:#404040; padding:5px; height:42px; clear:both;
|
||||
}
|
||||
div.left div.username div {
|
||||
color:white; text-align:center; padding:10px;
|
||||
}
|
||||
div.left div.username img {
|
||||
padding:0 10px; width:100px;
|
||||
}
|
||||
div.head div.username img {
|
||||
height:40px; float:left;
|
||||
}
|
||||
div.head div.username div {
|
||||
padding:12px; float:left;
|
||||
}
|
||||
div.head div.username {
|
||||
color:white; float:right;
|
||||
padding-right:10px;
|
||||
}
|
||||
div.head div.menu {
|
||||
color:white; cursor:pointer; padding:10px; float:left;
|
||||
}
|
||||
@ -20,6 +36,7 @@ div.head div.menu:hover {
|
||||
background-color:#323232;
|
||||
}
|
||||
div.left {
|
||||
width:120px;
|
||||
background-color:#323232; overflow:auto; float:left;
|
||||
}
|
||||
div.left:hover {
|
||||
@ -27,6 +44,7 @@ div.left:hover {
|
||||
}
|
||||
div.left div.item {
|
||||
background-color:#323232;
|
||||
color:white; padding:5px 10px;
|
||||
}
|
||||
div.left div.item:hover {
|
||||
background-color:#404040;
|
||||
@ -34,6 +52,9 @@ div.left div.item:hover {
|
||||
div.main {
|
||||
background-color:#cccccc; height:180px; width:180px; overflow:auto; float:left;
|
||||
}
|
||||
div.main iframe {
|
||||
border:0;
|
||||
}
|
||||
div.main fieldset.plugin {
|
||||
background-color:#f8f8f8; padding:10px; margin:10px;
|
||||
}
|
||||
@ -125,7 +146,7 @@ div.tabs div.page>div.list {
|
||||
div.tabs div.page>div.list.select {
|
||||
background-color:#323232; display:block;
|
||||
}
|
||||
div.tabs div.list {
|
||||
div.left div.list {
|
||||
padding-left:20px;
|
||||
}
|
||||
|
||||
@ -139,7 +160,8 @@ div.tabs.left div.name div.item.select {
|
||||
border-right:solid red 2px;
|
||||
}
|
||||
div.tabs.left div.page {
|
||||
width:240px; clear:none; float:left;
|
||||
width:-webkit-fill-available;
|
||||
clear:none; float:left;
|
||||
}
|
||||
div.tabs.left div.page>div.item {
|
||||
display:block;
|
||||
|
@ -1,5 +1,6 @@
|
||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) {
|
||||
can.Conf(aaa.USERNICK, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME)||can.Conf(aaa.USERNICK))
|
||||
can.user.info.usernick = can.Conf(aaa.USERNICK)
|
||||
can.ondaemon._init(can)
|
||||
|
||||
can.onengine.plugin(can, "topic", shy("主题", {
|
||||
|
@ -1,5 +1,6 @@
|
||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||
can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg)
|
||||
can.onmotion.hidden(can, can._action)
|
||||
if (msg.Option("branch")) { return can.onappend.table(can, msg) }
|
||||
can.onappend._status(can, ["from", "commit", "total", "max", "date", "text", "add", "del"])
|
||||
can.Conf(html.HEIGHT, can.Conf(html.HEIGHT)||200)
|
||||
|
Loading…
x
Reference in New Issue
Block a user