mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt frame
This commit is contained in:
parent
7a003261b5
commit
f3e14258a4
452
frame.js
452
frame.js
@ -119,10 +119,9 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
can.base.isFunc(cb) && cb(sub)
|
can.base.isFunc(cb) && cb(sub)
|
||||||
}, target)
|
}, target)
|
||||||
},
|
},
|
||||||
}, list, function(sub) { sub.Conf(meta)
|
}, list, function(sub) { sub.Conf(meta), meta.feature = sub.base.Obj(meta.feature, {})
|
||||||
meta.feature = sub.base.Obj(meta.feature, {})
|
|
||||||
sub.page.ClassList.add(sub, field, meta.style||meta.feature.style||"")
|
|
||||||
sub.page.ClassList.add(sub, field, meta.index? meta.index.split(ice.PT).pop(): meta.name)
|
sub.page.ClassList.add(sub, field, meta.index? meta.index.split(ice.PT).pop(): meta.name)
|
||||||
|
sub.page.ClassList.add(sub, field, meta.style||meta.feature.style||"")
|
||||||
|
|
||||||
sub.page.Modify(sub, sub._legend, {onmouseenter: function(event) {
|
sub.page.Modify(sub, sub._legend, {onmouseenter: function(event) {
|
||||||
sub.user.carte(event, sub, sub.onaction, sub.onaction.list.concat([["所有 ->"].concat(can.core.Item(meta.feature._trans))]))
|
sub.user.carte(event, sub, sub.onaction, sub.onaction.list.concat([["所有 ->"].concat(can.core.Item(meta.feature._trans))]))
|
||||||
@ -133,7 +132,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
}); return sub
|
}); return sub
|
||||||
},
|
},
|
||||||
_option: function(can, meta, option) { var index = -1, args = can.base.Obj(meta.args||meta.arg, []), opts = can.base.Obj(meta.opts, {})
|
_option: function(can, meta, option) { var index = -1, args = can.base.Obj(meta.args||meta.arg, []), opts = can.base.Obj(meta.opts, {})
|
||||||
function add(item, next) { item._input != html.BUTTON && item.type != html.BUTTON && index++
|
function add(item, next) { item.type != html.BUTTON && index++
|
||||||
Volcanos(item.name, {_follow: can.core.Keys(can._follow, item.name),
|
Volcanos(item.name, {_follow: can.core.Keys(can._follow, item.name),
|
||||||
_target: can.onappend.input(can, item, args[index]||opts[item.name], option),
|
_target: can.onappend.input(can, item, args[index]||opts[item.name], option),
|
||||||
_option: can._option, _action: can._action, _output: can._output, _status: can._status,
|
_option: can._option, _action: can._action, _output: can._output, _status: can._status,
|
||||||
@ -146,7 +145,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
return can.Update(event, can.Input(cmds, silent), cb, silent)
|
return can.Update(event, can.Input(cmds, silent), cb, silent)
|
||||||
}, can._inputs[item.name] = input, input.sup = can
|
}, can._inputs[item.name] = input, input.sup = can
|
||||||
|
|
||||||
can.core.Item(input.onaction, function(key, cb) { if(key.indexOf("on") == 0) {
|
can.core.Item(input.onaction, function(key, cb) { if (key.indexOf("on") == 0) {
|
||||||
input._target[key] = function(event) { cb(event, input) }
|
input._target[key] = function(event) { cb(event, input) }
|
||||||
} }), can.core.CallFunc([input.onaction, "_init"], [input, item, [], next, input._target])
|
} }), can.core.CallFunc([input.onaction, "_init"], [input, item, [], next, input._target])
|
||||||
|
|
||||||
@ -208,7 +207,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
},
|
},
|
||||||
_status: function(can, list, status) { status = status||can._status
|
_status: function(can, list, status) { status = status||can._status
|
||||||
can.core.List(list, function(item) { item = can.base.isObject(item)? item: {name: item}
|
can.core.List(list, function(item) { item = can.base.isObject(item)? item: {name: item}
|
||||||
can.page.Append(can, status, [{view: can.base.join(["item", item.name]), title: item.name, list: [
|
can.page.Append(can, status, [{view: can.base.join([html.ITEM, item.name]), title: item.name, list: [
|
||||||
{text: [item.name, html.LABEL]}, {text: [": ", html.LABEL]}, {text: [(item.value||"")+"", html.SPAN, item.name]},
|
{text: [item.name, html.LABEL]}, {text: [": ", html.LABEL]}, {text: [(item.value||"")+"", html.SPAN, item.name]},
|
||||||
], }])
|
], }])
|
||||||
})
|
})
|
||||||
@ -216,15 +215,15 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
|
|
||||||
list: function(can, root, cb, target) {
|
list: function(can, root, cb, target) {
|
||||||
can.core.List(root.list, function(item) {
|
can.core.List(root.list, function(item) {
|
||||||
var ui = can.page.Append(can, target, [{view: ["item", "div", item.meta.name], onclick: function(event) {
|
var ui = can.page.Append(can, target, [{view: [html.ITEM, html.DIV, item.meta.name], onclick: function(event) {
|
||||||
can.base.isFunc(cb) && cb(event, item) || can.onmotion.toggle(can, ui.list)
|
can.base.isFunc(cb) && cb(event, item) || can.onmotion.toggle(can, ui.list)
|
||||||
}}, {view: "list"}]); can.onappend.list(can, item, cb, ui.list)
|
}}, {view: html.LIST}]); can.onappend.list(can, item, cb, ui.list)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
item: function(can, type, item, cb, cbs, target) { target = target||can._output
|
item: function(can, type, item, cb, cbs, target) { target = target||can._output
|
||||||
var ui = can.page.Append(can, target, [{view: [type, html.DIV, item.nick||item.name],
|
var ui = can.page.Append(can, target, [{view: [type, html.DIV, item.nick||item.name],
|
||||||
onclick: function(event) { cb(event, ui.first)
|
onclick: function(event) { cb(event, ui.first)
|
||||||
can.onmotion.select(can, target, "div."+type, ui.first)
|
can.onmotion.select(can, target, can.core.Keys(html.DIV, type), ui.first)
|
||||||
}, oncontextmenu: function(event) { cbs(event, ui.first) },
|
}, oncontextmenu: function(event) { cbs(event, ui.first) },
|
||||||
}]); return ui.first
|
}]); return ui.first
|
||||||
},
|
},
|
||||||
@ -233,9 +232,9 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
item[field] && can.core.List(item[field].split(split), function(value, index, array) { if (!value) { return }
|
item[field] && can.core.List(item[field].split(split), function(value, index, array) { if (!value) { return }
|
||||||
var last = array.slice(0, index).join(split), name = array.slice(0, index+1).join(split)
|
var last = array.slice(0, index).join(split), name = array.slice(0, index+1).join(split)
|
||||||
|
|
||||||
node[name] || (node[name] = can.page.Append(can, node[last], [{view: ["item", html.DIV, value+(index==array.length-1?"":split)], onclick: function(event) {
|
node[name] || (node[name] = can.page.Append(can, node[last], [{view: [html.ITEM, html.DIV, value+(index==array.length-1?"":split)], onclick: function(event) {
|
||||||
index < array.length - 1? can.onmotion.toggle(can, node[name]): can.base.isFunc(cb) && cb(event, item)
|
index < array.length - 1? can.onmotion.toggle(can, node[name]): can.base.isFunc(cb) && cb(event, item)
|
||||||
}}, {view: "list", style: {display: "none"}}]).last)
|
}}, {view: html.LIST, style: {display: html.NONE}}]).last)
|
||||||
})
|
})
|
||||||
}); return node
|
}); return node
|
||||||
},
|
},
|
||||||
@ -251,13 +250,13 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
input: function(can, item, value, target) {
|
input: function(can, item, value, target) {
|
||||||
switch (item.type) {
|
switch (item.type) {
|
||||||
case "": return can.page.Append(can, target, [item])
|
case "": return can.page.Append(can, target, [item])
|
||||||
case "space": return can.page.Append(can, target, [{view: "item space"}])
|
case html.SPACE: return can.page.Append(can, target, [{view: can.base.join([html.ITEM, html.SPACE])}])
|
||||||
}
|
}
|
||||||
|
|
||||||
var input = can.page.input(can, item, value)
|
var input = can.page.input(can, item, value)
|
||||||
var br = input.type == html.TEXTAREA? [{type: html.BR}]: []
|
var br = input.type == html.TEXTAREA? [{type: html.BR}]: []
|
||||||
var title = can.Conf(["feature", chat.TITLE, item.name].join(ice.PT))||""; title && (input.title = title)
|
var title = can.Conf(["feature", chat.TITLE, item.name].join(ice.PT))||""; title && (input.title = title)
|
||||||
return can.page.Append(can, target, ([{view: ["item "+item.type], list: [input]}]).concat(br))[item.name]
|
return can.page.Append(can, target, ([{view: [can.base.join([html.ITEM, item.type])], list: [input]}]).concat(br))[item.name]
|
||||||
},
|
},
|
||||||
table: function(can, msg, cb, target, sort) {
|
table: function(can, msg, cb, target, sort) {
|
||||||
var table = can.page.AppendTable(can, msg, target||can._output, msg.append, cb||function(value, key, index, line, array) {
|
var table = can.page.AppendTable(can, msg, target||can._output, msg.append, cb||function(value, key, index, line, array) {
|
||||||
@ -266,7 +265,6 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
line = {}, can.core.List(array, function(item) { line[item.key] = item.value })
|
line = {}, can.core.List(array, function(item) { line[item.key] = item.value })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (key == "extra.cmd") {
|
if (key == "extra.cmd") {
|
||||||
can.onappend.plugin(can, {ctx: line["extra.ctx"], cmd: line["extra.cmd"], arg: line["extra.arg"]}, function(sub) {
|
can.onappend.plugin(can, {ctx: line["extra.ctx"], cmd: line["extra.cmd"], arg: line["extra.arg"]}, function(sub) {
|
||||||
sub.run = function(event, cmds, cb) { var msg = can.request(event, line, can.Option())
|
sub.run = function(event, cmds, cb) { var msg = can.request(event, line, can.Option())
|
||||||
@ -292,7 +290,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
can.run(event, [ctx.ACTION, mdb.MODIFY, key, value], function(msg) { can.run() }, true)
|
can.run(event, [ctx.ACTION, mdb.MODIFY, key, value], function(msg) { can.run() }, true)
|
||||||
}, item)
|
}, item)
|
||||||
}}
|
}}
|
||||||
}); table && can.page.Modify(can, table, {className: "content"})
|
}); table && can.page.Modify(can, table, {className: chat.CONTENT})
|
||||||
|
|
||||||
return sort && can.page.RangeTable(can, table, sort), table
|
return sort && can.page.RangeTable(can, table, sort), table
|
||||||
},
|
},
|
||||||
@ -307,7 +305,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
},
|
},
|
||||||
|
|
||||||
figure: function(can, meta, target, cb) { if ([html.BUTTON, html.SELECT].indexOf(meta.type) > -1) { return }
|
figure: function(can, meta, target, cb) { if ([html.BUTTON, html.SELECT].indexOf(meta.type) > -1) { return }
|
||||||
var input = meta.action||"key"; input != "auto" && can.require(["/plugin/input/"+input+".js"], function(can) {
|
var input = meta.action||kit.MDB_KEY; input != "auto" && can.require(["/plugin/input/"+input+".js"], function(can) {
|
||||||
can.core.Item(can.onfigure[input], function(key, on) { if (key.indexOf("on") != 0) { return }
|
can.core.Item(can.onfigure[input], function(key, on) { if (key.indexOf("on") != 0) { return }
|
||||||
target[key] = function(event) {
|
target[key] = function(event) {
|
||||||
can.onappend._init(can, {type: html.INPUT, name: input, pos: html.FLOAT}, [], function(sub) { sub.Conf(meta)
|
can.onappend._init(can, {type: html.INPUT, name: input, pos: html.FLOAT}, [], function(sub) { sub.Conf(meta)
|
||||||
@ -323,6 +321,12 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
plugin: function(can, meta, cb, target) { meta = meta||{}
|
||||||
|
meta.inputs && meta.inputs.length > 0? can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, cb, target):
|
||||||
|
can.run({}, [ctx.ACTION, ctx.COMMAND, meta.index||can.core.Keys(meta.ctx, meta.cmd)], function(msg) { msg.Table(function(value) {
|
||||||
|
can.onappend._plugin(can, value, meta, cb, target)
|
||||||
|
}) }, true)
|
||||||
|
},
|
||||||
_plugin: function(can, value, meta, cb, target) {
|
_plugin: function(can, value, meta, cb, target) {
|
||||||
meta.feature = can.base.Obj(value.meta, meta.feature||{})
|
meta.feature = can.base.Obj(value.meta, meta.feature||{})
|
||||||
meta.inputs = can.base.Obj(value.list, meta.inputs||[])
|
meta.inputs = can.base.Obj(value.list, meta.inputs||[])
|
||||||
@ -338,17 +342,11 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
sub.base.isFunc(cb) && cb(sub, meta)
|
sub.base.isFunc(cb) && cb(sub, meta)
|
||||||
}, target||can._output)
|
}, target||can._output)
|
||||||
},
|
},
|
||||||
plugin: function(can, meta, cb, target) { meta = meta||{}
|
|
||||||
meta.inputs && meta.inputs.length > 0? can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, cb, target):
|
|
||||||
can.run({}, [ctx.ACTION, ctx.COMMAND, meta.index||can.core.Keys(meta.ctx, meta.cmd)], function(msg) { msg.Table(function(value) {
|
|
||||||
can.onappend._plugin(can, value, meta, cb, target)
|
|
||||||
}) }, true)
|
|
||||||
},
|
|
||||||
|
|
||||||
float: function(can, msg, cb) {
|
float: function(can, msg, cb) {
|
||||||
var ui = can.onappend.field(can, "story toast float", {}, document.body)
|
var ui = can.onappend.field(can, "story toast float", {}, document.body)
|
||||||
ui.close = function() { can.page.Remove(can, ui.first), can.onengine.signal(can, "keymap.focus") }
|
ui.close = function() { can.page.Remove(can, ui.first), can.onengine.signal(can, "keymap.focus") }
|
||||||
can.onmotion.float.auto(can, ui.output, "carte", "input")
|
can.onmotion.float.auto(can, ui.output, chat.CARTE, chat.INPUT)
|
||||||
|
|
||||||
can.search({}, ["Action.onexport.size"], function(msg, top, left, width, height) {
|
can.search({}, ["Action.onexport.size"], function(msg, top, left, width, height) {
|
||||||
can.page.Modify(can, ui.output, {style: {"max-width": width, "max-height": height-28}})
|
can.page.Modify(can, ui.output, {style: {"max-width": width, "max-height": height-28}})
|
||||||
@ -366,9 +364,9 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
if (event.key != "Enter") { return }
|
if (event.key != "Enter") { return }
|
||||||
event.target.setSelectionRange(0, -1)
|
event.target.setSelectionRange(0, -1)
|
||||||
|
|
||||||
can.page.Select(can, ui.output, "tr", function(tr, index) { if (index == 0) { return }
|
can.page.Select(can, ui.output, html.TR, function(tr, index) { if (index == 0) { return }
|
||||||
can.page.Modify(can, tr, {style: {display: "none"}})
|
can.page.Modify(can, tr, {style: {display: html.NONE}})
|
||||||
can.page.Select(can, tr, "td", function(td) {
|
can.page.Select(can, tr, html.TD, function(td) {
|
||||||
if (td.innerText.indexOf(event.target.value) > -1) {
|
if (td.innerText.indexOf(event.target.value) > -1) {
|
||||||
can.page.Modify(can, tr, {style: {display: ""}})
|
can.page.Modify(can, tr, {style: {display: ""}})
|
||||||
}
|
}
|
||||||
@ -392,11 +390,11 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe
|
|||||||
}
|
}
|
||||||
|
|
||||||
var width = window.innerWidth, height = window.innerHeight
|
var width = window.innerWidth, height = window.innerHeight
|
||||||
can.page.Select(can, target, ["fieldset.head", "fieldset.foot"], function(field) {
|
can.page.Select(can, target, [can.core.Keys(html.FIELDSET, chat.HEAD), can.core.Keys(html.FIELDSET, chat.FOOT)], function(field) {
|
||||||
height -= field.offsetHeight
|
height -= field.offsetHeight
|
||||||
})
|
})
|
||||||
|
|
||||||
can.page.Select(can, target, "fieldset.left", function(field, index) {
|
can.page.Select(can, target, can.core.Keys(html.FIELDSET, chat.LEFT), function(field, index) {
|
||||||
can.user.isMobile || (width -= field.offsetWidth)
|
can.user.isMobile || (width -= field.offsetWidth)
|
||||||
|
|
||||||
can.page.Modify(can, field, {style: {height: height}})
|
can.page.Modify(can, field, {style: {height: height}})
|
||||||
@ -405,11 +403,11 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
can.page.Select(can, target, "fieldset.main", function(field, index) {
|
can.page.Select(can, target, can.core.Keys(html.FIELDSET, chat.MAIN), function(field, index) {
|
||||||
if (can.user.isMobile) {
|
if (can.user.isMobile) {
|
||||||
can.page.Modify(can, field, {style: {"padding-top": can.user.isLandscape? "0px": ""}})
|
can.page.Modify(can, field, {style: {"padding-top": can.user.isLandscape? "0px": ""}})
|
||||||
} else {
|
} else {
|
||||||
height -= can.page.Select(can, field, "div.action")[0].offsetHeight
|
height -= can.page.Select(can, field, can.core.Keys(html.DIV, html.ACTION))[0].offsetHeight
|
||||||
|
|
||||||
can.page.Modify(can, field, {style: {height: height}})
|
can.page.Modify(can, field, {style: {height: height}})
|
||||||
can.page.Select(can, target, "fieldset.main>div.output", function(output) {
|
can.page.Select(can, target, "fieldset.main>div.output", function(output) {
|
||||||
@ -418,12 +416,15 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
can.onengine.signal(can, "onresize", can.request({}, {width: width, height: height}))
|
can.onengine.signal(can, chat.ONSIZE, can.request({}, {width: width, height: height}))
|
||||||
},
|
},
|
||||||
topic: function(can, topic) { topic && (can._topic = topic)
|
topic: function(can, topic) { topic && (can._topic = topic)
|
||||||
can.user.topic(can, can._topic || can.user.Search(can, "topic") || ((can.user.Search(can, cli.POD)||can.base.isNight())? "black": "white"))
|
can.user.topic(can, can._topic || can.user.Search(can, chat.TOPIC) || ((can.user.Search(can, cli.POD)||can.base.isNight())? chat.BLACK: chat.WHITE))
|
||||||
can.page.ClassList.add(can, document.body, can.user.language(can))
|
can.page.ClassList.add(can, document.body, can.user.language(can))
|
||||||
},
|
},
|
||||||
|
background: function(can, url, target) {
|
||||||
|
can.page.Modify(can, target||document.body, {style: {background: url == "" || url == "void"? "": 'url("'+url+'")'}})
|
||||||
|
},
|
||||||
figure: function(event, can, target, right) { target = target||can._target; if (!event || !event.target) { return }
|
figure: function(event, can, target, right) { target = target||can._target; if (!event || !event.target) { return }
|
||||||
var left = event.clientX-event.offsetX, top = event.clientY-event.offsetY+event.target.offsetHeight; if (right) {
|
var left = event.clientX-event.offsetX, top = event.clientY-event.offsetY+event.target.offsetHeight; if (right) {
|
||||||
var left = event.clientX-event.offsetX+event.target.offsetWidth, top = event.clientY-event.offsetY
|
var left = event.clientX-event.offsetX+event.target.offsetWidth, top = event.clientY-event.offsetY
|
||||||
@ -436,94 +437,43 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe
|
|||||||
can.page.Modify(can, target, {style: layout})
|
can.page.Modify(can, target, {style: layout})
|
||||||
can.onmotion.move(can, target, layout)
|
can.onmotion.move(can, target, layout)
|
||||||
},
|
},
|
||||||
resize: function(can, name, cb) {
|
|
||||||
var list = []; can.onengine.listen(can, name, function(width, height) {
|
|
||||||
can.Conf({width: width, height: height}), can.core.Delay(list, 100, function() {
|
|
||||||
can.base.isFunc(cb) && cb(event)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
background: function(can, url, target) { target = target || document.body
|
|
||||||
can.page.Modify(can, target, {style: {background: url == "" || url == "void"? "": 'url("'+url+'")'}})
|
|
||||||
},
|
|
||||||
|
|
||||||
profile: function(can, target) { target = target || can._output
|
display: function(can, target) { target = target||can._target
|
||||||
return can.page.Append(can, target, [{view: ["layout", "table"], list: [
|
return can.page.Appends(can, target, [{view: [chat.LAYOUT, html.TABLE], list: [
|
||||||
{view: ["project", "td"], list: [{view: ["project"]}]},
|
{type: html.TR, list: [{view: chat.CONTENT}]},
|
||||||
{type: "td", list: [
|
{type: html.TR, list: [{view: chat.DISPLAY}]},
|
||||||
{type: "tr", list: [{type: "tr", list: [
|
]}])
|
||||||
{view: ["content", "td"], list: [{view: ["content"]}]},
|
|
||||||
{view: ["profile", "td"], list: [{view: ["profile"], style: {display: "none"}}]},
|
|
||||||
]}]},
|
|
||||||
{view: ["display", "tr"], list: [{view: ["display"], style: {display: "none"}}]}
|
|
||||||
]}
|
|
||||||
] }])
|
|
||||||
},
|
},
|
||||||
project: function(can, target) { target = target || can._target
|
project: function(can, target) { target = target||can._target
|
||||||
return can.page.Append(can, target, [{view: ["layout", "table"], list: [{type: "tr", list: [
|
return can.page.Append(can, target, [{view: [chat.LAYOUT, html.TABLE], list: [{type: html.TR, list: [
|
||||||
{type: "td", list: [{view: "project", style: {display: "none"}}]}, {type: "td", list: [
|
{type: html.TD, list: [{view: chat.PROJECT, style: {display: html.NONE}}]}, {type: html.TD, list: [
|
||||||
{view: ["layout", "table"], list: [
|
{view: [chat.LAYOUT, html.TABLE], list: [
|
||||||
{type: "tr", list: [{view: "content"}]},
|
{type: html.TR, list: [{view: chat.CONTENT}]},
|
||||||
{type: "tr", list: [{view: "display"}]},
|
{type: html.TR, list: [{view: chat.DISPLAY}]},
|
||||||
]}
|
]}
|
||||||
]}
|
]}
|
||||||
]}] }])
|
]}] }])
|
||||||
},
|
},
|
||||||
display: function(can, target) { target = target || can._target
|
profile: function(can, target) { target = target||can._output
|
||||||
return can.page.Appends(can, target, [{view: ["layout", "table"], list: [
|
return can.page.Append(can, target, [{view: [chat.LAYOUT, html.TABLE], list: [
|
||||||
{type: "tr", list: [{view: "content"}]},
|
{view: [chat.PROJECT, html.TD], list: [{view: [chat.PROJECT]}]},
|
||||||
{type: "tr", list: [{view: "display"}]},
|
{type: html.TD, list: [
|
||||||
]}])
|
{type: html.TR, list: [{type: html.TR, list: [
|
||||||
|
{view: [chat.CONTENT, html.TD], list: [{view: [chat.CONTENT]}]},
|
||||||
|
{view: [chat.PROFILE, html.TD], list: [{view: [chat.PROFILE], style: {display: html.NONE}}]},
|
||||||
|
]}]},
|
||||||
|
{view: [chat.DISPLAY, html.TR], list: [{view: [chat.DISPLAY], style: {display: html.NONE}}]}
|
||||||
|
]}
|
||||||
|
] }])
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, target) {
|
Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, target) {
|
||||||
if ((can.user.Search(can, "topic")||"").indexOf("print") > -1) { return }
|
|
||||||
return
|
|
||||||
|
|
||||||
var count = 0, add = true
|
|
||||||
can.user.isMobile || can.user.Search(can, "share") || can.core.Timer({interval: 100}, function() {
|
|
||||||
if (target.className.indexOf("print") > -1) { return }
|
|
||||||
|
|
||||||
add? count++: count--
|
|
||||||
count < 0 && (add = true)
|
|
||||||
count > 50 && (add = false)
|
|
||||||
|
|
||||||
can.page.Select(can, target, "fieldset.story", function(item) {
|
|
||||||
can.page.Modify(can, item, {style: {
|
|
||||||
"box-shadow": "40px 10px 10px "+(count/10+1)+"px #626bd0",
|
|
||||||
}})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
clear: function(can, target) {
|
|
||||||
can.page.Modify(can, target||can._output, "")
|
|
||||||
return true
|
|
||||||
},
|
},
|
||||||
focus: function(can, target) {
|
focus: function(can, target) {
|
||||||
target.setSelectionRange(0, -1), target.focus()
|
target.setSelectionRange(0, -1), target.focus()
|
||||||
},
|
},
|
||||||
float: {
|
clear: function(can, target) {
|
||||||
_hash: {},
|
return can.page.Modify(can, target||can._output, ""), true
|
||||||
del: function(can, key) {
|
|
||||||
if (key == "carte") {
|
|
||||||
can.page.Select(can, document.body, "div.carte", function(item) {
|
|
||||||
can.page.Remove(can, item)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
this._hash[key] && can.page.Remove(can, this._hash[key]._target)
|
|
||||||
},
|
|
||||||
add: function(can, key, value) {
|
|
||||||
this.del(can, key), this._hash[key] = value
|
|
||||||
},
|
|
||||||
|
|
||||||
auto: function(can, target, key) { var that = this
|
|
||||||
var list = can.core.List(arguments).slice(2)
|
|
||||||
if (list.length == 0) { list = [chat.CARTE, chat.INPUT] }
|
|
||||||
can.page.Modify(can, target, {onmouseover: function(event) {
|
|
||||||
if (event.target.tagName == "IMG") { return }
|
|
||||||
can.core.List(list, function(key, index) { that.del(can, key) })
|
|
||||||
}})
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
story: {
|
story: {
|
||||||
_hash: {
|
_hash: {
|
||||||
@ -548,12 +498,37 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
float: {_hash: {},
|
||||||
|
del: function(can, key) {
|
||||||
|
if (key == chat.CARTE) {
|
||||||
|
can.page.Select(can, document.body, can.core.Keys(html.DIV, chat.CARTE), function(item) {
|
||||||
|
can.page.Remove(can, item)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this._hash[key] && can.page.Remove(can, this._hash[key]._target)
|
||||||
|
},
|
||||||
|
add: function(can, key, value) {
|
||||||
|
this.del(can, key), this._hash[key] = value
|
||||||
|
},
|
||||||
|
|
||||||
|
auto: function(can, target, key) { var that = this
|
||||||
|
var list = can.core.List(arguments).slice(2)
|
||||||
|
if (list.length == 0) { list = [chat.CARTE, chat.INPUT] }
|
||||||
|
can.page.Modify(can, target, {onmouseover: function(event) {
|
||||||
|
if (event.target.tagName == "IMG") { return }
|
||||||
|
can.core.List(list, function(key, index) { that.del(can, key) })
|
||||||
|
}})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
hidden: function(can, target, show) {
|
hidden: function(can, target, show) {
|
||||||
can.page.Modify(can, target||can._target, {style: {display: show? "": "none"}})
|
can.page.Modify(can, target||can._target, {style: {display: show? "": html.NONE}})
|
||||||
},
|
},
|
||||||
toggle: function(can, target) {
|
toggle: function(can, target, show, hide) { target = target||can._target
|
||||||
return can.onmotion.Toggle(can, target||can._target)
|
var status = target.style.display == html.NONE
|
||||||
|
can.page.Modify(can, target, {style: {display: status? "": html.NONE}})
|
||||||
|
status? can.base.isFunc(show) && show(): can.base.isFunc(hide) && hide()
|
||||||
|
return status
|
||||||
},
|
},
|
||||||
select: function(can, target, name, which) {
|
select: function(can, target, name, which) {
|
||||||
can.page.Select(can, target, name, function(item, index) {
|
can.page.Select(can, target, name, function(item, index) {
|
||||||
@ -565,28 +540,23 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
modify: function(can, target, cb, item) { var back = target.innerHTML, text = target.innerText
|
modify: function(can, target, cb, item) { var back = target.innerHTML, text = target.innerText
|
||||||
if (back.length > 120 || back.indexOf("\n") > -1) {
|
if (back.length > 120 || back.indexOf(ice.NL) > -1) {
|
||||||
return can.onmotion.modifys(can, target, cb)
|
return can.onmotion.modifys(can, target, cb)
|
||||||
}
|
}
|
||||||
var ui = can.page.Appends(can, target, [{type: html.INPUT, value: target.innerText, style: {
|
var ui = can.page.Appends(can, target, [{type: html.INPUT, value: target.innerText, style: {
|
||||||
width: target.offsetWidth > 400? 400: target.offsetWidth-20,
|
width: target.offsetWidth > 400? 400: target.offsetWidth-20,
|
||||||
}, onkeydown: function(event) {
|
}, onkeydown: function(event) {
|
||||||
switch (event.key) {
|
switch (event.key) {
|
||||||
case "Enter":
|
case "Enter": target.innerHTML = event.target.value
|
||||||
target.innerHTML = event.target.value
|
event.target.value == back || cb(event, event.target.value, back)
|
||||||
if (event.target.value != back) {
|
|
||||||
cb(event, event.target.value, back)
|
|
||||||
}
|
|
||||||
break
|
break
|
||||||
case "Escape":
|
case "Escape": target.innerHTML = back; break
|
||||||
target.innerHTML = back
|
default: can.onkeypop.input(event, can)
|
||||||
break
|
|
||||||
default:
|
|
||||||
can.onkeypop.input(event, can)
|
|
||||||
}
|
}
|
||||||
}, _init: function(target) {
|
}, _init: function(target) {
|
||||||
item && can.onappend.figure(can, item, target), target.value = text
|
item && can.onappend.figure(can, item, target), target.value = text
|
||||||
}}]); ui.first.focus(), ui.first.setSelectionRange(0, -1)
|
target.focus(), target.setSelectionRange(0, -1)
|
||||||
|
}}])
|
||||||
},
|
},
|
||||||
modifys: function(can, target, cb, item) { var back = target.innerHTML
|
modifys: function(can, target, cb, item) { var back = target.innerHTML
|
||||||
var ui = can.page.Appends(can, target, [{type: html.TEXTAREA, value: target.innerText, style: {
|
var ui = can.page.Appends(can, target, [{type: html.TEXTAREA, value: target.innerText, style: {
|
||||||
@ -596,48 +566,23 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
|||||||
case "Enter":
|
case "Enter":
|
||||||
if (event.ctrlKey) {
|
if (event.ctrlKey) {
|
||||||
target.innerHTML = event.target.value
|
target.innerHTML = event.target.value
|
||||||
if (event.target.value != back) {
|
event.target.value == back || cb(event, event.target.value, back)
|
||||||
cb(event, event.target.value, back)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
case "Escape":
|
case "Escape": target.innerHTML = back; break
|
||||||
target.innerHTML = back
|
default: can.onkeypop.input(event, can)
|
||||||
break
|
|
||||||
default:
|
|
||||||
can.onkeypop.input(event, can)
|
|
||||||
}
|
}
|
||||||
}}]); ui.first.focus(), ui.first.setSelectionRange(0, -1)
|
}, _init: function(target) {
|
||||||
can.onappend.figure(can, item, ui.first)
|
item && can.onappend.figure(can, item, target)
|
||||||
|
target.focus(), target.setSelectionRange(0, -1)
|
||||||
|
}}])
|
||||||
},
|
},
|
||||||
|
|
||||||
autosize: function(can, target, max, min) {
|
|
||||||
can.page.Modify(can, target, {
|
|
||||||
onfocus: function(event) {
|
|
||||||
can.onmotion.resize(can, target, max, 10)
|
|
||||||
}, onmouseenter: function(event) {
|
|
||||||
can.onmotion.resize(can, target, max, 10)
|
|
||||||
}, onmouseleave: function(event) {
|
|
||||||
can.onmotion.resize(can, target, min, 5)
|
|
||||||
}, onblur: function(event) {
|
|
||||||
can.onmotion.resize(can, target, min, 5)
|
|
||||||
},
|
|
||||||
})
|
|
||||||
},
|
|
||||||
resize: function(can, target, width, speed) {
|
|
||||||
var begin = target.offsetWidth
|
|
||||||
var space = (width - begin) / 30
|
|
||||||
can.core.Timer({interval: speed||10, length: 30}, function() {
|
|
||||||
can.page.Modify(can, target, {style: {width: begin+=space}})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
move: function(can, target, layout) { var begin
|
move: function(can, target, layout) { var begin
|
||||||
target.onmousedown = function(event) {
|
target.onmousedown = function(event) {
|
||||||
layout.width = target.offsetWidth
|
layout.height = target.offsetHeight, layout.width = target.offsetWidth
|
||||||
layout.height = target.offsetHeight
|
layout.left = target.offsetLeft, layout.top = target.offsetTop
|
||||||
layout.left = target.offsetLeft
|
begin = can.base.Copy({}, layout)
|
||||||
layout.top = target.offsetTop
|
|
||||||
begin = {x: event.x, y: event.y, left: layout.left, top: layout.top, width: layout.width, height: layout.height}
|
|
||||||
}, target.onmouseup = function(event) { begin = null }
|
}, target.onmouseup = function(event) { begin = null }
|
||||||
|
|
||||||
target.onmousemove = function(event) { if (!begin || !event.ctrlKey) { return }
|
target.onmousemove = function(event) { if (!begin || !event.ctrlKey) { return }
|
||||||
@ -653,192 +598,25 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
|||||||
event.stopPropagation(), event.preventDefault()
|
event.stopPropagation(), event.preventDefault()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
show: function(can, time, cb, target) { target = target || can._target
|
show: function(can, time, cb, target) { target = target||can._target
|
||||||
time = typeof time == "object"? time: {value: 10, length: time||20}
|
time = can.base.isObject(time)? time: {value: 10, length: time||20}
|
||||||
|
|
||||||
can.page.Modify(can, target, {style: {opacity: 0, display: "block"}})
|
can.page.Modify(can, target, {style: {opacity: 0, display: html.BLOCK}})
|
||||||
can.core.Timer(time, function(event, value, index) {
|
can.core.Timer(time, function(event, value, index) {
|
||||||
can.page.Modify(can, target, {style: {opacity: (index+1)/time.length}})
|
can.page.Modify(can, target, {style: {opacity: (index+1)/time.length}})
|
||||||
}, cb)
|
}, cb)
|
||||||
},
|
},
|
||||||
hide: function(can, time, cb, target) { target = target || can._target
|
hide: function(can, time, cb, target) { target = target||can._target
|
||||||
time = typeof time == "object"? time: {value: 10, length: time||20}
|
time = can.base.isObject(time)? time: {value: 10, length: time||20}
|
||||||
|
|
||||||
can.page.Modify(can, target, {style: {opacity: 1}})
|
can.page.Modify(can, target, {style: {opacity: 1}})
|
||||||
can.core.Timer(time, function(event, value, index) {
|
can.core.Timer(time, function(event, value, index) {
|
||||||
can.page.Modify(can, target, {style: {opacity: 1-(index+1)/time.length}})
|
can.page.Modify(can, target, {style: {opacity: 1-(index+1)/time.length}})
|
||||||
}, function() {
|
}, function() {
|
||||||
can.page.Modify(can, target, {style: {display: "none"}})
|
can.page.Modify(can, target, {style: {display: html.NONE}})
|
||||||
can.base.isFunc(cb) && cb()
|
can.base.isFunc(cb) && cb()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
EnableDrop: function(can, parent, search, target) {
|
|
||||||
return can.page.Modify(can, target, { draggable: true,
|
|
||||||
ondragstart: function(event) { var target = event.target; can.drop = function(event, tab) {
|
|
||||||
parent.insertBefore(target, tab)
|
|
||||||
can.page.Select(can, parent, search, function(item) {
|
|
||||||
can.page.ClassList.del(can, item, "over")
|
|
||||||
})
|
|
||||||
} },
|
|
||||||
ondragover: function(event) { event.preventDefault()
|
|
||||||
can.page.Select(can, parent, search, function(item) {
|
|
||||||
can.page.ClassList.del(can, item, "over")
|
|
||||||
}), can.page.ClassList.add(can, event.target, "over")
|
|
||||||
},
|
|
||||||
ondrop: function(event) { event.preventDefault()
|
|
||||||
can.drop(event, event.target)
|
|
||||||
},
|
|
||||||
})
|
|
||||||
},
|
|
||||||
Resizes: function(event, item, begin, p0, p1, pos) {
|
|
||||||
switch (pos) {
|
|
||||||
case 5:
|
|
||||||
item.Value("x", begin.x + p1.x - p0.x)
|
|
||||||
item.Value("y", begin.y + p1.y - p0.y)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (pos) {
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
case 3:
|
|
||||||
item.Value("y", begin.y + p1.y - p0.y)
|
|
||||||
item.Value("height", begin.height - p1.y + p0.y)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
switch (pos) {
|
|
||||||
case 1:
|
|
||||||
case 4:
|
|
||||||
case 7:
|
|
||||||
item.Value("x", begin.x + p1.x - p0.x)
|
|
||||||
item.Value("width", begin.width - p1.x + p0.x)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
switch (pos) {
|
|
||||||
case 3:
|
|
||||||
case 6:
|
|
||||||
case 9:
|
|
||||||
item.Value("width", begin.width + p1.x - p0.x)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
switch (pos) {
|
|
||||||
case 7:
|
|
||||||
case 8:
|
|
||||||
case 9:
|
|
||||||
item.Value("height", begin.height + p1.y - p0.y)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
},
|
|
||||||
Resize: function(event, item, begin, pos) {
|
|
||||||
switch (pos) {
|
|
||||||
case 5:
|
|
||||||
item.style.left = begin.left + event.clientX - begin.x + "px"
|
|
||||||
item.style.top = begin.top + event.clientY - begin.y + "px"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (pos) {
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
case 3:
|
|
||||||
item.style.top = begin.top + event.clientY - begin.y + "px"
|
|
||||||
item.style.height = begin.height - event.clientY + begin.y + "px"
|
|
||||||
break
|
|
||||||
}
|
|
||||||
switch (pos) {
|
|
||||||
case 1:
|
|
||||||
case 4:
|
|
||||||
case 7:
|
|
||||||
item.style.left = begin.left + event.clientX - begin.x + "px"
|
|
||||||
item.style.width = begin.width - event.clientX + begin.x + "px"
|
|
||||||
break
|
|
||||||
}
|
|
||||||
switch (pos) {
|
|
||||||
case 3:
|
|
||||||
case 6:
|
|
||||||
case 9:
|
|
||||||
item.style.width = begin.width + event.clientX - begin.x + "px"
|
|
||||||
break
|
|
||||||
}
|
|
||||||
switch (pos) {
|
|
||||||
case 7:
|
|
||||||
case 8:
|
|
||||||
case 9:
|
|
||||||
item.style.height = begin.height + event.clientY - begin.y + "px"
|
|
||||||
break
|
|
||||||
}
|
|
||||||
},
|
|
||||||
Anchor: function(event, target, pos, point) {
|
|
||||||
switch (pos) {
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
case 3:
|
|
||||||
point.y = target.Val("y")
|
|
||||||
break
|
|
||||||
case 4:
|
|
||||||
case 5:
|
|
||||||
case 6:
|
|
||||||
point.y = target.Val("y") + target.Val("height") / 2
|
|
||||||
break
|
|
||||||
case 7:
|
|
||||||
case 8:
|
|
||||||
case 9:
|
|
||||||
point.y = target.Val("y") + target.Val("height")
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (pos) {
|
|
||||||
case 1:
|
|
||||||
case 4:
|
|
||||||
case 7:
|
|
||||||
point.x = target.Val("x")
|
|
||||||
break
|
|
||||||
case 2:
|
|
||||||
case 5:
|
|
||||||
case 8:
|
|
||||||
point.x = target.Val("x") + target.Val("width") / 2
|
|
||||||
break
|
|
||||||
case 3:
|
|
||||||
case 6:
|
|
||||||
case 9:
|
|
||||||
point.x = target.Val("x") + target.Val("width")
|
|
||||||
break
|
|
||||||
}
|
|
||||||
return point
|
|
||||||
},
|
|
||||||
Prepos: function(event, item, p, q) {
|
|
||||||
var max = 20
|
|
||||||
p = p || item.getBoundingClientRect()
|
|
||||||
q = q || {x: event.clientX, y: event.clientY}
|
|
||||||
|
|
||||||
var pos = 5
|
|
||||||
var y = (q.y - p.y) / p.height
|
|
||||||
if (y < 0.2 && q.y - p.y < max) {
|
|
||||||
pos -= 3
|
|
||||||
} else if (y > 0.8 && q.y - p.y - p.height > -max) {
|
|
||||||
pos += 3
|
|
||||||
}
|
|
||||||
var x = (q.x - p.x) / p.width
|
|
||||||
if (x < 0.2 && q.x - p.x < max) {
|
|
||||||
pos -= 1
|
|
||||||
} else if (x > 0.8 && q.x - p.x - p.width > -max) {
|
|
||||||
pos += 1
|
|
||||||
}
|
|
||||||
|
|
||||||
var cursor = [
|
|
||||||
"nw-resize", "n-resize", "ne-resize",
|
|
||||||
"w-resize", "move", "e-resize",
|
|
||||||
"sw-resize", "s-resize", "se-resize",
|
|
||||||
]
|
|
||||||
item.style.cursor = cursor[pos-1]
|
|
||||||
return pos
|
|
||||||
},
|
|
||||||
Toggle: function(can, target, show, hide) { var status = target.style.display == "none"
|
|
||||||
can.page.Modify(can, target, {style: {display: status? "": "none"}})
|
|
||||||
status? typeof show == "function" && show(): typeof hide == "function" && hide()
|
|
||||||
return status
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: function(can, target) {
|
Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: function(can, target) {
|
||||||
var focus = can.onkeypop._focus
|
var focus = can.onkeypop._focus
|
||||||
@ -880,9 +658,9 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
|||||||
|
|
||||||
var map = can.onkeypop._engine[mode]; for (var i = list.length-1; i > pre-1; i--) {
|
var map = can.onkeypop._engine[mode]; for (var i = list.length-1; i > pre-1; i--) {
|
||||||
var cb = map[list[i]]; switch (typeof cb) {
|
var cb = map[list[i]]; switch (typeof cb) {
|
||||||
case "function": repeat(cb, count); return list
|
case lang.FUNCION: repeat(cb, count); return list
|
||||||
case "object": map = cb; continue
|
case lang.OBJECT: map = cb; continue
|
||||||
case "string":
|
case lang.STRING:
|
||||||
default: return list
|
default: return list
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -989,13 +767,13 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
|
|||||||
},
|
},
|
||||||
}, _engine: {},
|
}, _engine: {},
|
||||||
|
|
||||||
DelText: function(target, start, count) {
|
|
||||||
target.value = target.value.substring(0, start)+target.value.substring(start+(count||target.value.length), target.value.length)
|
|
||||||
target.setSelectionRange(start, start)
|
|
||||||
},
|
|
||||||
input: function(event, can) { var target = event.target
|
input: function(event, can) { var target = event.target
|
||||||
target._keys = can.onkeypop._parse(event, can, event.ctrlKey? "insert_ctrl": mdb.INSERT, target._keys||[], target)
|
target._keys = can.onkeypop._parse(event, can, event.ctrlKey? "insert_ctrl": mdb.INSERT, target._keys||[], target)
|
||||||
if (target._keys.length == 0) { event.stopPropagation(), event.preventDefault() }
|
if (target._keys.length == 0) { event.stopPropagation(), event.preventDefault() }
|
||||||
},
|
},
|
||||||
|
DelText: function(target, start, count) {
|
||||||
|
target.value = target.value.substring(0, start)+target.value.substring(start+(count||target.value.length), target.value.length)
|
||||||
|
target.setSelectionRange(start, start)
|
||||||
|
},
|
||||||
})
|
})
|
||||||
_can_name = ""
|
_can_name = ""
|
||||||
|
@ -201,7 +201,7 @@ Volcanos("base", {help: "数据类型",
|
|||||||
return now.getHours() < 7 || now.getHours() > 17
|
return now.getHours() < 7 || now.getHours() > 17
|
||||||
},
|
},
|
||||||
|
|
||||||
join: function(str, sp) { return str.join(sp||" ") },
|
join: function(list, sp) { return (list||[]).join(sp||" ") },
|
||||||
trim: function(args) { if (this.isString(args)) { return args.trim() }
|
trim: function(args) { if (this.isString(args)) { return args.trim() }
|
||||||
if (this.isArray(args)) { for (var i = args.length-1; i >= 0; i--) { if (!args[i]) { args.pop() } else { break } } }
|
if (this.isArray(args)) { for (var i = args.length-1; i >= 0; i--) { if (!args[i]) { args.pop() } else { break } } }
|
||||||
return args
|
return args
|
||||||
|
@ -303,7 +303,7 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
|||||||
var input = {type: html.INPUT, name: item.name, data: item, dataset: {}, _init: item._init, style: item.style||{}}
|
var input = {type: html.INPUT, name: item.name, data: item, dataset: {}, _init: item._init, style: item.style||{}}
|
||||||
item.value == "auto" && (item.value = "", item.action = "auto"), item.action == "auto" && (input.dataset.action = "auto")
|
item.value == "auto" && (item.value = "", item.action = "auto"), item.action == "auto" && (input.dataset.action = "auto")
|
||||||
|
|
||||||
switch (item.type = item.type||item._input||html.TEXT) {
|
switch (item.type = item.type||html.TEXT) {
|
||||||
case html.TEXTAREA: input.type = html.TEXTAREA
|
case html.TEXTAREA: input.type = html.TEXTAREA
|
||||||
input.style.height = input.style.height||can.Conf(["feature", html.TEXTAREA, item.name, "height"].join("."))||can.Conf(["feature", html.TEXTAREA, "height"].join("."))
|
input.style.height = input.style.height||can.Conf(["feature", html.TEXTAREA, item.name, "height"].join("."))||can.Conf(["feature", html.TEXTAREA, "height"].join("."))
|
||||||
input.style.width = input.style.width||can.Conf(["feature", html.TEXTAREA, item.name, "width"].join("."))||can.Conf(["feature", html.TEXTAREA, "width"].join("."))
|
input.style.width = input.style.width||can.Conf(["feature", html.TEXTAREA, item.name, "width"].join("."))||can.Conf(["feature", html.TEXTAREA, "width"].join("."))
|
||||||
|
@ -188,7 +188,7 @@ Volcanos("user", {help: "用户操作", agent: {
|
|||||||
}
|
}
|
||||||
return event.stopPropagation(), event.preventDefault(), carte
|
return event.stopPropagation(), event.preventDefault(), carte
|
||||||
},
|
},
|
||||||
input: function(event, can, form, cb, button) { // form [ string, array, object, {_input: "select", values: []}
|
input: function(event, can, form, cb, button) { // form [ string, array, object, {type: "select", values: []}
|
||||||
var msg = can.request(event)
|
var msg = can.request(event)
|
||||||
var ui = can.page.Append(can, document.body, [{view: ["input"], style: {left: 0, top: 0}, list: [
|
var ui = can.page.Append(can, document.body, [{view: ["input"], style: {left: 0, top: 0}, list: [
|
||||||
{view: ["option", "table"], list: can.core.List(form, function(item) {
|
{view: ["option", "table"], list: can.core.List(form, function(item) {
|
||||||
|
@ -10,8 +10,8 @@ Volcanos({name: "chat", panels: [
|
|||||||
"/plugin/table.js",
|
"/plugin/table.js",
|
||||||
"/plugin/input/key.js",
|
"/plugin/input/key.js",
|
||||||
"/plugin/input/date.js",
|
"/plugin/input/date.js",
|
||||||
"/plugin/story/trend.js",
|
|
||||||
"/plugin/story/spide.js",
|
"/plugin/story/spide.js",
|
||||||
|
"/plugin/story/trend.js",
|
||||||
"/plugin/local/code/inner.js",
|
"/plugin/local/code/inner.js",
|
||||||
"/plugin/local/code/vimer.js",
|
"/plugin/local/code/vimer.js",
|
||||||
"/plugin/local/wiki/draw/path.js",
|
"/plugin/local/wiki/draw/path.js",
|
||||||
|
@ -111,18 +111,18 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
|||||||
|
|
||||||
can.onimport._share(can, can.user.Search(can, web.SHARE))
|
can.onimport._share(can, can.user.Search(can, web.SHARE))
|
||||||
},
|
},
|
||||||
onresize: function(can, msg, width, height) { can.Conf({width: width, height: height}) },
|
onsize: function(can, msg, width, height) { can.Conf({width: width, height: height}) },
|
||||||
onsearch: function(can, msg, word) {
|
onsearch: function(can, msg, word) {
|
||||||
if (word[0] == "*" || word[0] == mdb.PLUGIN) { can.onexport.plugin(can, msg, word) }
|
if (word[0] == "*" || word[0] == mdb.PLUGIN) { can.onexport.plugin(can, msg, word) }
|
||||||
},
|
},
|
||||||
onstorm_select: function(can, msg, river, storm) { can.onlayout._init(can)
|
onstorm_select: function(can, msg, river, storm) { can.onlayout._init(can)
|
||||||
function key(name) { return can.core.Keys(can.Conf(chat.RIVER), can.Conf(chat.STORM), name) }
|
function key(name) { return can.core.Keys(can.Conf(chat.RIVER), can.Conf(chat.STORM), name) }
|
||||||
can.page.Cache(key(ctx.ACTION), can._action, can._output.scrollTop+1)
|
can.page.Cache(key(html.ACTION), can._action, can._output.scrollTop+1)
|
||||||
can.page.Cache(key(chat.OUTPUT), can._output, can._output.scrollTop+1)
|
can.page.Cache(key(html.OUTPUT), can._output, can._output.scrollTop+1)
|
||||||
|
|
||||||
can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm) // 转场
|
can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm) // 转场
|
||||||
var position = can.page.Cache(key(ctx.ACTION), can._action)
|
var position = can.page.Cache(key(html.ACTION), can._action)
|
||||||
var position = can.page.Cache(key(chat.OUTPUT), can._output)
|
var position = can.page.Cache(key(html.OUTPUT), can._output)
|
||||||
if (position) { can._output.scrollTo(0, position-1); return }
|
if (position) { can._output.scrollTo(0, position-1); return }
|
||||||
|
|
||||||
can.run({}, [river, storm], function(msg) {
|
can.run({}, [river, storm], function(msg) {
|
||||||
|
@ -64,7 +64,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
}
|
}
|
||||||
}}] }])
|
}}] }])
|
||||||
can.user.isMobile && can.page.Modify(can, ui.first, {style: {float: "right"}})
|
can.user.isMobile && can.page.Modify(can, ui.first, {style: {float: "right"}})
|
||||||
// can.onmotion.autosize(can, ui.input, 240, 120)
|
|
||||||
},
|
},
|
||||||
_background: function(can, msg) {
|
_background: function(can, msg) {
|
||||||
if (can.user.isLocalFile) { return }
|
if (can.user.isLocalFile) { return }
|
||||||
|
@ -91,7 +91,7 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
|
|||||||
},
|
},
|
||||||
storm: function(event, can, river) { can.sublist = can.sublist||{}
|
storm: function(event, can, river) { can.sublist = can.sublist||{}
|
||||||
can.onmotion.select(can, can._output, "div.item", can.river_list[river])
|
can.onmotion.select(can, can._output, "div.item", can.river_list[river])
|
||||||
var list = can.sublist[river]; if (list) { return can.onmotion.Toggle(can, list) }
|
var list = can.sublist[river]; if (list) { return can.onmotion.toggle(can, list) }
|
||||||
|
|
||||||
can.run({}, [river, chat.TOOL], function(msg) {
|
can.run({}, [river, chat.TOOL], function(msg) {
|
||||||
var select = 0; list = can.page.Append(can, can._output, [{view: "list", list: msg.Table(function(item, index) {
|
var select = 0; list = can.page.Append(can, can._output, [{view: "list", list: msg.Table(function(item, index) {
|
||||||
|
@ -94,7 +94,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
|
|||||||
can.onimport.tabview(can, path, file, "", cb)
|
can.onimport.tabview(can, path, file, "", cb)
|
||||||
}, _init: function(item) {
|
}, _init: function(item) {
|
||||||
can.core.Timer(10, function() { item.click() })
|
can.core.Timer(10, function() { item.click() })
|
||||||
can.onmotion.EnableDrop(can, can._action, "div.file", item)
|
can.onaction.EnableDrop(can, can._action, "div.file", item)
|
||||||
}}
|
}}
|
||||||
]).last
|
]).last
|
||||||
}, true)
|
}, true)
|
||||||
@ -321,6 +321,24 @@ Volcanos("onaction", {help: "控件交互", list: ["项目", "收藏"],
|
|||||||
}, true)
|
}, true)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
EnableDrop: function(can, parent, search, target) {
|
||||||
|
return can.page.Modify(can, target, { draggable: true,
|
||||||
|
ondragstart: function(event) { var target = event.target; can.drop = function(event, tab) {
|
||||||
|
parent.insertBefore(target, tab)
|
||||||
|
can.page.Select(can, parent, search, function(item) {
|
||||||
|
can.page.ClassList.del(can, item, "over")
|
||||||
|
})
|
||||||
|
} },
|
||||||
|
ondragover: function(event) { event.preventDefault()
|
||||||
|
can.page.Select(can, parent, search, function(item) {
|
||||||
|
can.page.ClassList.del(can, item, "over")
|
||||||
|
}), can.page.ClassList.add(can, event.target, "over")
|
||||||
|
},
|
||||||
|
ondrop: function(event) { event.preventDefault()
|
||||||
|
can.drop(event, event.target)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: ["文件数", "解析器", "文件名", "当前行", "跳转数", "标签数"],
|
Volcanos("onexport", {help: "导出数据", list: ["文件数", "解析器", "文件名", "当前行", "跳转数", "标签数"],
|
||||||
position: function(can, index, total) { total = total || can.max
|
position: function(can, index, total) { total = total || can.max
|
||||||
|
@ -107,7 +107,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.onimport._figure(event, can, can.point = can.point.concat(point))
|
can.onimport._figure(event, can, can.point = can.point.concat(point))
|
||||||
},
|
},
|
||||||
onmousemove: function(event, can) { var point = can.onimport._point(event, can)
|
onmousemove: function(event, can) { var point = can.onimport._point(event, can)
|
||||||
can.onmotion.Prepos(event, event.target)
|
can.onaction.Prepos(event, event.target)
|
||||||
if (can.Action("go") == "run") { return can.page.Modify(can, event.target, {style: {cursor: ""}}) }
|
if (can.Action("go") == "run") { return can.page.Modify(can, event.target, {style: {cursor: ""}}) }
|
||||||
if (can.Action("go") == "auto") { can.onaction._auto(can, event.target) }
|
if (can.Action("go") == "auto") { can.onaction._auto(can, event.target) }
|
||||||
can.onimport._figure(event, can, can.point.concat(point))
|
can.onimport._figure(event, can, can.point.concat(point))
|
||||||
@ -215,8 +215,8 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
|
|||||||
},
|
},
|
||||||
grid: function(event, can, point) { var target = event.target
|
grid: function(event, can, point) { var target = event.target
|
||||||
if (target == can.svg) { return }
|
if (target == can.svg) { return }
|
||||||
var p = point[point.length-1], pos = can.onmotion.Prepos(event, target)
|
var p = point[point.length-1], pos = can.onaction.Prepos(event, target)
|
||||||
target.Val && can.onmotion.Anchor(event, target, pos, p)
|
target.Val && can.onaction.Anchor(event, target, pos, p)
|
||||||
return p.target = target, p.anchor = pos, point
|
return p.target = target, p.anchor = pos, point
|
||||||
},
|
},
|
||||||
draw: function(event, can, point) { if (point.length < 2) { return }
|
draw: function(event, can, point) { if (point.length < 2) { return }
|
||||||
@ -329,7 +329,7 @@ Volcanos("onaction", {help: "组件菜单", list: [
|
|||||||
can.user.toast(can, "保存成功")
|
can.user.toast(can, "保存成功")
|
||||||
}, true)
|
}, true)
|
||||||
},
|
},
|
||||||
"项目": function(event, can) { can.onmotion.Toggle(can, can.ui.project) },
|
"项目": function(event, can) { can.onmotion.toggle(can, can.ui.project) },
|
||||||
"显示": function(event, can) { can.onmotion.show(can, {value: 100, length: 10}, null, can.group) },
|
"显示": function(event, can) { can.onmotion.show(can, {value: 100, length: 10}, null, can.group) },
|
||||||
"隐藏": function(event, can) { can.onmotion.hide(can, {value: 100, length: 10}, null, can.group) },
|
"隐藏": function(event, can) { can.onmotion.hide(can, {value: 100, length: 10}, null, can.group) },
|
||||||
"添加": function(event, can) {
|
"添加": function(event, can) {
|
||||||
@ -361,7 +361,7 @@ Volcanos("onaction", {help: "组件菜单", list: [
|
|||||||
|
|
||||||
_auto: function(can, target) {
|
_auto: function(can, target) {
|
||||||
if (can.point.length > 0) { return }
|
if (can.point.length > 0) { return }
|
||||||
var pos = can.onmotion.Prepos(event, event.target)
|
var pos = can.onaction.Prepos(event, event.target)
|
||||||
if (target.tagName == "text") {
|
if (target.tagName == "text") {
|
||||||
|
|
||||||
} else if (target == can.svg) {
|
} else if (target == can.svg) {
|
||||||
@ -408,7 +408,7 @@ Volcanos("onaction", {help: "组件菜单", list: [
|
|||||||
return ship.pid && (ship.target = can.page.Select(can, can.svg, "."+ship.pid)[0]) && ship
|
return ship.pid && (ship.target = can.page.Select(can, can.svg, "."+ship.pid)[0]) && ship
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}), pos: can.onmotion.Prepos(event, target)}
|
}), pos: can.onaction.Prepos(event, target)}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -417,12 +417,12 @@ Volcanos("onaction", {help: "组件菜单", list: [
|
|||||||
}
|
}
|
||||||
|
|
||||||
can.core.List(can.current.begin, function(item) { var figure = can.onfigure._get(can, item.target)
|
can.core.List(can.current.begin, function(item) { var figure = can.onfigure._get(can, item.target)
|
||||||
can.onmotion.Resizes(event, item.target, item, point[0], point[1], can.current.pos)
|
can.onaction.Resizes(event, item.target, item, point[0], point[1], can.current.pos)
|
||||||
can.page.Select(can, can.svg, "."+item.target.Value("text"), function(text) {
|
can.page.Select(can, can.svg, "."+item.target.Value("text"), function(text) {
|
||||||
text.Value(figure.text(can, {}, item.target))
|
text.Value(figure.text(can, {}, item.target))
|
||||||
})
|
})
|
||||||
can.core.List(item.ship, function(ship) {
|
can.core.List(item.ship, function(ship) {
|
||||||
var p = can.onmotion.Anchor(event, item.target, ship.anchor, {})
|
var p = can.onaction.Anchor(event, item.target, ship.anchor, {})
|
||||||
if (ship.which == 0) {
|
if (ship.which == 0) {
|
||||||
ship.target.Val("x1", p.x)
|
ship.target.Val("x1", p.x)
|
||||||
ship.target.Val("y1", p.y)
|
ship.target.Val("y1", p.y)
|
||||||
@ -441,6 +441,110 @@ Volcanos("onaction", {help: "组件菜单", list: [
|
|||||||
}, true)
|
}, true)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Resizes: function(event, item, begin, p0, p1, pos) {
|
||||||
|
switch (pos) {
|
||||||
|
case 5:
|
||||||
|
item.Value("x", begin.x + p1.x - p0.x)
|
||||||
|
item.Value("y", begin.y + p1.y - p0.y)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (pos) {
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 3:
|
||||||
|
item.Value("y", begin.y + p1.y - p0.y)
|
||||||
|
item.Value("height", begin.height - p1.y + p0.y)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
switch (pos) {
|
||||||
|
case 1:
|
||||||
|
case 4:
|
||||||
|
case 7:
|
||||||
|
item.Value("x", begin.x + p1.x - p0.x)
|
||||||
|
item.Value("width", begin.width - p1.x + p0.x)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
switch (pos) {
|
||||||
|
case 3:
|
||||||
|
case 6:
|
||||||
|
case 9:
|
||||||
|
item.Value("width", begin.width + p1.x - p0.x)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
switch (pos) {
|
||||||
|
case 7:
|
||||||
|
case 8:
|
||||||
|
case 9:
|
||||||
|
item.Value("height", begin.height + p1.y - p0.y)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Anchor: function(event, target, pos, point) {
|
||||||
|
switch (pos) {
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 3:
|
||||||
|
point.y = target.Val("y")
|
||||||
|
break
|
||||||
|
case 4:
|
||||||
|
case 5:
|
||||||
|
case 6:
|
||||||
|
point.y = target.Val("y") + target.Val("height") / 2
|
||||||
|
break
|
||||||
|
case 7:
|
||||||
|
case 8:
|
||||||
|
case 9:
|
||||||
|
point.y = target.Val("y") + target.Val("height")
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (pos) {
|
||||||
|
case 1:
|
||||||
|
case 4:
|
||||||
|
case 7:
|
||||||
|
point.x = target.Val("x")
|
||||||
|
break
|
||||||
|
case 2:
|
||||||
|
case 5:
|
||||||
|
case 8:
|
||||||
|
point.x = target.Val("x") + target.Val("width") / 2
|
||||||
|
break
|
||||||
|
case 3:
|
||||||
|
case 6:
|
||||||
|
case 9:
|
||||||
|
point.x = target.Val("x") + target.Val("width")
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return point
|
||||||
|
},
|
||||||
|
Prepos: function(event, item, p, q) {
|
||||||
|
var max = 20
|
||||||
|
p = p || item.getBoundingClientRect()
|
||||||
|
q = q || {x: event.clientX, y: event.clientY}
|
||||||
|
|
||||||
|
var pos = 5
|
||||||
|
var y = (q.y - p.y) / p.height
|
||||||
|
if (y < 0.2 && q.y - p.y < max) {
|
||||||
|
pos -= 3
|
||||||
|
} else if (y > 0.8 && q.y - p.y - p.height > -max) {
|
||||||
|
pos += 3
|
||||||
|
}
|
||||||
|
var x = (q.x - p.x) / p.width
|
||||||
|
if (x < 0.2 && q.x - p.x < max) {
|
||||||
|
pos -= 1
|
||||||
|
} else if (x > 0.8 && q.x - p.x - p.width > -max) {
|
||||||
|
pos += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
var cursor = [
|
||||||
|
"nw-resize", "n-resize", "ne-resize",
|
||||||
|
"w-resize", "move", "e-resize",
|
||||||
|
"sw-resize", "s-resize", "se-resize",
|
||||||
|
]
|
||||||
|
item.style.cursor = cursor[pos-1]
|
||||||
|
return pos
|
||||||
|
},
|
||||||
})
|
})
|
||||||
Volcanos("ondetail", {help: "组件详情", list: ["复制", "标签", "编辑", "删除"],
|
Volcanos("ondetail", {help: "组件详情", list: ["复制", "标签", "编辑", "删除"],
|
||||||
"复制": function(event, can) { can.onfigure._copy(event, can, event.target) },
|
"复制": function(event, can) { can.onfigure._copy(event, can, event.target) },
|
||||||
@ -466,7 +570,7 @@ Volcanos("ondetail", {help: "组件详情", list: ["复制", "标签", "编辑",
|
|||||||
"编辑": function(event, can) { var target = event.target
|
"编辑": function(event, can) { var target = event.target
|
||||||
var figure = can.onfigure._get(can, target)
|
var figure = can.onfigure._get(can, target)
|
||||||
can.user.input(event, can, can.core.List(["x", "y"].concat(figure.data.copy||[]), function(item) {
|
can.user.input(event, can, can.core.List(["x", "y"].concat(figure.data.copy||[]), function(item) {
|
||||||
return {_input: "text", name: item, value: target.Value(item)}
|
return {type: "text", name: item, value: target.Value(item)}
|
||||||
}), function(event, cmd, meta, list) {
|
}), function(event, cmd, meta, list) {
|
||||||
can.core.Item(meta, function(key, value) {
|
can.core.Item(meta, function(key, value) {
|
||||||
target.Value(key, value)
|
target.Value(key, value)
|
||||||
|
@ -191,12 +191,12 @@ Volcanos("onaction", {help: "控件交互", list: [],
|
|||||||
"快闪": function(event, sub) { sub.sup.onaction.flash(sub) },
|
"快闪": function(event, sub) { sub.sup.onaction.flash(sub) },
|
||||||
"网格": function(event, sub) { sub.sup.onaction.grid(sub) },
|
"网格": function(event, sub) { sub.sup.onaction.grid(sub) },
|
||||||
|
|
||||||
"大纲": function(event, sub) { sub.onmotion.Toggle(sub, sub.ui.project) },
|
"大纲": function(event, sub) { sub.onmotion.toggle(sub, sub.ui.project) },
|
||||||
"首页": function(event, sub) { sub.sup.onaction.show(sub, 0) },
|
"首页": function(event, sub) { sub.sup.onaction.show(sub, 0) },
|
||||||
"上一页": function(event, sub) { sub.sup.onaction.prev(sub, sub.ui.content) },
|
"上一页": function(event, sub) { sub.sup.onaction.prev(sub, sub.ui.content) },
|
||||||
"菜单": function(event, sub) { sub.sup.onaction.show(sub, event.target.selectedIndex) },
|
"菜单": function(event, sub) { sub.sup.onaction.show(sub, event.target.selectedIndex) },
|
||||||
"下一页": function(event, sub) { sub.sup.onaction.next(sub, sub.ui.content) },
|
"下一页": function(event, sub) { sub.sup.onaction.next(sub, sub.ui.content) },
|
||||||
"隐藏": function(event, sub) { sub.onmotion.Toggle(sub, sub._output) },
|
"隐藏": function(event, sub) { sub.onmotion.toggle(sub, sub._output) },
|
||||||
"结束": function(event, sub) { sub.page.Remove(sub, sub._target)
|
"结束": function(event, sub) { sub.page.Remove(sub, sub._target)
|
||||||
sub.onengine.signal(sub, "keymap.focus", sub.request(event, {cb: null}))
|
sub.onengine.signal(sub, "keymap.focus", sub.request(event, {cb: null}))
|
||||||
},
|
},
|
||||||
|
@ -232,9 +232,9 @@ Volcanos("onaction", {help: "交互操作", list: [
|
|||||||
},
|
},
|
||||||
openLocation: function(event, can) { can.user.agent.openLocation(can.request(event)) },
|
openLocation: function(event, can) { can.user.agent.openLocation(can.request(event)) },
|
||||||
|
|
||||||
"参数": function(event, can) { can.onmotion.Toggle(can, can._action) },
|
"参数": function(event, can) { can.onmotion.toggle(can, can._action) },
|
||||||
"清空": function(event, can, name) { can.onmotion.clear(can, can._output) },
|
clear: function(event, can, name) { can.onmotion.clear(can, can._output) },
|
||||||
"关闭": function(event, can) { can.page.Remove(can, can._target) },
|
close: function(event, can) { can.page.Remove(can, can._target) },
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: []})
|
Volcanos("onexport", {help: "导出数据", list: []})
|
||||||
var _can_name = ""
|
var _can_name = ""
|
||||||
|
@ -143,6 +143,7 @@ Volcanos("ondetail", {help: "用户交互", list: [],
|
|||||||
can.onappend.plugin(can, {type: "float", index: "web.code.inner", args: args, _action: ["关闭"]}, function(sub) {
|
can.onappend.plugin(can, {type: "float", index: "web.code.inner", args: args, _action: ["关闭"]}, function(sub) {
|
||||||
sub.run = function(event, cmds, cb) {
|
sub.run = function(event, cmds, cb) {
|
||||||
can.run(event, can.misc.Concat([ctx.ACTION, "inner"], cmds), function(msg) {
|
can.run(event, can.misc.Concat([ctx.ACTION, "inner"], cmds), function(msg) {
|
||||||
|
msg.Option(ice.MSG_ACTION, "close")
|
||||||
can.search(event, ["Action.onexport.size"], function(msg, left, top, width, height) { left = left||0
|
can.search(event, ["Action.onexport.size"], function(msg, left, top, width, height) { left = left||0
|
||||||
var top = 120, margin = 20; if (can.user.isMobile) { margin = 0
|
var top = 120, margin = 20; if (can.user.isMobile) { margin = 0
|
||||||
if (can.user.isLandscape) {
|
if (can.user.isLandscape) {
|
||||||
|
64
proto.js
64
proto.js
@ -119,30 +119,40 @@ const chat = {
|
|||||||
INPUT: "input",
|
INPUT: "input",
|
||||||
FLOAT: "float",
|
FLOAT: "float",
|
||||||
|
|
||||||
ONMAIN: "onmain",
|
|
||||||
|
|
||||||
RIVER: "river",
|
|
||||||
STORM: "storm",
|
|
||||||
FIELD: "field",
|
|
||||||
|
|
||||||
PUBLIC: "public",
|
|
||||||
PROTECTED: "protected",
|
|
||||||
PRIVATE: "private",
|
|
||||||
|
|
||||||
USER: "user",
|
|
||||||
TOOL: "tool",
|
|
||||||
NODE: "node",
|
|
||||||
|
|
||||||
LAYOUT: "layout",
|
LAYOUT: "layout",
|
||||||
OUTPUT: "output",
|
PROJECT: "project",
|
||||||
|
CONTENT: "content",
|
||||||
|
DISPLAY: "display",
|
||||||
|
PROFILE: "profile",
|
||||||
|
|
||||||
|
HEAD: "head", LEFT: "left", MAIN: "main", FOOT: "foot",
|
||||||
|
|
||||||
SCROLL: "scroll",
|
SCROLL: "scroll",
|
||||||
HEIGHT: "height",
|
HEIGHT: "height",
|
||||||
WIDTH: "width",
|
WIDTH: "width",
|
||||||
TOP: "top",
|
TOP: "top",
|
||||||
LEFT: "left",
|
LEFT: "left",
|
||||||
|
|
||||||
|
USER: "user",
|
||||||
|
TOOL: "tool",
|
||||||
|
NODE: "node",
|
||||||
|
|
||||||
|
PUBLIC: "public",
|
||||||
|
PROTECTED: "protected",
|
||||||
|
PRIVATE: "private",
|
||||||
|
|
||||||
HEADER: "header",
|
HEADER: "header",
|
||||||
|
ONMAIN: "onmain",
|
||||||
|
ONSIZE: "onsize",
|
||||||
|
|
||||||
|
RIVER: "river",
|
||||||
|
STORM: "storm",
|
||||||
|
FIELD: "field",
|
||||||
|
|
||||||
TOPIC: "topic",
|
TOPIC: "topic",
|
||||||
|
BLACK: "black",
|
||||||
|
WHITE: "white",
|
||||||
|
|
||||||
TITLE: "title",
|
TITLE: "title",
|
||||||
MENUS: "menus",
|
MENUS: "menus",
|
||||||
TRANS: "trans",
|
TRANS: "trans",
|
||||||
@ -174,27 +184,27 @@ const html = {
|
|||||||
DIV_OUTPUT: "div.output",
|
DIV_OUTPUT: "div.output",
|
||||||
DIV_STATUS: "div.status",
|
DIV_STATUS: "div.status",
|
||||||
|
|
||||||
INPUT: "input", TEXT: "text",
|
INPUT: "input", INPUT_ARGS: ".args",
|
||||||
TEXTAREA: "textarea",
|
TEXT: "text", TEXTAREA: "textarea",
|
||||||
SELECT: "select",
|
SELECT: "select",
|
||||||
BUTTON: "button",
|
BUTTON: "button",
|
||||||
SPACE: "space",
|
SPACE: "space",
|
||||||
BR: "br",
|
BR: "br",
|
||||||
TD: "td",
|
|
||||||
|
|
||||||
INPUT_ARGS: ".args",
|
|
||||||
|
|
||||||
|
TABLE: "table", TR: "tr", TH: "th", TD: "td",
|
||||||
DIV: "div",
|
DIV: "div",
|
||||||
IMG: "img",
|
IMG: "img",
|
||||||
CODE: "code",
|
CODE: "code",
|
||||||
SPAN: "span",
|
SPAN: "span",
|
||||||
|
NONE: "none",
|
||||||
|
BLOCK: "block",
|
||||||
LABEL: "label",
|
LABEL: "label",
|
||||||
VIDEO: "video",
|
VIDEO: "video",
|
||||||
FILE: "file",
|
|
||||||
FORM: "form",
|
|
||||||
|
|
||||||
ITEM: "item",
|
FORM: "form",
|
||||||
|
FILE: "file",
|
||||||
LIST: "list",
|
LIST: "list",
|
||||||
|
ITEM: "item",
|
||||||
}
|
}
|
||||||
const lang = {
|
const lang = {
|
||||||
STRING: "string",
|
STRING: "string",
|
||||||
@ -221,14 +231,14 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args:
|
|||||||
meta.libs = ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"]
|
meta.libs = ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"]
|
||||||
|
|
||||||
// 预加载
|
// 预加载
|
||||||
var Preload = (Config.preload||[]).concat(Config.main.list)
|
var Preload = Config.preload||[]
|
||||||
for (var i = 0; i < Config.panels.length; i++) { var panel = Config.panels[i]
|
for (var i = 0; i < Config.panels.length; i++) { var panel = Config.panels[i]
|
||||||
panel && (Preload = Preload.concat(panel.list = panel.list || ["/panel/"+panel.name+".css", "/panel/"+panel.name+".js"]))
|
panel && (Preload = Preload.concat(panel.list = panel.list || ["/panel/"+panel.name+".css", "/panel/"+panel.name+".js"]))
|
||||||
}; Preload = Preload.concat(Config.plugin)
|
}; Preload = Preload.concat(Config.plugin, Config.main.list)
|
||||||
|
|
||||||
// 根模块
|
// 根模块
|
||||||
name = Config.name, can = {_follow: Config.name, _target: Config.target||document.body}
|
name = Config.name, can = {_follow: Config.name, _target: Config.target||document.body}
|
||||||
libs = Preload.concat(Config.libs||meta.libs, Config.volcano||meta.volcano), cb = function(can) {
|
libs = Preload.concat(meta.libs, meta.volcano), cb = function(can) {
|
||||||
can.onengine._init(can, can.Conf(Config), Config.panels, Config._init, can._target)
|
can.onengine._init(can, can.Conf(Config), Config.panels, Config._init, can._target)
|
||||||
}, _can_name = "", can._root = can
|
}, _can_name = "", can._root = can
|
||||||
}
|
}
|
||||||
@ -311,8 +321,8 @@ function cmd(tool) {
|
|||||||
"/plugin/table.js",
|
"/plugin/table.js",
|
||||||
"/plugin/input/key.js",
|
"/plugin/input/key.js",
|
||||||
"/plugin/input/date.js",
|
"/plugin/input/date.js",
|
||||||
"/plugin/story/trend.js",
|
|
||||||
"/plugin/story/spide.js",
|
"/plugin/story/spide.js",
|
||||||
|
"/plugin/story/trend.js",
|
||||||
"/plugin/local/code/inner.js",
|
"/plugin/local/code/inner.js",
|
||||||
"/plugin/local/code/vimer.js",
|
"/plugin/local/code/vimer.js",
|
||||||
"/plugin/local/wiki/draw/path.js",
|
"/plugin/local/wiki/draw/path.js",
|
||||||
|
@ -23,23 +23,23 @@
|
|||||||
<view class="field" wx:for="{{list}}" wx:for-index="order" wx:for-item="field" wx:key="index">
|
<view class="field" wx:for="{{list}}" wx:for-index="order" wx:for-item="field" wx:key="index">
|
||||||
<view class="title"><text>{{field.name}}({{field.help}})</text></view>
|
<view class="title"><text>{{field.name}}({{field.help}})</text></view>
|
||||||
<view class="option"> <!-- 参数 -->
|
<view class="option"> <!-- 参数 -->
|
||||||
<view class="item {{item._input}}" wx:for="{{field.inputs}}" wx:key="name">
|
<view class="item {{item.type}}" wx:for="{{field.inputs}}" wx:key="name">
|
||||||
<!-- 文本 -->
|
<!-- 文本 -->
|
||||||
<textarea wx:if="{{item._input == 'textarea'}}" placeholder="{{item.name}}" value="{{item.value}}"
|
<textarea wx:if="{{item.type == 'textarea'}}" placeholder="{{item.name}}" value="{{item.value}}"
|
||||||
bindinput="onInput" data-index="{{index}}" data-order="{{order}}"></textarea>
|
bindinput="onInput" data-index="{{index}}" data-order="{{order}}"></textarea>
|
||||||
|
|
||||||
<!-- 文本 -->
|
<!-- 文本 -->
|
||||||
<input wx:elif="{{item._input == 'text'}}" placeholder="{{item.name}}" value="{{item.value}}" type="text"
|
<input wx:elif="{{item.type == 'text'}}" placeholder="{{item.name}}" value="{{item.value}}" type="text"
|
||||||
bindinput="onInput" data-index="{{index}}" data-order="{{order}}"/>
|
bindinput="onInput" data-index="{{index}}" data-order="{{order}}"/>
|
||||||
|
|
||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<picker wx:elif="{{item._input == 'select'}}" range="{{item.values}}" value="{{item.index||0}}"
|
<picker wx:elif="{{item.type == 'select'}}" range="{{item.values}}" value="{{item.index||0}}"
|
||||||
bindchange="onChange" data-index="{{index}}" data-order="{{order}}">
|
bindchange="onChange" data-index="{{index}}" data-order="{{order}}">
|
||||||
<view>{{item.values[item.index||0]}}</view>
|
<view>{{item.values[item.index||0]}}</view>
|
||||||
</picker>
|
</picker>
|
||||||
|
|
||||||
<!-- 按钮 -->
|
<!-- 按钮 -->
|
||||||
<button wx:elif="{{item._input == 'button'}}" size="mini"
|
<button wx:elif="{{item.type == 'button'}}" size="mini"
|
||||||
bindtap="onClick" data-index="{{index}}" data-order="{{order}}">{{item.value||item.name}}</button>
|
bindtap="onClick" data-index="{{index}}" data-order="{{order}}">{{item.value||item.name}}</button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
@ -19,7 +19,7 @@ Page({
|
|||||||
line.name = line.name.split(" ")[0]
|
line.name = line.name.split(" ")[0]
|
||||||
|
|
||||||
if (!line.inputs || line.inputs.length === 0) {
|
if (!line.inputs || line.inputs.length === 0) {
|
||||||
line.inputs = [{_input: "text"}, {_input: "button", value: "执行"}]
|
line.inputs = [{type: "text"}, {type: "button", value: "执行"}]
|
||||||
}
|
}
|
||||||
|
|
||||||
line.inputs.forEach(function(input) { input.action = input.action || input.value
|
line.inputs.forEach(function(input) { input.action = input.action || input.value
|
||||||
@ -29,11 +29,11 @@ Page({
|
|||||||
if (input.value && input.value.indexOf("@") == 0) {
|
if (input.value && input.value.indexOf("@") == 0) {
|
||||||
input.action = input.value.slice(1), input.value = ""
|
input.action = input.value.slice(1), input.value = ""
|
||||||
}
|
}
|
||||||
if (input._input == "select") {
|
if (input.type == "select") {
|
||||||
input.values = input.values || kit.Split(input.value)
|
input.values = input.values || kit.Split(input.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
input._input == "button" && input.action == "auto" && kit.Timer(100, function() { page.run(event, index) })
|
input.type == "button" && input.action == "auto" && kit.Timer(100, function() { page.run(event, index) })
|
||||||
})
|
})
|
||||||
}), page.setData({list: list})
|
}), page.setData({list: list})
|
||||||
})
|
})
|
||||||
@ -65,7 +65,7 @@ Page({
|
|||||||
},
|
},
|
||||||
run: function(event, order, cmd, cb) { var page = this, field = page.data.list[order]
|
run: function(event, order, cmd, cb) { var page = this, field = page.data.list[order]
|
||||||
var cmds = [page.data.river, page.data.storm, field.id||field.key]; if (!cmd) {
|
var cmds = [page.data.river, page.data.storm, field.id||field.key]; if (!cmd) {
|
||||||
var cmd = kit.List(field.inputs, function(input) { if (input._input != "button") { return input.value } })
|
var cmd = kit.List(field.inputs, function(input) { if (input.type != "button") { return input.value } })
|
||||||
kit.EQ(page.data.back[page.data.back.length-1], cmd) || page.data.back[order].push(cmd)
|
kit.EQ(page.data.back[page.data.back.length-1], cmd) || page.data.back[order].push(cmd)
|
||||||
}; cmds = cmds.concat(cmd)
|
}; cmds = cmds.concat(cmd)
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ Page({
|
|||||||
case "back": // 恢复命令
|
case "back": // 恢复命令
|
||||||
page.data.back[data.order].pop(); var line = page.data.back[data.order].pop()
|
page.data.back[data.order].pop(); var line = page.data.back[data.order].pop()
|
||||||
kit.List(field.inputs, function(input, index) {
|
kit.List(field.inputs, function(input, index) {
|
||||||
if (input._input != "button") { input.value = line&&line[index] || "" }
|
if (input.type != "button") { input.value = line&&line[index] || "" }
|
||||||
})
|
})
|
||||||
case "run": // 执行命令
|
case "run": // 执行命令
|
||||||
case "刷新": // 执行命令
|
case "刷新": // 执行命令
|
||||||
@ -108,7 +108,7 @@ Page({
|
|||||||
default:
|
default:
|
||||||
var cb = page.plugin[input.name]; can.base.isFunc(cb)? cb(event, page, data.order, input.name):
|
var cb = page.plugin[input.name]; can.base.isFunc(cb)? cb(event, page, data.order, input.name):
|
||||||
page.run(event, data.order, ["action", input.name].concat(kit.List(field.inputs, function(input) {
|
page.run(event, data.order, ["action", input.name].concat(kit.List(field.inputs, function(input) {
|
||||||
if (input._input != "button") { return input.value }
|
if (input.type != "button") { return input.value }
|
||||||
})))
|
})))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -116,7 +116,7 @@ Page({
|
|||||||
var field = page.data.list[data.order]; if (!field) { return }
|
var field = page.data.list[data.order]; if (!field) { return }
|
||||||
|
|
||||||
var input = data.input; if (input && input.type == "button") { var option = {}
|
var input = data.input; if (input && input.type == "button") { var option = {}
|
||||||
kit.List(field.inputs, function(input) { input._input != "button" && (option[input.name] = input.value) })
|
kit.List(field.inputs, function(input) { input.type != "button" && (option[input.name] = input.value) })
|
||||||
if (field.msg.append[0] == "key" && field.msg.append[1] == "value") {
|
if (field.msg.append[0] == "key" && field.msg.append[1] == "value") {
|
||||||
kit.List(field.msg.key, function(key, index) { option[key] = field.msg.value[index] })
|
kit.List(field.msg.key, function(key, index) { option[key] = field.msg.value[index] })
|
||||||
} else {
|
} else {
|
||||||
|
@ -4,21 +4,21 @@
|
|||||||
<view class="output">
|
<view class="output">
|
||||||
<view class="item" wx:for="{{list}}" wx:key="index">
|
<view class="item" wx:for="{{list}}" wx:key="index">
|
||||||
<!-- 文本 -->
|
<!-- 文本 -->
|
||||||
<textarea wx:if="{{item._input == 'textarea'}}" placeholder="{{item.name}}" value="{{item.value}}"
|
<textarea wx:if="{{item.type == 'textarea'}}" placeholder="{{item.name}}" value="{{item.value}}"
|
||||||
bindinput="onInput" data-index="{{index}}"></textarea>
|
bindinput="onInput" data-index="{{index}}"></textarea>
|
||||||
|
|
||||||
<!-- 文本 -->
|
<!-- 文本 -->
|
||||||
<input wx:elif="{{item._input == 'text'}}" placeholder="{{item.name}}" value="{{item.value}}" type="text"
|
<input wx:elif="{{item.type == 'text'}}" placeholder="{{item.name}}" value="{{item.value}}" type="text"
|
||||||
bindinput="onInput" data-index="{{index}}"/>
|
bindinput="onInput" data-index="{{index}}"/>
|
||||||
|
|
||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<picker wx:elif="{{item._input == 'select'}}" range="{{item.values}}" value="{{item.index||0}}"
|
<picker wx:elif="{{item.type == 'select'}}" range="{{item.values}}" value="{{item.index||0}}"
|
||||||
bindchange="onChange" data-index="{{index}}">
|
bindchange="onChange" data-index="{{index}}">
|
||||||
<view>{{item.values[item.index||0]}}</view>
|
<view>{{item.values[item.index||0]}}</view>
|
||||||
</picker>
|
</picker>
|
||||||
|
|
||||||
<!-- 按钮 -->
|
<!-- 按钮 -->
|
||||||
<button wx:elif="{{item._input == 'button'}}" size="mini"
|
<button wx:elif="{{item.type == 'button'}}" size="mini"
|
||||||
bindtap="onClick" data-index="{{index}}">{{item.name||item.value}}</button>
|
bindtap="onClick" data-index="{{index}}">{{item.name||item.value}}</button>
|
||||||
</view>
|
</view>
|
||||||
<button bindtap="onConfirm">提交</button>
|
<button bindtap="onConfirm">提交</button>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user