mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
66 lines
3.6 KiB
JavaScript
66 lines
3.6 KiB
JavaScript
Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) {
|
|
var meta = {}; msg.Table(function(value) { meta[value.key] = value.value })
|
|
can._list = can.base.Obj(meta.text, {meta: {name: meta.name||html.DIV}, list: []})
|
|
can.sup._keys = can.sup._keys||can._list.meta.name
|
|
can.onimport.layout(can, can._output)
|
|
can.base.isFunc(cb) && cb(msg)
|
|
},
|
|
_item: function(can, keys, item, target, width, height) { width = width||item.meta.width, height = height||item.meta.height
|
|
var ui = can.page.Append(can, target, [{view: [html.ITEM, html.DIV, item.meta.name||html.DIV], onclick: function(event) {
|
|
can.onmotion.select(can, can.ui.project, html.DIV_ITEM, event.target), can.current = event.target, can.onimport._profile(can, keys, item.meta)
|
|
}, _add: function(data) { item.list.push(data), can.onimport._list(can, keys, item, ui.list, width, height) }}, {view: html.LIST}])
|
|
|
|
var field = can.onappend.field(can, item.meta.index? chat.PLUGIN: html.LAYOUT, item.meta, target._target)
|
|
can.page.style(can, ui.list._target = field.output, {width: width, height: height})
|
|
item.meta.style && can.page.ClassList.add(can, ui.list._target, item.meta.style)
|
|
|
|
item.meta.index && can.onappend.plugin(can, can.base.Copy({}, item.meta), function(sub) {
|
|
can.page.style(can, sub._output, {width: width, height: height-2*html.ACTION_HEIGHT})
|
|
}, target._target, field.fieldset)
|
|
|
|
can.onimport._list(can, keys, item, ui.list, width, height)
|
|
can.sup._keys == keys && ui.item.click()
|
|
},
|
|
_list: function(can, keys, item, target, width, height) {
|
|
if (item.meta.style == html.SPAN) { width = width / item.list.length } else { height = height / item.list.length }
|
|
can.onmotion.clear(can, target), can.onmotion.clear(can, target._target)
|
|
can.core.List(item.list, function(item) { can.onimport._item(can, can.core.Keys(keys, item.meta.name), item, target, width, height) })
|
|
},
|
|
_profile: function(can, keys, meta) { can.onmotion.clear(can, can.ui.profile)
|
|
var msg = can.request({}); msg.Push(mdb.KEY, "keys"), msg.Push(mdb.VALUE, keys)
|
|
can.core.List(can.core.Split("name,index,args,style,display,height,width"), function(k) {
|
|
msg.Push(mdb.KEY, k), msg.Push(mdb.VALUE, meta[k])
|
|
}), can.sup._keys = keys
|
|
can.onappend.table(can, msg, function(value, key, index, line, array) {
|
|
return {text: [value, html.TD], ondblclick: function(event) { var target = event.target
|
|
key == mdb.VALUE && can.onmotion.modify(can, event.target, function(event, value, old) {
|
|
target.innerText = meta[line.key] = value, can.onimport.layout(can)
|
|
}, {name: line.key})
|
|
}}
|
|
}, can.ui.profile)
|
|
},
|
|
layout: function(can, target) { target = target||can._output
|
|
can.onmotion.clear(can, target), can.onappend.layout(can, null, "", target), can.ui.project._target = can.ui.content
|
|
var width = can.ConfWidth()-320, height = can.ConfHeight()
|
|
if (can.isCmdMode()) {
|
|
width = can.page.width(), height = can.page.height(), can.user.title(can._list.meta.name)
|
|
} else if (can.isFullMode()) {
|
|
width = can.ConfWidth(), height = can.ConfHeight()
|
|
can.onmotion.toggle(can, can.ui.project, false)
|
|
} else {
|
|
can.onmotion.toggle(can, can.ui.profile, true)
|
|
}
|
|
can.onimport._item(can, can._list.meta.name, can._list, can.ui.project, width, height)
|
|
},
|
|
}, [""])
|
|
Volcanos(chat.ONACTION, {
|
|
"添加": function(event, can) {
|
|
can.user.input(event, can, [mdb.NAME, ctx.INDEX, ctx.ARGS, ctx.STYLE, html.HEIGHT, html.WIDTH], function(data) {
|
|
can.current._add({meta: data, list: []})
|
|
})
|
|
},
|
|
"保存": function(event, can) { var msg = can.request(event, can.Option())
|
|
can.runAction(event, mdb.MODIFY, [mdb.TEXT, JSON.stringify(can._list)])
|
|
},
|
|
})
|