mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt inner
This commit is contained in:
parent
6685ff8486
commit
0e48f88874
79
frame.js
79
frame.js
@ -1,4 +1,5 @@
|
|||||||
Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta, list, cb, target) {
|
Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta, list, cb, target) {
|
||||||
|
Volcanos.meta._load_time = can.base.Time()
|
||||||
can.run = function(event, cmds, cb) { var msg = can.request(event); cmds = cmds||[]
|
can.run = function(event, cmds, cb) { var msg = can.request(event); cmds = cmds||[]
|
||||||
return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, can, cmds, cb)
|
return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, can, cmds, cb)
|
||||||
}
|
}
|
||||||
@ -48,8 +49,13 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
|
|||||||
if (cmds[0] == ctx.ACTION && cmds[1] == ice.RUN && can.onengine.plugin.meta[cmds[2]]) {
|
if (cmds[0] == ctx.ACTION && cmds[1] == ice.RUN && can.onengine.plugin.meta[cmds[2]]) {
|
||||||
return can.core.CallFunc(can.onengine.plugin.meta[cmds[2]], {msg: msg, cmds: cmds.slice(3), cb: cb}), true
|
return can.core.CallFunc(can.onengine.plugin.meta[cmds[2]], {msg: msg, cmds: cmds.slice(3), cb: cb}), true
|
||||||
}
|
}
|
||||||
if (can.onengine.plugin.meta[cmds[0]]) {
|
var p = can.onengine.plugin.meta[cmds[0]]; if (p) {
|
||||||
return can.core.CallFunc(can.onengine.plugin.meta[cmds[0]], {msg: msg, cmds: cmds.slice(1), cb: cb}), true
|
if (p.meta && p.meta[cmds[1]] && cmds[0] == ctx.ACTION) {
|
||||||
|
return can.core.CallFunc(p.meta[cmds[1]], {msg: msg, cmds: cmds.slice(3), cb: cb}), true
|
||||||
|
} else if (p.meta && p.meta[cmds[0]]) {
|
||||||
|
return can.core.CallFunc(p.meta[cmds[0]], {msg: msg, cmds: cmds.slice(2), cb: cb}), true
|
||||||
|
}
|
||||||
|
return can.core.CallFunc(p, {msg: msg, cmds: cmds.slice(1), cb: cb}), true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
},
|
},
|
||||||
@ -78,14 +84,7 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
|
|||||||
var type = html.TEXT; command.list = can.core.List(command.list, function(item) {
|
var type = html.TEXT; command.list = can.core.List(command.list, function(item) {
|
||||||
switch (typeof item) {
|
switch (typeof item) {
|
||||||
case lang.OBJECT: return type = item.type||type, item
|
case lang.OBJECT: return type = item.type||type, item
|
||||||
case lang.STRING:
|
case lang.STRING: return can.core.SplitInput(item)
|
||||||
switch (item) {
|
|
||||||
case mdb.LIST:
|
|
||||||
case cli.BACK: return {type: type = html.BUTTON, name: item}
|
|
||||||
case mdb.NAME: return {type: type = html.TEXT, name: item}
|
|
||||||
case mdb.TEXT: return {type: type = html.TEXTAREA, name: item}
|
|
||||||
default: return {type: type, name: item}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}), arguments.callee.meta[can.core.Keys("can", name)] = command
|
}), arguments.callee.meta[can.core.Keys("can", name)] = command
|
||||||
}),
|
}),
|
||||||
@ -195,24 +194,15 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
list = can.base.Obj(list, can.core.Value(can, [chat.ONACTION, mdb.LIST]))
|
list = can.base.Obj(list, can.core.Value(can, [chat.ONACTION, mdb.LIST]))
|
||||||
var _list = []; for (var i = 0; i < list.length; i++) {
|
var _list = []; for (var i = 0; i < list.length; i++) {
|
||||||
switch (list[i]) { case "": _list.push(""); break
|
switch (list[i]) { case "": _list.push(""); break
|
||||||
case "page":
|
case mdb.PAGE:
|
||||||
_list.push({type: "text", name: "limit", value: can._msg.Option("limit")})
|
_list.push({type: html.TEXT, name: mdb.LIMIT, value: can._msg.Option(mdb.LIMIT)})
|
||||||
_list.push({type: "text", name: "offend", value: can._msg.Option("offend")})
|
_list.push({type: html.TEXT, name: mdb.OFFEND, value: can._msg.Option(mdb.OFFEND)})
|
||||||
_list.push("prev", "next")
|
_list.push(mdb.PREV, mdb.NEXT)
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
if (can.base.isObject(list[i])) { _list.push(list[i]); break }
|
var item = can.core.SplitInput(list[i], html.BUTTON); item.action && (function() {
|
||||||
var ls = can.core.Split(list[i], "\t \n", ":=@"); if (ls.length == 1) { _list.push(list[i]) } else {
|
item._init = function(target) { can.onappend.figure(can, item, target) }
|
||||||
var item = {name: ls[0]}; for (var j = 1; j < ls.length; j+=2) {
|
})(), item.type == html.BUTTON? _list.push(list[i]): _list.push(item)
|
||||||
switch (ls[j]) {
|
|
||||||
case ":": item.type = ls[j+1]; break
|
|
||||||
case "=": item.value = ls[j+1]; break
|
|
||||||
case "@": item.action = ls[j+1]; (function() {
|
|
||||||
item._init = function(target) { can.onappend.figure(can, item, target) }
|
|
||||||
})(); break
|
|
||||||
}
|
|
||||||
}; _list.push(item)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
meta = meta||can.onaction, action = action||can._action, can.onmotion.clear(can, action)
|
meta = meta||can.onaction, action = action||can._action, can.onmotion.clear(can, action)
|
||||||
@ -220,6 +210,11 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
can.base.isString(item)? /*按键*/ {type: html.BUTTON, value: can.user.trans(can, item), onclick: function(event) {
|
can.base.isString(item)? /*按键*/ {type: html.BUTTON, value: can.user.trans(can, item), onclick: function(event) {
|
||||||
var cb = meta[item]||meta["_engine"]; cb? can.core.CallFunc(cb, {event: event, can: can, button: item}): can.run(event, [ctx.ACTION, item].concat(can.sup.Input()))
|
var cb = meta[item]||meta["_engine"]; cb? can.core.CallFunc(cb, {event: event, can: can, button: item}): can.run(event, [ctx.ACTION, item].concat(can.sup.Input()))
|
||||||
|
|
||||||
|
}, onkeydown: function(event) {
|
||||||
|
if (event.key == lang.ENTER) {
|
||||||
|
var cb = meta[item]||meta["_engine"]; cb? can.core.CallFunc(cb, {event: event, can: can, button: item}): can.run(event, [ctx.ACTION, item].concat(can.sup.Input()))
|
||||||
|
}
|
||||||
|
|
||||||
}}: item.length > 0? /*列表*/ {type: html.SELECT, name: item[0], values: item.slice(1), onchange: function(event) {
|
}}: item.length > 0? /*列表*/ {type: html.SELECT, name: item[0], values: item.slice(1), onchange: function(event) {
|
||||||
var which = item[event.target.selectedIndex+1]
|
var which = item[event.target.selectedIndex+1]
|
||||||
can.core.CallFunc(meta[which], [event, can, which])
|
can.core.CallFunc(meta[which], [event, can, which])
|
||||||
@ -228,7 +223,8 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
}}: /*其它*/ item, "", action)}), meta
|
}}: /*其它*/ item, "", action)}), meta
|
||||||
},
|
},
|
||||||
_output0: function(can, meta, event, cmds, cb, silent) { var msg = can.request(event); if (msg.RunAction(event, can, cmds)) { return }
|
_output0: function(can, meta, event, cmds, cb, silent) { var msg = can.request(event); if (msg.RunAction(event, can, cmds)) { return }
|
||||||
if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION && meta.feature[cmds[1]]) { can.request(event, {action: cmds[1]})
|
if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION && meta.feature[cmds[1]]) { var msg = can.request(event, {action: cmds[1]})
|
||||||
|
if (can.base.isFunc(meta.feature[cmds[1]])) { return can.core.CallFunc(meta.feature[cmds[1]], {can: can, msg: msg, cmds: cmds.slice(2)}) }
|
||||||
return can.user.input(event, can, meta.feature[cmds[1]], function(ev, button, data, list, args) { var msg = can.request(event, {_handle: ice.TRUE}, can.Option())
|
return can.user.input(event, can, meta.feature[cmds[1]], function(ev, button, data, list, args) { var msg = can.request(event, {_handle: ice.TRUE}, can.Option())
|
||||||
can.Update(event, cmds.slice(0, 2).concat(args), cb||function() {
|
can.Update(event, cmds.slice(0, 2).concat(args), cb||function() {
|
||||||
if (can.core.CallFunc([can.sup, chat.ONIMPORT, ice.MSG_PROCESS], {can: can.sup, msg: msg})) { return }
|
if (can.core.CallFunc([can.sup, chat.ONIMPORT, ice.MSG_PROCESS], {can: can.sup, msg: msg})) { return }
|
||||||
@ -277,6 +273,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
can.onmotion.clear(can, can._option), can.onappend._option(can, {inputs: table.onimport.list})
|
can.onmotion.clear(can, can._option), can.onappend._option(can, {inputs: table.onimport.list})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table._args = can.base.ParseURL(table._display)
|
||||||
table._trans = can.base.Copy(table._trans||{}, can.core.Value(table, "onaction._trans"))
|
table._trans = can.base.Copy(table._trans||{}, can.core.Value(table, "onaction._trans"))
|
||||||
can.core.CallFunc([table, chat.ONIMPORT, "_init"], {can: table, msg: msg, list: msg.result||msg.append||[], cb: function(msg) {
|
can.core.CallFunc([table, chat.ONIMPORT, "_init"], {can: table, msg: msg, list: msg.result||msg.append||[], cb: function(msg) {
|
||||||
action === false || table.onappend._action(table, msg.Option(ice.MSG_ACTION)||can.Conf(ice.MSG_ACTION), action)
|
action === false || table.onappend._action(table, msg.Option(ice.MSG_ACTION)||can.Conf(ice.MSG_ACTION), action)
|
||||||
@ -293,9 +290,10 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
tabs: function(can, list, cb, cbs, action) { action = action||can._action
|
tabs: function(can, list, cb, cbs, action, each) { action = action||can._action
|
||||||
return can.page.Append(can, action, can.core.List(list, function(meta) {
|
return can.page.Append(can, action, can.core.List(list, function(meta) {
|
||||||
return {text: [meta.name, html.DIV, html.TABS], title: meta.text, onclick: function(event) {
|
return {text: [meta.name, html.DIV, html.TABS], title: meta.text, onclick: function(event) {
|
||||||
|
can.onmotion.select(can, action, "div.tabs", event.target)
|
||||||
can.base.isFunc(cb) && cb(event, meta)
|
can.base.isFunc(cb) && cb(event, meta)
|
||||||
}, _init: function(item) { const OVER = "over"
|
}, _init: function(item) { const OVER = "over"
|
||||||
function close(item) { var next = item.nextSibling||item.previousSibling
|
function close(item) { var next = item.nextSibling||item.previousSibling
|
||||||
@ -317,6 +315,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
ondragover: function(event) { event.preventDefault(), action._drop(event, event.target) },
|
ondragover: function(event) { event.preventDefault(), action._drop(event, event.target) },
|
||||||
ondrop: function(event) { event.preventDefault(), action._drop(event, event.target) },
|
ondrop: function(event) { event.preventDefault(), action._drop(event, event.target) },
|
||||||
}), can.core.Timer(10, function() { item.click() })
|
}), can.core.Timer(10, function() { item.click() })
|
||||||
|
can.base.isFunc(each) && each(item)
|
||||||
}}
|
}}
|
||||||
})).first
|
})).first
|
||||||
},
|
},
|
||||||
@ -339,11 +338,16 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
node = node||{"": target}; can.core.List(list, function(item) {
|
node = node||{"": target}; can.core.List(list, function(item) {
|
||||||
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)
|
||||||
|
if (node[name]) { return }
|
||||||
node[name] || (node[name] = can.page.Append(can, node[last], [{view: [html.ITEM, html.DIV, value+(index==array.length-1?"":split)], onclick: function(event) {
|
var ui = can.page.Append(can, node[last], [{view: "item", list: [{view: ["switch", "div", (index==array.length-1?"":"⌃")]}, {view: ["name", html.DIV, value+(index==array.length-1?"":"")]}], 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], function() {
|
||||||
|
can.page.ClassList.add(can, ui["switch"], "open")
|
||||||
|
}, function() {
|
||||||
|
can.page.ClassList.del(can, ui["switch"], "open")
|
||||||
|
}): can.base.isFunc(cb) && cb(event, item)
|
||||||
if (node[name].childElementCount == 2) { node[name].firstChild.click() }
|
if (node[name].childElementCount == 2) { node[name].firstChild.click() }
|
||||||
}}, {view: html.LIST, style: {display: html.NONE}, _init: function(list) { item.expand && can.page.style(can, list, html.DISPLAY, html.BLOCK) }}]).last)
|
}}, {view: html.LIST, style: {display: html.NONE}, _init: function(list) { item.expand && can.page.style(can, list, html.DISPLAY, html.BLOCK) }}])
|
||||||
|
node[name] = ui.list
|
||||||
})
|
})
|
||||||
}); return node
|
}); return node
|
||||||
},
|
},
|
||||||
@ -439,7 +443,15 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
var p = can.onengine.plugin.meta[meta.index], res = {}; function cbs(sub, meta, skip) { res.__proto__ = sub, cb(sub, meta, skip) }
|
var p = can.onengine.plugin.meta[meta.index], res = {}; function cbs(sub, meta, skip) { res.__proto__ = sub, cb(sub, meta, skip) }
|
||||||
(meta.meta || meta.inputs && meta.inputs.length > 0)? /* 局部命令 */ can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, cbs, target):
|
(meta.meta || meta.inputs && meta.inputs.length > 0)? /* 局部命令 */ can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, cbs, target):
|
||||||
p? /* 前端命令 */ can.onappend._plugin(can, {name: meta.index, help: p.help, meta: p.meta, list: p.list}, meta, function(sub, meta, skip) {
|
p? /* 前端命令 */ can.onappend._plugin(can, {name: meta.index, help: p.help, meta: p.meta, list: p.list}, meta, function(sub, meta, skip) {
|
||||||
sub.run = function(event, cmds, cb) { can.core.CallFunc(p, {msg: can.request(event), cmds: cmds, cb: cb}) }
|
sub.run = function(event, cmds, cb) {
|
||||||
|
if (p.meta && p.meta[cmds[1]] && cmds[0] == ctx.ACTION) {
|
||||||
|
can.core.CallFunc(p.meta[cmds[1]], {msg: can.request(event), cmds: cmds, cb: cb})
|
||||||
|
} else if (p.meta && p.meta[cmds[0]]) {
|
||||||
|
can.core.CallFunc(p.meta[cmds[0]], {msg: can.request(event), cmds: cmds, cb: cb})
|
||||||
|
} else {
|
||||||
|
can.core.CallFunc(p, {msg: can.request(event), cmds: cmds, cb: cb})
|
||||||
|
}
|
||||||
|
}
|
||||||
can.base.isFunc(cbs) && cbs(sub, meta, skip)
|
can.base.isFunc(cbs) && cbs(sub, meta, skip)
|
||||||
}, target): /* 后端命令 */ can.run(can.request({}, meta)._event, [ctx.ACTION, ctx.COMMAND, meta.index], function(msg) { msg.Table(function(value) {
|
}, target): /* 后端命令 */ can.run(can.request({}, meta)._event, [ctx.ACTION, ctx.COMMAND, meta.index], function(msg) { msg.Table(function(value) {
|
||||||
can.onappend._plugin(can, value, meta, cbs, target)
|
can.onappend._plugin(can, value, meta, cbs, target)
|
||||||
@ -545,7 +557,6 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe
|
|||||||
},
|
},
|
||||||
topic: function(can, topic) { topic && (can._topic = topic)
|
topic: function(can, topic) { topic && (can._topic = topic)
|
||||||
can.user.topic(can, can._topic || can.misc.Search(can, chat.TOPIC) || Volcanos.meta.args.topic || (can.base.isNight()? chat.BLACK: chat.WHITE))
|
can.user.topic(can, can._topic || can.misc.Search(can, chat.TOPIC) || Volcanos.meta.args.topic || (can.base.isNight()? chat.BLACK: chat.WHITE))
|
||||||
can.page.ClassList.add(can, document.body, can.user.language(can))
|
|
||||||
},
|
},
|
||||||
background: function(can, url, target) {
|
background: function(can, url, target) {
|
||||||
can.page.style(can, target||document.body, html.BACKGROUND, url == "" || url == "void"? "": 'url("'+url+'")')
|
can.page.style(can, target||document.body, html.BACKGROUND, url == "" || url == "void"? "": 'url("'+url+'")')
|
||||||
|
17
lib/core.js
17
lib/core.js
@ -172,6 +172,23 @@ Volcanos("core", {help: "数据结构",
|
|||||||
return list
|
return list
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
SplitInput: function(item, type) { if (typeof item == lang.OBJECT) { return item }
|
||||||
|
type = type||html.TEXT; switch (item) {
|
||||||
|
case mdb.LIST: return {type: type = html.BUTTON, name: item, action: ice.AUTO}
|
||||||
|
case cli.BACK: return {type: type = html.BUTTON, name: item}
|
||||||
|
case mdb.NAME: return {type: type = html.TEXT, name: item}
|
||||||
|
case mdb.TEXT: return {type: type = html.TEXTAREA, name: item}
|
||||||
|
default: var ls = this.Split(item, " ", ":=@"), res = {type: type, name: ls[0]}; for (var i = 1; i < ls.length; i += 2) {
|
||||||
|
switch (ls[i]) {
|
||||||
|
case ":": res[mdb.TYPE] = ls[i+1]; break
|
||||||
|
case "=":
|
||||||
|
if (res[mdb.TYPE] == html.SELECT) { res["values"] = this.Split(ls[i+1]) } else { res["value"] = ls[i+1] }
|
||||||
|
break
|
||||||
|
case "@": res[ctx.ACTION] = ls[i+1]; break
|
||||||
|
}
|
||||||
|
} return res
|
||||||
|
}
|
||||||
|
},
|
||||||
Timer300ms: function(cb) { this.Timer(300, cb) },
|
Timer300ms: function(cb) { this.Timer(300, cb) },
|
||||||
Timer300: function(cb) { this.Timer(300, cb) },
|
Timer300: function(cb) { this.Timer(300, cb) },
|
||||||
Timer3s: function(cb) { this.Timer(3000, cb) },
|
Timer3s: function(cb) { this.Timer(3000, cb) },
|
||||||
|
@ -7,6 +7,8 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
},
|
},
|
||||||
|
Display: function(file) { msg.Option(ice.MSG_DISPLAY, file) },
|
||||||
|
DisplayStory: function(file) { msg.Option(ice.MSG_DISPLAY, "/plugin/story/"+file) },
|
||||||
OptionStatus: function() { return msg.Option(ice.MSG_STATUS) },
|
OptionStatus: function() { return msg.Option(ice.MSG_STATUS) },
|
||||||
OptionProcess: function() { return msg.Option(ice.MSG_PROCESS) },
|
OptionProcess: function() { return msg.Option(ice.MSG_PROCESS) },
|
||||||
OptionOrSearch: function(key) { return can.misc.Search(can, key)||msg.Option(key) },
|
OptionOrSearch: function(key) { return can.misc.Search(can, key)||msg.Option(key) },
|
||||||
@ -74,6 +76,8 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg
|
|||||||
msg[key].push(can.base.isString(value)||can.base.isFunction(value)? value: JSON.stringify(value))
|
msg[key].push(can.base.isString(value)||can.base.isFunction(value)? value: JSON.stringify(value))
|
||||||
return msg
|
return msg
|
||||||
},
|
},
|
||||||
|
Status: function(obj) { msg.Option(ice.MSG_STATUS, JSON.stringify(can.core.Item(obj, function(key, value) { return {name: key, value: value} }))) },
|
||||||
|
StatusTimeCount: function(obj) { msg.append && msg.Status(can.base.Copy({"time": can.base.Time(), "count": msg.Length()+"x"+msg.append.length}, obj)) },
|
||||||
Echo: function(res) { msg.result = msg.result || []
|
Echo: function(res) { msg.result = msg.result || []
|
||||||
for (var i = 0; i < arguments.length; i++) { msg.result.push(arguments[i]) }
|
for (var i = 0; i < arguments.length; i++) { msg.result.push(arguments[i]) }
|
||||||
return msg._hand = true, msg
|
return msg._hand = true, msg
|
||||||
@ -172,7 +176,7 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg
|
|||||||
var val = (new RegExp(key+"=([^;]*);?")).exec(document.cookie)
|
var val = (new RegExp(key+"=([^;]*);?")).exec(document.cookie)
|
||||||
return val && val.length > 0? val[1]: ""
|
return val && val.length > 0? val[1]: ""
|
||||||
}),
|
}),
|
||||||
SearchOrConf: function(can, key, def) { can.base.getValid(can.misc.Search(can, key), can.Conf(key), def) },
|
SearchOrConf: function(can, key, def) { return can.base.getValid(can.misc.Search(can, key), can.Conf(key), def) },
|
||||||
Search: shy("请求参数", function(can, key, value) { var args = {}
|
Search: shy("请求参数", function(can, key, value) { var args = {}
|
||||||
if (value == undefined && can.base.isString(key)) {
|
if (value == undefined && can.base.isString(key)) {
|
||||||
var ls = location.pathname.split(ice.PS); if (ls[1] == chat.SHARE) { args[chat.SHARE] = ls[2] }
|
var ls = location.pathname.split(ice.PS); if (ls[1] == chat.SHARE) { args[chat.SHARE] = ls[2] }
|
||||||
|
@ -422,5 +422,11 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
insertBefore: function(can, list, before) {
|
||||||
|
var item = can.page.Append(can, before.parentNode, list).first
|
||||||
|
before.parentNode.insertBefore(item, before)
|
||||||
|
return item
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -50,7 +50,10 @@ Volcanos("user", {help: "用户操作", agent: {
|
|||||||
|
|
||||||
title: function(text) { return text && (document.title = Volcanos.meta.args.name||text), document.title },
|
title: function(text) { return text && (document.title = Volcanos.meta.args.name||text), document.title },
|
||||||
topic: function(can, name) {
|
topic: function(can, name) {
|
||||||
|
can.user.mod.isCmd && (name += " simple")
|
||||||
|
can.Conf("display") && (name += " "+can.Conf("display"))
|
||||||
can.user.isMobile && (name += " mobile") && can.user.isLandscape() && (name += " landscape")
|
can.user.isMobile && (name += " mobile") && can.user.isLandscape() && (name += " landscape")
|
||||||
|
can.user.language(can) && (name += " "+can.user.language(can))
|
||||||
can.page.Modify(can, document.body, {className: name})
|
can.page.Modify(can, document.body, {className: name})
|
||||||
},
|
},
|
||||||
language: function(can) { return can.misc.Search(can, "language") },
|
language: function(can) { return can.misc.Search(can, "language") },
|
||||||
@ -269,6 +272,7 @@ Volcanos("user", {help: "用户操作", agent: {
|
|||||||
})
|
})
|
||||||
var msg = can.request(event, {_handle: ice.TRUE})
|
var msg = can.request(event, {_handle: ice.TRUE})
|
||||||
can.base.isFunc(cb) && !cb(event, button, data, list, args) && action.cancel()
|
can.base.isFunc(cb) && !cb(event, button, data, list, args) && action.cancel()
|
||||||
|
can.onkeymap.prevent(event)
|
||||||
}, _target: ui._target,
|
}, _target: ui._target,
|
||||||
})
|
})
|
||||||
if (button === true) { return action.submit(event, can, "submit"), action }
|
if (button === true) { return action.submit(event, can, "submit"), action }
|
||||||
|
107
page/index.css
107
page/index.css
@ -30,11 +30,8 @@ table.content tr { background-color:#04272f45; }
|
|||||||
table.content tr.show { background-color:red; }
|
table.content tr.show { background-color:red; }
|
||||||
table.content th { background-color:#0fbd45; padding:2px 6px; }
|
table.content th { background-color:#0fbd45; padding:2px 6px; }
|
||||||
table.content td { padding:2px 6px; }
|
table.content td { padding:2px 6px; }
|
||||||
table.content.action td:last-child, table.content.action th:last-child {
|
table.content tr:first-child { position:sticky; top:2px; }
|
||||||
background-color:#7dc6d7eb;
|
table.content.action td:last-child, table.content.action th:last-child { background-color:#7dc6d7eb; position:sticky; right:0; }
|
||||||
position:sticky;
|
|
||||||
right:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
td>input[type=button][name=create] { background-color:blue; }
|
td>input[type=button][name=create] { background-color:blue; }
|
||||||
td>input[type=button][name=remove] { background-color:red; }
|
td>input[type=button][name=remove] { background-color:red; }
|
||||||
@ -102,6 +99,7 @@ body>div.carte { background-color:#295b61; color:white; padding:4px; min-width:8
|
|||||||
body>div.carte div.item { padding:3px 12px; }
|
body>div.carte div.item { padding:3px 12px; }
|
||||||
body>div.input { background-color:#0d4142a6; padding:5px; }
|
body>div.input { background-color:#0d4142a6; padding:5px; }
|
||||||
body>div.input div.item { float:left; }
|
body>div.input div.item { float:left; }
|
||||||
|
body>div.input tr td:first-child { text-align:center; }
|
||||||
body>div.input select { width:183px; margin:5px; }
|
body>div.input select { width:183px; margin:5px; }
|
||||||
body>div.input input[type=text] { width:171px; margin:5px; }
|
body>div.input input[type=text] { width:171px; margin:5px; }
|
||||||
body>div.input input[name=username] { width:171px; }
|
body>div.input input[name=username] { width:171px; }
|
||||||
@ -251,3 +249,102 @@ body.white table.content tr:hover { background-color:#4682b46b; }
|
|||||||
body.white div.item.select, body.white div.item:hover { background-color:steelblue; }
|
body.white div.item.select, body.white div.item:hover { background-color:steelblue; }
|
||||||
body.white fieldset.float table { color:white; }
|
body.white fieldset.float table { color:white; }
|
||||||
|
|
||||||
|
div.output.card div.item {
|
||||||
|
/* background-color:#48959a66; */
|
||||||
|
padding:10px; margin:10px; height:120px; float:left;
|
||||||
|
position:relative;
|
||||||
|
border:solid 1px #e7e7e7;
|
||||||
|
}
|
||||||
|
div.output.card div.item>div.title {
|
||||||
|
font-size:1.2rem; font-weight:bold;
|
||||||
|
padding:10px;
|
||||||
|
border-bottom: solid 1px #e7e7e7;
|
||||||
|
}
|
||||||
|
div.output.card div.item>div.content {
|
||||||
|
padding:10px;
|
||||||
|
}
|
||||||
|
div.output.card div.item>div.operate {
|
||||||
|
position:absolute;
|
||||||
|
bottom:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.simple { background-color:white; }
|
||||||
|
body.simple fieldset.Header { border-bottom:solid 1px #e7e7e7; height:60px; display:block; }
|
||||||
|
body.simple fieldset.River { border-right:solid 1px #e7e7e7; }
|
||||||
|
body.simple fieldset.River>div.output { padding:10px 10px; width:200px; }
|
||||||
|
body.simple fieldset.River>div.output div.item { color:black; padding:10px 40px; border-left:none; }
|
||||||
|
body.simple fieldset.River>div.output div.item.select { background-color:white; }
|
||||||
|
body.simple fieldset.River>div.output div.item:hover { background-color:#0152d9; color:white; }
|
||||||
|
body.simple fieldset.River>div.output div.list div.item { background-color:white; color:black; border-left:none; }
|
||||||
|
body.simple fieldset.River>div.output div.list div.item.select { background-color:#0152d9; color:white; }
|
||||||
|
body.simple fieldset.River>div.output div.list div.item:hover { background-color:#0152d9; color:white; }
|
||||||
|
|
||||||
|
body.simple fieldset.Action { background-color:white; }
|
||||||
|
body.simple fieldset.Action>div.action { background:white; padding:10px; border-bottom: solid 1px red; height:38px; width:600px; }
|
||||||
|
body.simple fieldset.Action>div.action div.tabs { padding:10px; margin:10px; }
|
||||||
|
body.simple fieldset.Action.tabs>div.output { margin-top:58px; }
|
||||||
|
body.simple fieldset.Action>div.output>fieldset.plugin { box-shadow:none; }
|
||||||
|
body.simple fieldset.Action>div.output>fieldset.plugin>legend { display:none; }
|
||||||
|
body.simple fieldset.Action>div.output>fieldset.plugin>form.option { display:none; }
|
||||||
|
body.simple fieldset.Action>div.output>fieldset.plugin>div.action { display:none; }
|
||||||
|
body.simple fieldset.Action>div.output>fieldset.plugin>div.status { display:none; }
|
||||||
|
|
||||||
|
body.simple div.output.card div.item { min-width:240px; border-radius:5px; box-shadow:2px 2px 6px 1px gray; }
|
||||||
|
body.simple div.output.card div.item:hover { background-color:white; box-shadow:5px 5px 10px 5px gray; }
|
||||||
|
body.simple div.output.card div.item>div.title { border-bottom:solid 1px #e7e7e7; }
|
||||||
|
body.white.simple div.output.card input[type=button]:hover { box-shadow:2px 2px 8px 2px gray; }
|
||||||
|
body.white.simple div.output.card input[type=button] { box-shadow:2px 2px 6px 1px gray; }
|
||||||
|
body.white.simple div.output.card input[type=button] { background-color:#0152d9; font-size:0.8rem; font-weight:100; padding:5px 10px; border:none; border-radius:5px; }
|
||||||
|
|
||||||
|
body.white.simple>div.carte { background-color:white; color:black; border:solid 1px #e7e7e7; }
|
||||||
|
body.white.simple>div.carte div.item { font-size:1rem; }
|
||||||
|
body.white.simple>div.carte div.item:hover { background-color:#0152d9; color:white; }
|
||||||
|
|
||||||
|
body.white.simple input[type=button] { background-color:#0152d9; border:none; border-radius:5px; height:31px; box-shadow:2px 2px 6px 1px gray; }
|
||||||
|
body.white.simple fieldset.panel.cmd>div.output>fieldset.plugin>legend { background-color:white; color:black; border-radius:0px; }
|
||||||
|
|
||||||
|
div.switch { color:#0d1bc2; width:12px; float:left; transform: rotate(90deg) translate(2px, 0px); }
|
||||||
|
div.switch.open { transform: rotate(180deg) translate(-4px, 1px); }
|
||||||
|
|
||||||
|
body fieldset.inner>div.output td.content>div.tabs { display:none; }
|
||||||
|
body fieldset.inner>div.output td.content>div.path { display:none; }
|
||||||
|
|
||||||
|
body.simple fieldset.inner>div.output td.content>div.tabs { background:#546E7A; padding:0px; height:38px; overflow:auto; display:block; }
|
||||||
|
body.simple fieldset.inner>div.output td.content>div.tabs div.tabs { background:#B0BEC5; color:white; font-size:1rem; padding:10px; float:left; }
|
||||||
|
body.simple fieldset.inner>div.output td.content>div.tabs div.tabs.select { background:#455A64; box-shadow:0px 0px 5px 1px grey; }
|
||||||
|
body.simple fieldset.inner>div.output td.content>div.path {
|
||||||
|
background:#455A64; color:white; padding:4px 10px;
|
||||||
|
margin-bottom:4px; box-shadow:0px 0px 5px 1px #90A4AE;
|
||||||
|
clear:both; display:block;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.simple fieldset.inner>div.output td.project div.project { width:240px; }
|
||||||
|
body.simple fieldset.inner>div.output td.project div.project div.kind { color: white; font-size: 1.2rem; font-family: monospace; height:18px; }
|
||||||
|
body.simple fieldset.inner>div.output td.project div.project div.kind:first-child { position:sticky; top:0 }
|
||||||
|
body.simple fieldset.inner>div.output div.content { background-color:#263238; font-size:16px; }
|
||||||
|
body.simple fieldset.inner>div.output div.toggle { display:none; }
|
||||||
|
|
||||||
|
body.white.simple fieldset.inner>div.output div.project div.action div.item { float:left; width:auto; padding:unset; }
|
||||||
|
body.white.simple fieldset.inner>div.output div.project { background:lightyellow; }
|
||||||
|
body.white.simple fieldset.inner>div.output div.project div.item { color:black; font-size:16px; width:-webkit-fill-available; }
|
||||||
|
body.white.simple fieldset.inner>div.output div.project div.item:hover { background:#e3e6f1; }
|
||||||
|
body.white.simple fieldset.inner>div.output div.content { background-color:white; font-size:16px; }
|
||||||
|
body.white.simple fieldset.inner>div.output div.content tr.select { background-color:white; }
|
||||||
|
body.white.simple fieldset.inner>div.output div.content tr.select td.line { background-color:white; color:black; border:none; }
|
||||||
|
body.white.simple fieldset.inner>div.output div.content tr.select td.text { border:solid 1px #e7e7e7; }
|
||||||
|
body.white.simple fieldset.inner>div.output div.content td.line { background-color:white; color:#237893; padding-top:4px; border-right:none; }
|
||||||
|
body.white.simple fieldset.inner>div.output div.content td.text { color:black; padding-top:2px; border:solid 1px white; }
|
||||||
|
body.white.simple fieldset.inner>div.output div.content td.text span.string { color:#a31515; }
|
||||||
|
body.white.simple fieldset.inner>div.output div.content td.text span.function { color:#795e26; }
|
||||||
|
body.white.simple fieldset.inner>div.output div.content td.text span.keyword { color:blue; }
|
||||||
|
body.white.simple td.content>div.content { background: white; box-shadow:0px 0px 5px 1px grey; }
|
||||||
|
body.white.simple div.status { color:black; }
|
||||||
|
|
||||||
|
body.white fieldset.inner>div.output td.content>div.tabs { background:#f3f3f3; }
|
||||||
|
body.white fieldset.inner>div.output td.content>div.tabs div.tabs { background:#ececec; color:black; font-size:1rem; padding:10px; float:left; }
|
||||||
|
body.white fieldset.inner>div.output td.content>div.tabs div.tabs.select { background: white; box-shadow:0px 0px 5px 1px grey; }
|
||||||
|
body.white fieldset.inner>div.output td.content>div.path { background:white; color:black; box-shadow:0px 0px 5px 1px grey; }
|
||||||
|
body.white.simple fieldset.plugin div.output.json div.item span { color:black; }
|
||||||
|
body.white.simple fieldset.plugin div.output.json div.item span.key { color:blue; }
|
||||||
|
body.simple fieldset.plugin div.output.json div.item span.string { color:magenta; }
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ Volcanos({name: "chat", panels: [
|
|||||||
{name: "vimer", help: "编辑器", index: "web.code.vimer"},
|
{name: "vimer", help: "编辑器", index: "web.code.vimer"},
|
||||||
{name: "repos", help: "代码库", index: "web.code.git.status"},
|
{name: "repos", help: "代码库", index: "web.code.git.status"},
|
||||||
{name: "plan", help: "任务表", index: "web.team.plan"},
|
{name: "plan", help: "任务表", index: "web.team.plan"},
|
||||||
|
{name: "todo", help: "待办项", index: "web.team.todo"},
|
||||||
{name: "ctx", help: "上下文", index: "web.wiki.word"},
|
{name: "ctx", help: "上下文", index: "web.wiki.word"},
|
||||||
]},
|
]},
|
||||||
}},
|
}},
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) {
|
||||||
can.onaction.layout(can, can.misc.SearchOrConf(can, chat.LAYOUT)||Volcanos.meta.args.layout||"auto", true)
|
|
||||||
var river = can.Conf(chat.RIVER), storm = can.Conf(chat.STORM)
|
var river = can.Conf(chat.RIVER), storm = can.Conf(chat.STORM)
|
||||||
can.onmotion.clear(can), can.core.Next(msg.Table(), function(item, next) {
|
can.onmotion.clear(can), can.core.Next(msg.Table(), function(item, next) {
|
||||||
item.height = can.Conf(html.HEIGHT)-can.Conf(html.MARGIN_Y)
|
item.height = can.Conf(html.HEIGHT)-can.Conf(html.MARGIN_Y)
|
||||||
@ -10,7 +9,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
|
|||||||
can.onappend.plugin(can, item, function(sub, meta, skip) {
|
can.onappend.plugin(can, item, function(sub, meta, skip) {
|
||||||
can.onimport._plugin(can, river, storm, sub, meta), skip || next()
|
can.onimport._plugin(can, river, storm, sub, meta), skip || next()
|
||||||
})
|
})
|
||||||
}, function() { can.onimport._menu(can, msg), can.onkeymap._init(can) })
|
}, function() {
|
||||||
|
can.onaction.layout(can, can.misc.SearchOrConf(can, chat.LAYOUT)||Volcanos.meta.args.layout||"auto", true)
|
||||||
|
can.onimport._menu(can, msg), can.onkeymap._init(can)
|
||||||
|
})
|
||||||
},
|
},
|
||||||
_plugin: function(can, river, storm, sub, meta) { sub._target._meta = meta
|
_plugin: function(can, river, storm, sub, meta) { sub._target._meta = meta
|
||||||
sub.run = function(event, cmds, cb) { var msg = sub.request(event)
|
sub.run = function(event, cmds, cb) { var msg = sub.request(event)
|
||||||
@ -98,14 +100,30 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, cb, t
|
|||||||
}}])
|
}}])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
can.onengine.plugin(can, "cookie", shy("提示", {}, ["text", "list", "back"], function(msg, cmds) {
|
||||||
|
can.core.Item(can.misc.Cookie(can), function(key, value) {
|
||||||
|
msg.Push("key", key)
|
||||||
|
msg.Push("value", value)
|
||||||
|
})
|
||||||
|
}))
|
||||||
|
can.onengine.plugin(can, "alert", shy("提示", {}, ["text", "list", "back"], function(msg, cmds) {
|
||||||
|
can.user.alert(cmds[0])
|
||||||
|
}))
|
||||||
can.onengine.plugin(can, "info", shy("信息", {}, ["text", "list", "back"], function(msg, cmds) {
|
can.onengine.plugin(can, "info", shy("信息", {}, ["text", "list", "back"], function(msg, cmds) {
|
||||||
msg.Echo(JSON.stringify(can))
|
msg.Echo("hello world")
|
||||||
}))
|
}))
|
||||||
can.onengine.plugin(can, "log", shy("日志", {}, ["text", "list", "back"], function(msg, cmds) {
|
can.onengine.plugin(can, "log", shy("日志", {}, ["text", "list", "back"], function(msg, cmds) {
|
||||||
console.log(cmds[0])
|
console.log(cmds[0])
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
can.onengine.plugin(can, "nfs.save", shy("保存文件", {}, ["file=hi.txt", "text:textarea='hello world'", "save:button"], function(msg, cmds, cb) {
|
||||||
|
can.misc.runAction(can, msg, cmds, cb, kit.Dict(
|
||||||
|
"save", function(cmds) { can.user.downloads(can, cmds[1], cmds[0]) }
|
||||||
|
))
|
||||||
|
}))
|
||||||
|
|
||||||
can.onengine.plugin(can, "pie", shy("比例图", {}, ["list", "back"], function(msg, cmds) {
|
can.onengine.plugin(can, "pie", shy("比例图", {}, ["list", "back"], function(msg, cmds) {
|
||||||
msg.Option(ice.MSG_DISPLAY, "/plugin/story/pie.js")
|
msg.DisplayStory("pie.js")
|
||||||
msg.Push("value", 200)
|
msg.Push("value", 200)
|
||||||
msg.Push("value", 300)
|
msg.Push("value", 300)
|
||||||
msg.Push("value", 400)
|
msg.Push("value", 400)
|
||||||
|
@ -1,15 +1,30 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) {
|
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.Conf(aaa.USERNICK, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME)||can.Conf(aaa.USERNICK))
|
||||||
|
|
||||||
|
can.onengine.plugin(can, "topic", shy("主题", {
|
||||||
|
"demo": function(can, msg, cmds) { can.onlayout.topic(can, cmds[0]) },
|
||||||
|
}, ["topic:select=white,black", "run:button", "demo:button"], function(msg, cmds) {
|
||||||
|
can.onlayout.topic(can, cmds[0])
|
||||||
|
}))
|
||||||
|
|
||||||
|
can.onlayout.topic(can, can.Conf("topic"))
|
||||||
|
if (can.user.mod.isCmd) {
|
||||||
|
can.onmotion.hidden(can, can._fields)
|
||||||
|
can.page.ClassList.add(can, document.body, "simple")
|
||||||
|
}
|
||||||
|
|
||||||
can.onmotion.clear(can)
|
can.onmotion.clear(can)
|
||||||
can.onimport._agent(can, msg, target)
|
can.onimport._agent(can, msg, target)
|
||||||
can.onimport._grant(can, msg, target)
|
can.onimport._grant(can, msg, target)
|
||||||
can.onimport._title(can, msg, target)
|
if (can.Conf("display") != "simple") {
|
||||||
can.onimport._state(can, msg, target)
|
can.onimport._title(can, msg, target)
|
||||||
can.onimport._search(can, msg, target)
|
can.onimport._state(can, msg, target)
|
||||||
can.onimport._background(can, msg, target)
|
can.onimport._search(can, msg, target)
|
||||||
can.onimport._avatar(can, msg, target)
|
can.onimport._background(can, msg, target)
|
||||||
can.onimport._menus(can, msg, target)
|
can.onimport._avatar(can, msg, target)
|
||||||
|
can.onimport._menus(can, msg, target)
|
||||||
|
|
||||||
|
}
|
||||||
can.base.isFunc(cb) && cb(msg)
|
can.base.isFunc(cb) && cb(msg)
|
||||||
},
|
},
|
||||||
_agent: function(can, msg, target) {
|
_agent: function(can, msg, target) {
|
||||||
@ -61,7 +76,9 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
}}] }])
|
}}] }])
|
||||||
can.user.isMobile && can.page.Modify(can, ui, {style: {float: html.RIGHT}})
|
can.user.isMobile && can.page.Modify(can, ui, {style: {float: html.RIGHT}})
|
||||||
},
|
},
|
||||||
_background: function(can, msg) { if (can.user.isExtension || can.user.isLocalFile) { return }
|
_background: function(can, msg) {
|
||||||
|
if (can.Conf("background") == "_") { return }
|
||||||
|
if (can.user.isExtension || can.user.isLocalFile) { return }
|
||||||
msg.Option(aaa.BACKGROUND) && can.onlayout.background(can, "/share/local/background", document.body)
|
msg.Option(aaa.BACKGROUND) && can.onlayout.background(can, "/share/local/background", document.body)
|
||||||
},
|
},
|
||||||
_avatar: function(can, msg) { if (can.user.isExtension || can.user.isLocalFile) { return }
|
_avatar: function(can, msg) { if (can.user.isExtension || can.user.isLocalFile) { return }
|
||||||
|
@ -6,18 +6,22 @@ fieldset.inner>div.action>div.tabs:hover { background-color:#013b675c; }
|
|||||||
fieldset.inner>div.action>div.tabs.select { background-color:#013b675c; border-bottom:solid 2px #7999b2; font-size:1rem; height:19px; }
|
fieldset.inner>div.action>div.tabs.select { background-color:#013b675c; border-bottom:solid 2px #7999b2; font-size:1rem; height:19px; }
|
||||||
|
|
||||||
fieldset.inner>div.output { color:white; }
|
fieldset.inner>div.output { color:white; }
|
||||||
fieldset.inner>div.output div.content { color:white; font-size:1.2rem; font-family:monospace; position:relative; }
|
fieldset.inner>div.output td.project div.project { width:180px; }
|
||||||
|
fieldset.inner>div.output div.project div.kind { background-color:cornflowerblue; color:black; text-align:center; padding:10px; clear:both; }
|
||||||
|
fieldset.inner>div.output div.project div.item div.name { padding:0 16px; }
|
||||||
|
fieldset.inner>div.output div.content { color:white; font-size:1.1rem; font-family:monospace; position:relative; }
|
||||||
fieldset.inner>div.output div.content tr.select { background-color:#0000ff6b; }
|
fieldset.inner>div.output div.content tr.select { background-color:#0000ff6b; }
|
||||||
fieldset.inner>div.output div.content tr.select td.line { background-color:blue; border:solid 1px red; border-right:solid 2px red; }
|
fieldset.inner>div.output div.content tr.select td.line { background-color:blue; border:solid 1px red; border-right:solid 2px red; }
|
||||||
fieldset.inner>div.output div.content td.line:hover { background-color:green; }
|
fieldset.inner>div.output div.content td.line:hover { background-color:green; }
|
||||||
fieldset.inner>div.output div.content td.line { text-align:right; padding:0 6px; border-right:solid 2px red; }
|
fieldset.inner>div.output div.content td.line { position:sticky; left:0; text-align:right; padding:0 6px; border-right:solid 2px red; }
|
||||||
fieldset.inner>div.output div.content td.text { text-align:left; white-space:pre; padding-left:10px; height:20px; }
|
fieldset.inner>div.output div.content td.text { text-align:left; white-space:pre; padding-left:10px; cursor:text; }
|
||||||
fieldset.inner>div.output div.content td.text span.comment { background-color:blue; color:cyan; }
|
fieldset.inner>div.output div.content td.text span.comment { background-color:blue; color:cyan; }
|
||||||
fieldset.inner>div.output div.content td.text span.keyword { color:yellow; font-weight:bold; }
|
fieldset.inner>div.output div.content td.text span.keyword { color:yellow; font-weight:bold; }
|
||||||
fieldset.inner>div.output div.content td.text span.datatype { color:lightgreen; font-weight:bold; }
|
fieldset.inner>div.output div.content td.text span.datatype { color:lightgreen; font-weight:bold; }
|
||||||
fieldset.inner>div.output div.content td.text span.function { color:cyan; font-weight:bold; }
|
fieldset.inner>div.output div.content td.text span.function { color:cyan; font-weight:bold; }
|
||||||
fieldset.inner>div.output div.content td.text span.constant { color:magenta; }
|
fieldset.inner>div.output div.content td.text span.constant { color:magenta; }
|
||||||
fieldset.inner>div.output div.content td.text span.string { color:magenta; }
|
fieldset.inner>div.output div.content td.text span.string { color:magenta; }
|
||||||
|
fieldset.inner>div.output div.content legend { margin-right:4px; height:30px; float:left; }
|
||||||
fieldset.inner>div.output div.profile>div.output>fieldset>legend { padding:0.1rem; float:left; }
|
fieldset.inner>div.output div.profile>div.output>fieldset>legend { padding:0.1rem; float:left; }
|
||||||
fieldset.inner>div.output div.display { border:solid 1px greenyellow; }
|
fieldset.inner>div.output div.display { border:solid 1px greenyellow; }
|
||||||
|
|
||||||
|
@ -1,7 +1,27 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target) {
|
Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target) {
|
||||||
can.onengine.plugin(can, "can.code.inner.plugin", shy("插件", {}, [{type: "button", name: "list", action: "auto"}, "back"], function(msg, cmds) {
|
can.onengine.plugin(can, "can.code.inner.plugin", shy("插件", {}, [ice.LIST, ice.BACK], function(msg, cmds) {
|
||||||
console.log("what")
|
console.log("what")
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
can.onengine.plugin(can, "can.code.inner.keymap", shy("按键", {}, ["mode", "key", ice.LIST, ice.BACK], function(msg, cmds) {
|
||||||
|
can.core.Item(can.onkeymap._mode, function(mode, value) {
|
||||||
|
(!cmds[0] || cmds[0] == mode) && can.core.Item(value, function(key, func) {
|
||||||
|
if (cmds[0] == mode && cmds[1] == key) {
|
||||||
|
msg.Push("key", "mode")
|
||||||
|
msg.Push("value", mode)
|
||||||
|
msg.Push("key", "key")
|
||||||
|
msg.Push("value", key)
|
||||||
|
msg.Push("key", "help")
|
||||||
|
msg.Push("value", func.help)
|
||||||
|
msg.Push("key", "func")
|
||||||
|
msg.Push("value", func.toString())
|
||||||
|
} else if (!cmds[0] || !cmds[1]) {
|
||||||
|
func.help && msg.Push(kit.Dict("mode", mode, "key", key, "help", func.help))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}), msg.StatusTimeCount()
|
||||||
|
}))
|
||||||
|
|
||||||
can.onengine.listen(can, "orientationchange", function(event) {
|
can.onengine.listen(can, "orientationchange", function(event) {
|
||||||
if (can.user.mod.isCmd) { can.ConfHeight(window.innerHeight), can.ConfWidth(window.innerWidth) }
|
if (can.user.mod.isCmd) { can.ConfHeight(window.innerHeight), can.ConfWidth(window.innerWidth) }
|
||||||
can.user.toast(can, can.ConfHeight()+"")
|
can.user.toast(can, can.ConfHeight()+"")
|
||||||
@ -10,13 +30,17 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
|
|
||||||
var paths = can.core.Split(can.Option(nfs.PATH), ice.FS); can.Option(nfs.PATH, paths[0])
|
var paths = can.core.Split(can.Option(nfs.PATH), ice.FS); can.Option(nfs.PATH, paths[0])
|
||||||
var files = can.core.Split(can.Option(nfs.FILE), ice.FS); can.Option(nfs.FILE, files[0])
|
var files = can.core.Split(can.Option(nfs.FILE), ice.FS); can.Option(nfs.FILE, files[0])
|
||||||
can.tabview = can.tabview||{}, can.tabview[can.onexport.keys(can)] = msg
|
// can.tabview = can.tabview||{}, can.tabview[can.onexport.keys(can)] = msg
|
||||||
|
can.tabview = can.tabview||{}
|
||||||
can.history = can.history||[], can.toolkit = {}, can.extentions = {}, can.profile_size = {}
|
can.history = can.history||[], can.toolkit = {}, can.extentions = {}, can.profile_size = {}
|
||||||
|
|
||||||
can.onmotion.clear(can), can.onlayout.profile(can)
|
can.onmotion.clear(can), can.onlayout.profile(can)
|
||||||
can.onimport._project(can, can.ui.project)
|
can.onimport._project(can, can.ui.project)
|
||||||
can.onimport._profile(can, can.ui.profile)
|
can.onimport._profile(can, can.ui.profile)
|
||||||
can.onimport._display(can, can.ui.display)
|
can.onimport._display(can, can.ui.display)
|
||||||
|
|
||||||
|
can.ui._tabs = can.page.insertBefore(can, [{view: "tabs"}], can.ui.content)
|
||||||
|
can.ui._path = can.page.insertBefore(can, [{view: "path"}], can.ui.content)
|
||||||
can.base.isFunc(cb) && cb(msg)
|
can.base.isFunc(cb) && cb(msg)
|
||||||
|
|
||||||
can.onimport.tabview(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE))
|
can.onimport.tabview(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE))
|
||||||
@ -25,7 +49,8 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
can.onmotion.delay(can, function() {
|
can.onmotion.delay(can, function() {
|
||||||
can.core.Next(files.slice(1), function(file, next) {
|
can.core.Next(files.slice(1), function(file, next) {
|
||||||
can.onimport.tabview(can, can.Option(nfs.PATH), file, can.Option(nfs.LINE), next)
|
can.onimport.tabview(can, can.Option(nfs.PATH), file, can.Option(nfs.LINE), next)
|
||||||
}, function() { can.onimport.tabview(can, paths[0], files[0]) })
|
// }, function() { can.onimport.tabview(can, paths[0], files[0]) })
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
can.user.isMobile && !can.user.isLandscape() && can.onmotion.hidden(can, can.ui.project)
|
can.user.isMobile && !can.user.isLandscape() && can.onmotion.hidden(can, can.ui.project)
|
||||||
@ -97,9 +122,35 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
},
|
},
|
||||||
|
|
||||||
project: function(can, path, cb) { can.onmotion.clear(can, can.ui.project)
|
project: function(can, path, cb) { can.onmotion.clear(can, can.ui.project)
|
||||||
|
// can.onappend._action(can, ["执行", "预览", "保存"], can.page.Append(can, can.ui.project, [{view: "action"}]).first, {
|
||||||
|
// "执行": function(event) { can.onaction["执行"](event, can) },
|
||||||
|
// "预览": function(event) { can.onaction["展示"](event, can) },
|
||||||
|
// "保存": function(event) { can.onaction["保存"](event, can) },
|
||||||
|
// })
|
||||||
|
// can.page.Append(can, can.ui.project, [{view: "item", list: [{type: "input", data: {type: "text"}, onkeyup: function(event) {
|
||||||
|
// can.page.Select(can, can.ui.project, "div.item", function(item) {
|
||||||
|
// if (item.innerText.indexOf(event.target.value) == -1) {
|
||||||
|
// can.page.ClassList.add(can, item, "hide")
|
||||||
|
// } else {
|
||||||
|
// can.page.ClassList.del(can, item, "hide")
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// }} ]}, ])
|
||||||
|
var project = can.page.Append(can, can.ui.project, [
|
||||||
|
{view: "kind", inner: "projects", onclick: function(event) {
|
||||||
|
can.onmotion.toggle(can, event.target.nextSibling)
|
||||||
|
}}, {view: "projects"},
|
||||||
|
{view: "kind", inner: "icebergs", onclick: function(event) {
|
||||||
|
can.onmotion.toggle(can, event.target.nextSibling)
|
||||||
|
}}, {view: "icebergs"},
|
||||||
|
{view: "kind", inner: "volcanos", onclick: function(event) {
|
||||||
|
can.onmotion.toggle(can, event.target.nextSibling)
|
||||||
|
}}, {view: "volcanos"},
|
||||||
|
])
|
||||||
|
|
||||||
can.core.Next(path, function(path, next, index, array) {
|
can.core.Next(path, function(path, next, index, array) {
|
||||||
var list = can.ui.project; if (array.length > 1) {
|
var list = project.projects; if (array.length > 1) {
|
||||||
var ui = can.page.Append(can, can.ui.project, [{view: [html.ITEM, html.DIV, path], onclick: function(event) {
|
var ui = can.page.Append(can, project.projects, [{view: [html.ITEM, html.DIV, path], onclick: function(event) {
|
||||||
can.onmotion.toggle(can, ui.list)
|
can.onmotion.toggle(can, ui.list)
|
||||||
}}, {view: html.LIST}]); list = ui.list
|
}}, {view: html.LIST}]); list = ui.list
|
||||||
if (index > 0) { ui.item.click() }
|
if (index > 0) { ui.item.click() }
|
||||||
@ -111,6 +162,16 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
}, list), can.onimport.layout(can), can.Status("文件数", msg.Length()), next()
|
}, list), can.onimport.layout(can), can.Status("文件数", msg.Length()), next()
|
||||||
}, true)
|
}, true)
|
||||||
}, function() { can.base.isFunc(cb) && cb() })
|
}, function() { can.base.isFunc(cb) && cb() })
|
||||||
|
|
||||||
|
can.run(can.request({}, {fields: "index"})._event, [ctx.ACTION, ctx.COMMAND, "search", "command"], function(msg) {
|
||||||
|
can.onappend.tree(can, msg.Table(), ctx.INDEX, ice.PT, function(event, item) {
|
||||||
|
can.onimport.tabview(can, can.Option(nfs.PATH), item.index, ctx.INDEX)
|
||||||
|
}, project.icebergs)
|
||||||
|
})
|
||||||
|
|
||||||
|
can.onappend.tree(can, can.core.Item(can.onengine.plugin.meta, function(key) { return {index: can.base.trimPrefix(key, "can.")} }), ctx.INDEX, ice.PT, function(event, item) {
|
||||||
|
can.onimport.tabview(can, can.Option(nfs.PATH), "can."+item.index, ctx.INDEX)
|
||||||
|
}, project.volcanos)
|
||||||
},
|
},
|
||||||
tabview: function(can, path, file, line, cb, skip, skip2) { var key = can.onexport.keys(can, file, path)
|
tabview: function(can, path, file, line, cb, skip, skip2) { var key = can.onexport.keys(can, file, path)
|
||||||
if (!skip && can.tabview[key]) { can.user.mod.isCmd && can.user.title(path+file)
|
if (!skip && can.tabview[key]) { can.user.mod.isCmd && can.user.title(path+file)
|
||||||
@ -121,9 +182,12 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
|
|
||||||
function show(msg) { can.tabview[key] = msg
|
function show(msg) { can.tabview[key] = msg
|
||||||
var skip2 = skip
|
var skip2 = skip
|
||||||
msg._tab = can.onappend.tabs(can, [{name: file.split(ice.PS).pop(), text: file}], function(event, meta) {
|
msg._tab = can.onappend.tabs(can, [{name: file.split(msg.Option(nfs.LINE) == ctx.INDEX? ice.PT: ice.PS).pop(), text: file}], function(event, meta) {
|
||||||
can.onimport.tabview(can, path, file, "", cb, false, skip2), cb = null, skip2 = false
|
can.onimport.tabview(can, path, file, "", cb, false, skip2), cb = null, skip2 = false
|
||||||
}, function(item) { delete(can.tabview[key]) })
|
}, function(item) { delete(can.tabview[key]) }, can.ui._tabs, function(item) {
|
||||||
|
can.page.Modify(can, item, {onmouseenter: function(event) {
|
||||||
|
}})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
can.Option({path: path, file: file, line: line||1})
|
can.Option({path: path, file: file, line: line||1})
|
||||||
@ -189,33 +253,29 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
}, target)
|
}, target)
|
||||||
},
|
},
|
||||||
layout: function(can) {
|
layout: function(can) {
|
||||||
var height = can.ConfHeight()-(can.user.isMobile && can.user.mod.isCmd? (can.user.isLandscape()? 14: 54): 0)-(can.user.isWindows? 20: 0),
|
var width = can.ConfWidth()+(can.user.isMobile && can.user.mod.isCmd && can.user.isLandscape()? 16: 0)-(can.user.isWindows && !can.user.mod.isCmd? 20: 0)
|
||||||
width = can.ConfWidth()-(can.user.isWindows && !can.user.mod.isCmd? 20: 0)+(can.user.isMobile && can.user.mod.isCmd && can.user.isLandscape()? 16: 0)
|
|
||||||
if (!height || height > window.innerHeight) { height = window.innerHeight - 200 }
|
|
||||||
if (can.user.isMobile && can.user.isLandscape() && height < 200) { height = 200 }
|
|
||||||
|
|
||||||
can.page.styleWidth(can, can.ui.profile_output, can.profile_size[can.onexport.keys(can)]||(width-can.ui.project.offsetWidth)/2)
|
can.page.styleWidth(can, can.ui.profile_output, can.profile_size[can.onexport.keys(can)]||(width-can.ui.project.offsetWidth)/2)
|
||||||
can.page.styleWidth(can, can.ui.content, width-can.ui.project.offsetWidth-can.ui.profile.offsetWidth)
|
can.page.styleWidth(can, can.ui.content, width-can.ui.project.offsetWidth-can.ui.profile.offsetWidth)
|
||||||
can.page.styleWidth(can, can.ui.display, width-can.ui.project.offsetWidth)
|
can.page.styleWidth(can, can.ui.display, width-can.ui.project.offsetWidth)
|
||||||
|
|
||||||
if (!height) { return }
|
var height = can.ConfHeight()-(can.user.isMobile && can.user.mod.isCmd? (can.user.isLandscape()? 14: 54): 0)-(can.user.isWindows? 20: 0)
|
||||||
can.page.style(can, can.ui.content, can.user.mod.isCmd? html.HEIGHT: html.MAX_HEIGHT, height)
|
if (!height || height > window.innerHeight) { height = window.innerHeight - 200 }
|
||||||
if (can.ui.project.style.display != html.NONE) {
|
if (can.user.isMobile && can.user.isLandscape() && height < 200) { height = 200 }
|
||||||
if (!can.user.mod.isCmd && can.ui.display.style.display != html.NONE) {
|
|
||||||
can.page.styleHeight(can, can.ui.project, can.ui.content.offsetHeight+can.ui.display.offsetHeight+html.ACTION_HEIGHT)
|
var rest = can.ui.display.offsetHeight+can.ui._path.offsetHeight+can.ui._tabs.offsetHeight+5
|
||||||
|
if (can.user.mod.isCmd) { can.page.styleHeight(can, can.ui.project, height+2*html.ACTION_HEIGHT)
|
||||||
|
can.page.styleHeight(can, can.ui.content, (can.ui.project.offsetHeight||height)-rest)
|
||||||
|
can.page.styleHeight(can, can.ui.profile_output, can.ui.project.offsetHeight-html.ACTION_HEIGHT-2)
|
||||||
|
} else {
|
||||||
|
can.page.style(can, can.ui.content, can.user.mod.isCmd? html.HEIGHT: html.MAX_HEIGHT, height)
|
||||||
|
can.page.styleHeight(can, can.ui.project, can.ui.content.offsetHeight+rest)
|
||||||
|
if (can.page.ClassList.has(can, can._fields, "full")) {
|
||||||
|
can.page.styleHeight(can, can.ui.profile_output, can.ui.content.offsetHeight)
|
||||||
} else {
|
} else {
|
||||||
can.page.styleHeight(can, can.ui.project, can.ui.content.offsetHeight)
|
can.page.styleHeight(can, can.ui.profile_output, can.ui.content.offsetHeight-html.ACTION_HEIGHT-2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (can.user.mod.isCmd) {
|
|
||||||
can.page.styleHeight(can, can.ui.content, (can.ui.project.offsetHeight||height)-can.ui.display.offsetHeight)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (can.page.ClassList.has(can, can._fields, "full")) {
|
|
||||||
can.page.styleHeight(can, can.ui.profile_output, can.ui.content.offsetHeight)
|
|
||||||
} else {
|
|
||||||
can.page.styleHeight(can, can.ui.profile_output, can.ui.content.offsetHeight-html.ACTION_HEIGHT-2)
|
|
||||||
}
|
|
||||||
can.page.Select(can, can.ui.profile_output, html.IFRAME, function(item) {
|
can.page.Select(can, can.ui.profile_output, html.IFRAME, function(item) {
|
||||||
can.page.style(can, item,
|
can.page.style(can, item,
|
||||||
html.HEIGHT, can.ui.profile_output.offsetHeight-4,
|
html.HEIGHT, can.ui.profile_output.offsetHeight-4,
|
||||||
@ -239,6 +299,12 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
},
|
},
|
||||||
}, [""])
|
}, [""])
|
||||||
Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], _init: function(can, msg, cb, skip) {
|
Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], _init: function(can, msg, cb, skip) {
|
||||||
|
if (msg.Option(ctx.INDEX)) {
|
||||||
|
can.ui._path.innerText = msg.Option(nfs.FILE)
|
||||||
|
} else {
|
||||||
|
can.ui._path.innerText = can.base.Path(msg.Option(nfs.PATH), msg.Option(nfs.FILE))
|
||||||
|
}
|
||||||
|
|
||||||
if (can.onmotion.cache(can, function(cache_data) {
|
if (can.onmotion.cache(can, function(cache_data) {
|
||||||
can.file && (cache_data[can.file] = {current: can.current, max: can.max,
|
can.file && (cache_data[can.file] = {current: can.current, max: can.max,
|
||||||
profile_display: can.ui.profile.style.display, display_display: can.ui.display.style.display,
|
profile_display: can.ui.profile.style.display, display_display: can.ui.display.style.display,
|
||||||
@ -250,6 +316,7 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
|||||||
can.page.Modify(can, can.ui.profile, {style: {display: p? p.profile_display: html.NONE}})
|
can.page.Modify(can, can.ui.profile, {style: {display: p? p.profile_display: html.NONE}})
|
||||||
can.page.Modify(can, can.ui.display, {style: {display: p? p.display_display: html.NONE}})
|
can.page.Modify(can, can.ui.display, {style: {display: p? p.display_display: html.NONE}})
|
||||||
can.onmotion.select(can, can._action, html.DIV_TABS, msg._tab)
|
can.onmotion.select(can, can._action, html.DIV_TABS, msg._tab)
|
||||||
|
can.onmotion.select(can, can.ui._tabs, html.DIV_TABS, msg._tab)
|
||||||
can.onmotion.delay(can, function() { can.onimport.layout(can)
|
can.onmotion.delay(can, function() { can.onimport.layout(can)
|
||||||
msg.Option(ctx.INDEX) && can.onmotion.focus(can, can.page.Select(can, can.ui.content, html.OPTION_ARGS)[0])
|
msg.Option(ctx.INDEX) && can.onmotion.focus(can, can.page.Select(can, can.ui.content, html.OPTION_ARGS)[0])
|
||||||
})
|
})
|
||||||
@ -260,6 +327,9 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
|||||||
|
|
||||||
if (msg.Option(ctx.INDEX)) {
|
if (msg.Option(ctx.INDEX)) {
|
||||||
can.onimport.plugin(can, {index: msg.Option(ctx.INDEX)}, can.ui.content, function(sub) {
|
can.onimport.plugin(can, {index: msg.Option(ctx.INDEX)}, can.ui.content, function(sub) {
|
||||||
|
can.onimport.layout(can)
|
||||||
|
can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth(can.ui.content.offsetWidth))
|
||||||
|
can.page.style(can, sub._output, html.MAX_HEIGHT, sub.ConfHeight(can.ui.content.offsetHeight-2*html.ACTION_HEIGHT))
|
||||||
can.onmotion.delay(can, function() {
|
can.onmotion.delay(can, function() {
|
||||||
can.onmotion.focus(can, can.page.Select(can, can.ui.content, html.OPTION_ARGS)[0])
|
can.onmotion.focus(can, can.page.Select(can, can.ui.content, html.OPTION_ARGS)[0])
|
||||||
}), can.base.isFunc(cb) && cb()
|
}), can.base.isFunc(cb) && cb()
|
||||||
@ -276,6 +346,7 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
|||||||
p && p.render && can.onaction["展示"]({}, can)
|
p && p.render && can.onaction["展示"]({}, can)
|
||||||
p && p.engine && can.onaction["执行"]({}, can)
|
p && p.engine && can.onaction["执行"]({}, can)
|
||||||
}
|
}
|
||||||
|
can.onimport.layout(can)
|
||||||
if (!can.page.ClassList.has(can, can._fields, chat.STORY) && !can.user.mod.isCmd) {
|
if (!can.page.ClassList.has(can, can._fields, chat.STORY) && !can.user.mod.isCmd) {
|
||||||
can.page.style(can, can.ui.project, html.MIN_HEIGHT, can.ConfHeight()-200)
|
can.page.style(can, can.ui.project, html.MIN_HEIGHT, can.ConfHeight()-200)
|
||||||
can.page.style(can, can.ui.content, html.MIN_HEIGHT, can.ConfHeight()-200)
|
can.page.style(can, can.ui.content, html.MIN_HEIGHT, can.ConfHeight()-200)
|
||||||
@ -323,21 +394,20 @@ Volcanos("onkeymap", {help: "导入数据", _init: function(can, msg, cb, target
|
|||||||
_insert: function(event, can) {},
|
_insert: function(event, can) {},
|
||||||
_mode: {
|
_mode: {
|
||||||
plugin: {
|
plugin: {
|
||||||
Escape: function(event, can) { can.actions(event, "清屏") },
|
Escape: shy("清屏", function(event, can) { can.actions(event, "清屏") }),
|
||||||
g: function(event, can) { can.actions(event, "搜索") },
|
g: shy("搜索", function(event, can) { can.actions(event, "搜索") }),
|
||||||
f: function(event, can) { can.actions(event, "打开") },
|
f: shy("打开文件", function(event, can) { can.actions(event, "打开") }),
|
||||||
t: function(event, can) { can.actions(event, "添加") },
|
t: shy("添加命令", function(event, can) { can.actions(event, "添加") }),
|
||||||
p: function(event, can) { can.actions(event, "插件") },
|
p: shy("添加插件", function(event, can) { can.actions(event, "插件") }),
|
||||||
e: function(event, can) { can.actions(event, "扩展") },
|
e: shy("添加扩展", function(event, can) { can.actions(event, "扩展") }),
|
||||||
|
|
||||||
m: function(event, can) { can.actions(event, "autogen") },
|
m: function(event, can) { can.actions(event, "autogen") },
|
||||||
c: function(event, can) { can.actions(event, "compile") },
|
c: function(event, can) { can.actions(event, "compile") },
|
||||||
w: function(event, can) { can.actions(event, "website") },
|
w: function(event, can) { can.actions(event, "website") },
|
||||||
|
|
||||||
r: function(event, can) { can.actions(event, "执行") },
|
r: shy("执行命令", function(event, can) { can.actions(event, "执行") }),
|
||||||
v: function(event, can) { can.actions(event, "展示") },
|
v: shy("展示", function(event, can) { can.actions(event, "展示") }),
|
||||||
// s: function(event, can) { can.actions(event, "保存") },
|
a: shy("全屏", function(event, can) { can.actions(event, "全屏") }),
|
||||||
a: function(event, can) { can.actions(event, "全屏") },
|
|
||||||
|
|
||||||
j: function(event, can) { can.current.scroll(1) },
|
j: function(event, can) { can.current.scroll(1) },
|
||||||
k: function(event, can) { can.current.scroll(-1) },
|
k: function(event, can) { can.current.scroll(-1) },
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
fieldset.vimer>div.output input.current {
|
fieldset.vimer>div.output input.current {
|
||||||
background-color:#00000000; color:#00000000; font-size:1em; font-family:monospace;
|
background-color:#00000000; color:#00000000; font-size:1em; font-family:monospace;
|
||||||
padding:0; padding-left:9px; margin:0; margin-top:-2px; position:absolute; left:0;
|
padding:0; padding-left:11px; border:none; outline:none; margin:0; margin-top:-1px;
|
||||||
width:-webkit-fill-available;
|
height:22px; position:absolute;
|
||||||
}
|
}
|
||||||
fieldset.vimer>div.output input.current.insert { caret-color:yellow; }
|
fieldset.vimer>div.output input.current.insert { caret-color:black; }
|
||||||
fieldset.vimer>div.output input.current.normal { caret-color:blue; }
|
fieldset.vimer>div.output input.current.normal { caret-color:blue; }
|
||||||
|
@ -18,12 +18,14 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
},
|
},
|
||||||
_input: function(can) {
|
_input: function(can) {
|
||||||
can.ui.current = can.page.Append(can, can.ui.content.parentNode, [
|
can.ui.current = can.page.Append(can, can.ui.content.parentNode, [
|
||||||
{view: ["current", html.INPUT], onkeydown: function(event) { if (event.metaKey) { return }
|
{view: ["current", html.INPUT], spellcheck: false, onkeydown: function(event) { if (event.metaKey) { return }
|
||||||
can.misc.Debug("key", event.key)
|
can.misc.Debug("key", event.key)
|
||||||
can._keylist = can.onkeymap._parse(event, can, can.mode+(event.ctrlKey? "_ctrl": ""), can._keylist, can.ui.current)
|
can._keylist = can.onkeymap._parse(event, can, can.mode+(event.ctrlKey? "_ctrl": ""), can._keylist, can.ui.current)
|
||||||
can.mode == "insert" && can.core.Timer(10, function() { can.current.text(can.ui.current.value) })
|
can.mode == "insert" && can.core.Timer(10, function() { can.current.text(can.ui.current.value) })
|
||||||
can.mode == "normal" && can.Status("按键", can._keylist.join(""))
|
can.mode == "normal" && can.Status("按键", can._keylist.join(""))
|
||||||
can.mode == "normal" && can.onkeymap.prevent(event)
|
can.mode == "normal" && can.onkeymap.prevent(event)
|
||||||
|
}, onfocus: function(event) {
|
||||||
|
can.page.styleWidth(can, can.ui.current, can.ui.content.style.width)
|
||||||
}, onclick: function(event) { can.onkeymap._insert(event, can) },
|
}, onclick: function(event) { can.onkeymap._insert(event, can) },
|
||||||
ondblclick: function(event) { var target = event.target
|
ondblclick: function(event) { var target = event.target
|
||||||
can.onaction.searchLine(event, can, target.value.slice(target.selectionStart, target.selectionEnd))
|
can.onaction.searchLine(event, can, target.value.slice(target.selectionStart, target.selectionEnd))
|
||||||
|
@ -1,16 +1,31 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) {
|
||||||
can.onmotion.clear(can, target)
|
can.user.isMobile && !can.user.isLandscape() && can.onmotion.hidden(can, can._action)
|
||||||
|
can.onmotion.clear(can, target), can.base.isFunc(cb) && cb(msg)
|
||||||
|
var cbs = can.onimport[can._args["style"]]; if (can.base.isFunc(cbs)) {
|
||||||
|
can.page.ClassList.add(can, target, can._args["style"])
|
||||||
|
return cbs(can, msg, target)
|
||||||
|
}
|
||||||
can.onappend.table(can, msg, null, target)
|
can.onappend.table(can, msg, null, target)
|
||||||
can.onappend.board(can, msg, target)
|
can.onappend.board(can, msg, target)
|
||||||
can.onmotion.story.auto(can)
|
can.onmotion.story.auto(can, target)
|
||||||
can.base.isFunc(cb) && cb(msg)
|
|
||||||
can.user.isMobile && !can.user.isLandscape() && can.onmotion.hidden(can, can._action)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_process: function(can, msg) {
|
_process: function(can, msg) {
|
||||||
msg.Option(ice.MSG_TOAST) && can.user.toast(can, msg.Option(ice.MSG_TOAST))
|
msg.Option(ice.MSG_TOAST) && can.user.toast(can, msg.Option(ice.MSG_TOAST))
|
||||||
return can.core.CallFunc([can.onimport, msg.Option(ice.MSG_PROCESS)], [can, msg])
|
return can.core.CallFunc([can.onimport, msg.Option(ice.MSG_PROCESS)], [can, msg])
|
||||||
},
|
},
|
||||||
|
card: function(can, msg, target) {
|
||||||
|
can.page.Append(can, target, msg.Table(function(value) {
|
||||||
|
return {view: "item", list: [
|
||||||
|
{view: ["title", "div", value.name]},
|
||||||
|
{view: ["content", "div", value.text]},
|
||||||
|
{view: "operate", inner: value.action, onclick: function(event) {
|
||||||
|
can.request(event, value)
|
||||||
|
can.run(event, [ctx.ACTION, event.target.name])
|
||||||
|
}},
|
||||||
|
]}
|
||||||
|
}))
|
||||||
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "控件交互", list: []})
|
Volcanos("onaction", {help: "控件交互", list: []})
|
||||||
Volcanos("onexport", {help: "导出数据", list: []})
|
Volcanos("onexport", {help: "导出数据", list: []})
|
||||||
|
9
proto.js
9
proto.js
@ -13,9 +13,9 @@ var ice = {
|
|||||||
|
|
||||||
OK: "ok", TRUE: "true", FALSE: "false", SUCCESS: "success", FAILURE: "failure", PROCESS: "process",
|
OK: "ok", TRUE: "true", FALSE: "false", SUCCESS: "success", FAILURE: "failure", PROCESS: "process",
|
||||||
|
|
||||||
AUTO: "auto", HELP: "help", HTTP: "http",
|
AUTO: "auto", LIST: "list", BACK: "back", EXEC: "exec",
|
||||||
VIEW: "view", MODE: "mode", SHIP: "ship",
|
SHOW: "show", HIDE: "hide", HELP: "help", HTTP: "http",
|
||||||
COPY: "copy", SHOW: "show", HIDE: "hide",
|
VIEW: "view", MODE: "mode", SHIP: "ship", COPY: "copy",
|
||||||
|
|
||||||
MSG_DETAIL: "detail",
|
MSG_DETAIL: "detail",
|
||||||
MSG_OPTION: "option",
|
MSG_OPTION: "option",
|
||||||
@ -92,7 +92,8 @@ var mdb = {
|
|||||||
UPLOAD: "upload",
|
UPLOAD: "upload",
|
||||||
|
|
||||||
SEARCH: "search", ENGINE: "engine", RENDER: "render", PLUGIN: "plugin",
|
SEARCH: "search", ENGINE: "engine", RENDER: "render", PLUGIN: "plugin",
|
||||||
NEXT: "next", PREV: "prev", PAGE: "page", MAIN: "main",
|
PAGE: "page", NEXT: "next", PREV: "prev", LIMIT: "limit", OFFEND: "offend",
|
||||||
|
MAIN: "main",
|
||||||
|
|
||||||
FOREACH: "*", RANDOMS: "%",
|
FOREACH: "*", RANDOMS: "%",
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user