forked from x/volcanos
opt pane
This commit is contained in:
parent
9ff9c2469e
commit
296257255a
192
frame.js
192
frame.js
@ -1,18 +1,22 @@
|
|||||||
Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta, list, cb, target) {
|
Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta, list, cb, target) {
|
||||||
can.core.Next(meta.panes, function(item, next) {
|
can.core.Next(meta.panes, function(item, next) {
|
||||||
can.onappend._init(can, item, meta.libs.concat(item.list), function(pane) {
|
can.onappend._init(can, item, item.list, function(pane) {
|
||||||
pane.run = function(event, cmds, cb) {
|
pane.run = function(event, cmds, cb, silent) { var msg = pane.request(event); cmds = cmds || []
|
||||||
return (can.onengine[cmds[0]]||can.onengine[meta.main.engine])(event, can, pane.request(event), pane, cmds, cb)
|
return (can.onengine[cmds[0]]||can.onengine[meta.main.engine])(event, can, msg, pane, cmds, function(msg) {
|
||||||
|
return typeof cb == "function" && cb(msg)
|
||||||
|
})
|
||||||
}, can[item.name] = pane, next()
|
}, can[item.name] = pane, next()
|
||||||
}, target)
|
}, target)
|
||||||
}, function() {
|
}, function() {
|
||||||
can.onlayout._init(can, meta, list, function() {}, target)
|
can.onlayout._init(can, meta, list, function() {}, target)
|
||||||
can.onengine._daemon(can, can.user.title())
|
|
||||||
can.onkeypop._init(can)
|
can.onkeypop._init(can)
|
||||||
|
|
||||||
|
can.onengine._daemon(can, can.user.title())
|
||||||
can.require(Volcanos.meta.webpack? []: meta.main.list, function(can) {
|
can.require(Volcanos.meta.webpack? []: meta.main.list, function(can) {
|
||||||
var pane = can[meta.main.name], msg = can.request({})
|
var pane = can[meta.main.name], msg = can.request({})
|
||||||
pane.onaction && pane.onaction._init(pane, msg, msg.option||[], cb, target)
|
pane.onaction._init(pane, msg, msg.option||[], function(msg) {
|
||||||
|
return typeof cb == "function" && cb(msg)
|
||||||
|
}, pane._target)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -212,7 +216,6 @@ Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta,
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, list, cb, target, field) {
|
Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, list, cb, target, field) {
|
||||||
meta.name = meta.name.split(" ")[0]
|
|
||||||
field = field || can.onappend.field(can, target, meta.type, meta).first
|
field = field || can.onappend.field(can, target, meta.type, meta).first
|
||||||
var legend = can.page.Select(can, field, "legend")[0]
|
var legend = can.page.Select(can, field, "legend")[0]
|
||||||
var option = can.page.Select(can, field, "form.option")[0]
|
var option = can.page.Select(can, field, "form.option")[0]
|
||||||
@ -222,30 +225,9 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
meta.id && (option.dataset.id = meta.id)
|
meta.id && (option.dataset.id = meta.id)
|
||||||
|
|
||||||
// 添加插件
|
// 添加插件
|
||||||
list = Volcanos.meta.libs.concat(list)
|
|
||||||
var sub = Volcanos(meta.name, { _help: meta.name, _follow: can._follow+"."+meta.name,
|
var sub = Volcanos(meta.name, { _help: meta.name, _follow: can._follow+"."+meta.name,
|
||||||
_legend: legend, _option: option, _action: action, _output: output, _status: status,
|
_legend: legend, _option: option, _action: action, _output: output, _status: status,
|
||||||
_target: field, _inputs: {}, _outputs: [], _history: [],
|
_target: field, _inputs: {}, _outputs: [], _history: [],
|
||||||
Pack: function(cmds, slient) {
|
|
||||||
cmds = cmds && cmds.length > 0? cmds: sub.page.Select(sub, sub._option, "textarea.args,input.args,select.args", function(item) {
|
|
||||||
return item.name && item.value || ""
|
|
||||||
}); for (var i = cmds.length-1; i >= 0; i--) {
|
|
||||||
if (!cmds[i]) { cmds.pop() } else { break }
|
|
||||||
}
|
|
||||||
|
|
||||||
var last = sub._history[sub._history.length-1]; !sub.core.Eq(last, cmds) && cmds[0] != "action" && !slient && sub._history.push(cmds)
|
|
||||||
return cmds
|
|
||||||
},
|
|
||||||
Clone: function() {
|
|
||||||
meta.args = sub.page.Select(sub, sub._option, "textarea.args,input.args,select.args", function(item) {
|
|
||||||
return item.name && item.value || ""
|
|
||||||
})
|
|
||||||
sub.onappend._init(sub, meta, list, function(sub) {
|
|
||||||
cb(sub), sub.Timer(10, function() {
|
|
||||||
for (var k in sub._inputs) { sub._inputs[k]._target.focus(); break }
|
|
||||||
})
|
|
||||||
}, target)
|
|
||||||
},
|
|
||||||
Option: function(key, value) {
|
Option: function(key, value) {
|
||||||
if (typeof key == "object") { return sub.core.Item(key, sub.Option), key }
|
if (typeof key == "object") { return sub.core.Item(key, sub.Option), key }
|
||||||
if (key == undefined) { value = {}
|
if (key == undefined) { value = {}
|
||||||
@ -254,13 +236,14 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
})
|
})
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
sub.page.Select(sub, option, "select[name="+key+"],input[name="+key+"]", function(item) {
|
sub.page.Select(sub, option, "input[name="+key+"],"+"select[name="+key+"]", function(item) {
|
||||||
value == undefined? (value = item.value): (item.value = value)
|
value == undefined? (value = item.value): (item.value = value)
|
||||||
})
|
})
|
||||||
return value
|
return value
|
||||||
},
|
},
|
||||||
Action: function(key, value) {
|
Action: function(key, value) {
|
||||||
sub.page.Select(sub, action, "select[name="+key+"],input[name="+key+"]", function(item) {
|
if (typeof key == "object") { return sub.core.Item(key, sub.Action), key }
|
||||||
|
sub.page.Select(sub, action, "input[name="+key+"],"+"select[name="+key+"]", function(item) {
|
||||||
value == undefined? (value = item.value): (item.value = value)
|
value == undefined? (value = item.value): (item.value = value)
|
||||||
})
|
})
|
||||||
return value
|
return value
|
||||||
@ -272,56 +255,65 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
})
|
})
|
||||||
return value
|
return value
|
||||||
},
|
},
|
||||||
}, [Volcanos.meta.volcano].concat(list), function(sub) { cb(sub)
|
Clone: function() {
|
||||||
|
meta.args = sub.page.Select(sub, sub._option, "textarea.args,input.args,select.args", function(item) {
|
||||||
|
return item.name && item.value || ""
|
||||||
|
})
|
||||||
|
can.onappend._init(can, meta, list, function(sub) {
|
||||||
|
typeof cb == "function" && cb(sub)
|
||||||
|
sub.Timer(10, function() {
|
||||||
|
for (var k in sub._inputs) { sub._inputs[k]._target.focus(); break }
|
||||||
|
})
|
||||||
|
}, target)
|
||||||
|
},
|
||||||
|
Pack: function(cmds, slient) {
|
||||||
|
cmds = cmds && cmds.length > 0? cmds: sub.page.Select(sub, sub._option, "textarea.args,input.args,select.args", function(item) {
|
||||||
|
return item.name && item.value || ""
|
||||||
|
}); for (var i = cmds.length-1; i >= 0; i--) {
|
||||||
|
if (!cmds[i]) { cmds.pop() } else { break }
|
||||||
|
}
|
||||||
|
|
||||||
|
var last = sub._history[sub._history.length-1]; !sub.core.Eq(last, cmds) && cmds[0] != "action" && !slient && sub._history.push(cmds)
|
||||||
|
return cmds
|
||||||
|
},
|
||||||
|
}, Volcanos.meta.libs.concat(list.concat([Volcanos.meta.volcano])), function(sub) { sub.Conf(meta)
|
||||||
|
typeof cb == "function" && cb(sub)
|
||||||
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.style||meta.feature.style||"")
|
||||||
// sub.onimport && sub.onimport._init(sub, sub.Conf(meta), list, function() {}, field)
|
|
||||||
|
|
||||||
meta.inputs && sub.onappend._option(sub, meta, list, cb)
|
meta.inputs && sub.onappend._option(sub, meta, list, cb)
|
||||||
sub.onaction && sub.onappend._action(sub, sub._action, meta.button || sub.onaction.list)
|
|
||||||
sub.onexport && sub.onappend._status(sub, sub._status, sub.onexport.list)
|
|
||||||
})
|
})
|
||||||
return sub.Conf(meta), sub
|
return sub
|
||||||
},
|
},
|
||||||
_option: function(can, meta, list, cb) { var index = -1, args = can.base.Obj(meta.arg||meta.args, [])
|
_option: function(can, meta, list, cb) { var index = -1, args = can.base.Obj(meta.arg||meta.args, [])
|
||||||
function add(item, next) { item._input != "button" && index++
|
function add(item, next) { item._input != "button" && index++
|
||||||
return can._inputs[item.name] = Volcanos(item.name, { _help: item.name, _follow: can._follow+"."+item.name,
|
return can._inputs[item.name] = Volcanos(item.name, { _help: item.name, _follow: can._follow+"."+item.name,
|
||||||
_target: can.onappend.input(can, can._option, item.type, item, args[index]),
|
_target: can.onappend.input(can, can._option, item.type, item, args[index]),
|
||||||
_option: can._option, _action: can._action, _output: can._output,
|
_option: can._option, _action: can._action, _output: can._output,
|
||||||
CloneInput: function() { add(item, function() {})._target.focus() },
|
CloneInput: function() { add(item)._target.focus() },
|
||||||
CloneField: function() { can.Clone() },
|
CloneField: function() { can.Clone() },
|
||||||
}, Volcanos.meta.libs.concat([item.display||"/plugin/input.js", Volcanos.meta.volcano]), function(input) { input.sup = can
|
}, Volcanos.meta.libs.concat([item.display||"/plugin/input.js", Volcanos.meta.volcano]), function(input) {
|
||||||
input.run = function(event, cmds, cb, silent) {
|
input.Conf(item), input.sup = can, input.run = function(event, cmds, cb, silent) {
|
||||||
var msg = can.request(event); msg.Option(can.Conf("option"))
|
var msg = can.request(event, can.Conf("option"))
|
||||||
return can.onappend._output(can, meta, event, can.Pack(cmds), cb, silent)
|
return can.onappend._output(can, meta, event, can.Pack(cmds), cb, silent)
|
||||||
}
|
}
|
||||||
|
|
||||||
input.onimport && input.onimport._init(input, input.Conf(item), item.list||[], function() {}, input._target)
|
input.onaction && input.onaction._init && input.onaction._init(input, item, [], next, input._target)
|
||||||
|
|
||||||
can.core.Item(input.onaction, function(key, value) {
|
|
||||||
input._target && key.indexOf("on") == 0 && (input._target[key] = input._target[key] || function(event) {
|
|
||||||
value(event, input)
|
|
||||||
})
|
|
||||||
}), next()
|
|
||||||
|
|
||||||
// 自动执行
|
|
||||||
item.type == "button" && item.action == "auto" && input._target.click()
|
|
||||||
})
|
})
|
||||||
}
|
}; can.core.Next(can.base.Obj(meta.inputs, []), add)
|
||||||
can.core.Next(can.base.Obj(meta.inputs, []), add)
|
|
||||||
},
|
},
|
||||||
_action: function(can, action, list) { // [string [class item...] {}]
|
_action: function(can, action, list) {
|
||||||
action.innerHTML = "", can.core.List(list, function(item) {
|
can.onmotion.clear(can, action), can.core.List(list, function(item) {
|
||||||
item === ""? /*空白*/ can.page.Append(can, action, [{view: "item space"}]):
|
item === ""? /*空白*/ can.page.Append(can, action, [{view: "item space"}]):
|
||||||
typeof item == "string"? /*按键*/ can.onappend.input(can, action, "input", {type: "button", value: item, onclick: function(event) {
|
typeof item == "string"? /*按键*/ can.onappend.input(can, action, "input", {type: "button", value: item, onclick: function(event) {
|
||||||
var cb = can.onaction[item] || can.onaction["_engine"] || can.onkeymap && can.onkeymap._remote
|
var cb = can.onaction[item] || can.onaction["_engine"] || can.onkeymap && can.onkeymap._remote
|
||||||
cb? cb(event, can, item): can.run(event, ["action", item], function(msg) {}, true)
|
cb? cb(event, can, item): can.run(event, ["action", item], function(msg) {}, true)
|
||||||
}}): item.length > 0? /*列表*/ can.onappend.input(can, action, "input", {type: "select", values: item.slice(1), title: item[0], name: item[0], onchange: function(event) {
|
}}): item.length > 0? /*列表*/ can.onappend.input(can, action, "input", {type: "select", name: item[0], values: item.slice(1), title: item[0], onchange: function(event) {
|
||||||
var which = item[event.target.selectedIndex+1]
|
var which = item[event.target.selectedIndex+1]
|
||||||
var cb = can.onaction[which]
|
var cb = can.onaction[which]
|
||||||
cb && cb(event, can, which)
|
typeof cb == "function" && cb(event, can, which)
|
||||||
var cb = can.onaction[item[0]]
|
var cb = can.onaction[item[0]]
|
||||||
cb && cb(event, can, item[0], which)
|
typeof cb == "function" && cb(event, can, item[0], which)
|
||||||
}}): item.input? /*文本*/ can.page.Append(can, action, [{view: "item", list: [{type: "input", name: item.input[0], onkeydown: function(event) {
|
}}): item.input? /*文本*/ can.page.Append(can, action, [{view: "item", list: [{type: "input", name: item.input[0], onkeydown: function(event) {
|
||||||
item.input[1](event, can)
|
item.input[1](event, can)
|
||||||
}}] }]): typeof item == "object" && /*其它*/ can.page.Append(can, action, [item])
|
}}] }]): typeof item == "object" && /*其它*/ can.page.Append(can, action, [item])
|
||||||
@ -333,54 +325,57 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
item.name && item.value && msg.Option(item.name, item.value)
|
item.name && item.value && msg.Option(item.name, item.value)
|
||||||
})
|
})
|
||||||
|
|
||||||
return can.run(event, cmds||[], function(msg) {
|
can.run(event, cmds||[], function(msg) {
|
||||||
typeof cb == "function" && cb(msg)
|
typeof cb == "function" && cb(msg)
|
||||||
if (silent) { return }
|
if (silent) { return }
|
||||||
|
|
||||||
var display = meta.feature.display || "table.js"
|
var display = meta.feature.display || "table.js"
|
||||||
display.indexOf("/") == 0 || (display = "/plugin/"+display)
|
display.indexOf("/") == 0 || (display = "/plugin/"+display)
|
||||||
|
|
||||||
display.endsWith(".js") || (display += ".js")
|
display.endsWith(".js") || (display += ".js")
|
||||||
|
|
||||||
var table = Volcanos(display, { _help: display, _follow: can._follow+"."+display,
|
var table = Volcanos(display, { _help: display, _follow: can._follow+"."+display,
|
||||||
_target: can._output, _option: can._option, _action: can._action, _output: can._output, _status: can._status,
|
_option: can._option, _action: can._action, _output: can._output, _status: can._status,
|
||||||
_fields: can._target, Option: can.Option, Action: can.Action, Status: can.Status,
|
_target: can._output, _fields: can._target, Option: can.Option, Action: can.Action, Status: can.Status,
|
||||||
}, Volcanos.meta.libs.concat([display, "/frame.js"]), function(table) { table.Conf(can.Conf()), table._msg = msg
|
}, Volcanos.meta.libs.concat([display, Volcanos.meta.volcano]), function(table) {
|
||||||
table.sup = can, table.run = function(event, cmds, cb, silent) { var msg = can.request(event)
|
table.Conf(can.Conf()), table.sup = can, table._msg = msg
|
||||||
can.core.Item(can.Conf("option"), msg.Option)
|
table.run = function(event, cmds, cb, silent) {
|
||||||
|
var msg = can.request(event, can.Conf("option"))
|
||||||
return can.onappend._output(can, meta, event, can.Pack(cmds, silent), cb, silent)
|
return can.onappend._output(can, meta, event, can.Pack(cmds, silent), cb, silent)
|
||||||
}
|
}
|
||||||
|
|
||||||
table.onimport && table.onimport._init && table.onimport._init(table, msg, msg.result||[], function() {
|
table.onimport && table.onimport._init && table.onimport._init(table, msg, msg.result||[], function(msg) {
|
||||||
can.onappend._detail(table, msg, msg["_detail"] || can.Conf("detail"), can._output)
|
table.onaction && table.onappend._action(table, table._action, msg._action||meta._action||table.onaction.list)
|
||||||
table.onaction && table.onappend._action(table, table._action, meta._action||table.onaction.list)
|
table.ondetail && table.onappend._detail(table, table._output, msg._detail||meta._detail||table.ondetail.list)
|
||||||
table.onexport && table.onappend._status(table, table._status, table.onexport.list)
|
table.onexport && table.onappend._status(table, table._status, msg._export||meta._export||table.onexport.list)
|
||||||
}, can._output)
|
}, can._output)
|
||||||
}); can._outputs.push(table)
|
}); can._outputs.push(table)
|
||||||
}, silent)
|
}, silent)
|
||||||
},
|
},
|
||||||
_detail: function(can, msg, list, target) {
|
_detail: function(can, target, list) {
|
||||||
can.ondetail && list.length > 0 && (target.oncontextmenu = function(event) {
|
list.length > 0 && (target.oncontextmenu = function(event) {
|
||||||
can.user.carte(can, can.ondetail||{}, list, function(ev, item, meta) {
|
can.user.carte(can, can.ondetail||{}, list, function(ev, item, meta) {
|
||||||
(can.ondetail[item] || can.onaction[item])(event, can, item)
|
(can.ondetail[item] || can.onaction[item])(event, can, item)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_status: function(can, status, list) {
|
_status: function(can, status, list) {
|
||||||
status.innerHTML = "", can.core.List(list, function(item) {
|
can.onmotion.clear(can, status), can.core.List(list, function(item) {
|
||||||
can.page.Append(can, status, [{view: "item "+item, title: item, list: [{text: [item+": ", "label"]}, {text: ["", "span"]}]}])
|
can.page.Append(can, status, [{view: "item "+item, title: item, list: [
|
||||||
|
{text: [item, "label"]}, {text: [": ", "label"]}, {text: ["", "span"]},
|
||||||
|
], }])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
item: function(can, target, type, item, cb, cbs) {
|
item: function(can, target, type, item, cb, cbs) {
|
||||||
var ui = can.page.Append(can, target, [{view: [type, "div", item.nick||item.name],
|
var ui = can.page.Append(can, target, [{view: [type, "div", item.nick||item.name],
|
||||||
oncontextmenu: function(event) { cbs(event, ui.item) }, click: function(event) {
|
click: function(event) {
|
||||||
can.page.Select(can, target, "div."+type, function(item) {
|
can.page.Select(can, target, "div."+type, function(item) {
|
||||||
can.page.ClassList.del(can, item, "select")
|
can.page.ClassList.del(can, item, "select")
|
||||||
}), can.page.ClassList.add(can, ui.item, "select")
|
}), can.page.ClassList.add(can, ui.item, "select")
|
||||||
cb(event, ui.item)
|
cb(event, ui.item)
|
||||||
},
|
}, oncontextmenu: function(event) { cbs(event, ui.item) },
|
||||||
}])
|
}])
|
||||||
return ui.item.Meta = item, ui.item
|
return ui.item
|
||||||
},
|
},
|
||||||
tree: function(can, msg, field, split, target, cb) {
|
tree: function(can, msg, field, split, target, cb) {
|
||||||
var list = {}; msg.Table(function(value) {
|
var list = {}; msg.Table(function(value) {
|
||||||
@ -388,28 +383,23 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
var last = array.slice(0, index).join(split)
|
var last = array.slice(0, index).join(split)
|
||||||
var name = array.slice(0, index+1).join(split)
|
var name = array.slice(0, index+1).join(split)
|
||||||
list[name] || (list[name] = can.page.Append(can, list[last]||target, [{view: ["item", "div", item+(index==array.length-1?"":split)], onclick: function(event) {
|
list[name] || (list[name] = can.page.Append(can, list[last]||target, [{view: ["item", "div", item+(index==array.length-1?"":split)], onclick: function(event) {
|
||||||
var hide = list[name].style.display == "none"
|
can.page.Toggle(can, list[name])
|
||||||
can.page.Modify(can, list[name], {style: {display: hide? "": "none"}})
|
|
||||||
index == array.length - 1 && typeof cb == "function" && cb(event, value)
|
index == array.length - 1 && typeof cb == "function" && cb(event, value)
|
||||||
}}, {view: "list", style: {display: "none"}}]).last)
|
}}, {view: "list", style: {display: "none"}}]).last)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
menu: function(can, msg, value) {
|
menu: function(can, msg, list) {
|
||||||
can.ondetail && can.ondetail.list && can.ondetail.list.length > 0 && (can._target.oncontextmenu = function(event) {
|
can.ondetail && can.onappend._detail(can, can._target, list||msg._detail||meta._detail||table.ondetail.list)
|
||||||
can.user.carte(can, can.ondetail||{}, msg["_detail"] || can.Conf("detail"), function(ev, item, meta) {
|
|
||||||
(can.ondetail[item]||can.onaction[item])(event, can, value, item)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
field: function(can, target, type, item) { var dataset = {}; item && item.name && (dataset.names = item.name)
|
field: function(can, target, type, item) { var dataset = {}; item && item.name && (dataset.names = item.name)
|
||||||
item.help = typeof item.help == "string" && item.help.startsWith("[") && (item.help = can.base.Obj(item.help, [""])[0]) || item.help || ""
|
item.help = typeof item.help == "string" && item.help.startsWith("[") && (item.help = can.base.Obj(item.help, [""])[0]) || item.help || ""
|
||||||
var field = can.page.Append(can, target, [{view: [(type||"")+" "+(item.name||"")+" "+(item.pos||""), "fieldset"], list: [
|
return can.page.Append(can, target, [{view: [(type||"")+" "+(item.name||"")+" "+(item.pos||""), "fieldset"], list: [
|
||||||
item.pos? undefined: {text: [(item.nick||item.name||"")+"("+(item.help||"")+")", "legend"]},
|
item.pos? undefined: {text: [(item.nick||item.name||"")+"("+(item.help||"")+")", "legend"]},
|
||||||
{view: ["option", "form"], dataset: dataset, list: []},
|
{view: ["option", "form"], dataset: dataset, list: []},
|
||||||
{view: ["action"]}, {view: ["output"]}, {view: ["status"]},
|
{view: ["action"]}, {view: ["output"]}, {view: ["status"]},
|
||||||
]}])
|
]}])
|
||||||
return field.first.Meta = item, field
|
|
||||||
},
|
},
|
||||||
input: function(can, option, type, item, value) {
|
input: function(can, option, type, item, value) {
|
||||||
item.name && item.name.indexOf("@") == 0 && (item.name = item.name.slice(1)) && (item.position = item.position || "opts")
|
item.name && item.name.indexOf("@") == 0 && (item.name = item.name.slice(1)) && (item.position = item.position || "opts")
|
||||||
@ -487,15 +477,18 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
|
|
||||||
plugin: function(can, value, cb, target) { value = value || {}
|
plugin: function(can, value, cb, target) { value = value || {}
|
||||||
can.run({}, ["action", "command", value.index], function(msg) {
|
can.run({}, ["action", "command", value.index], function(msg) {
|
||||||
value.name = value.name || msg.name && msg.name[0] || "plugin"
|
value.feature = can.base.Obj(msg.meta&&msg.meta[0] || "{}", {})
|
||||||
value.help = value.help || msg.help && msg.help[0] || "plugin"
|
value.inputs = can.base.Obj(msg.list&&msg.list[0] || "[]", [])
|
||||||
value.inputs = can.base.Obj(msg.list && msg.list[0] || "[]", [])
|
|
||||||
value.feature = can.base.Obj(msg.meta && msg.meta[0] || "{}", {})
|
|
||||||
|
|
||||||
var plugin = can.onappend._init(can, value, Volcanos.meta.libs.concat(["/plugin/state.js"]), function(sub) {
|
value.name = value.name || msg.name&&msg.name[0] || "story"
|
||||||
typeof cb == "function" && cb(sub, value)
|
value.help = value.help || msg.help&&msg.help[0] || "story"
|
||||||
sub.page.Remove(sub, sub._legend)
|
value.width = can._target.offsetWidth
|
||||||
}, target || document.body)
|
value.type = "story"
|
||||||
|
|
||||||
|
can.onappend._init(can, value, ["/plugin/state.js"], function(story) {
|
||||||
|
story.page.Remove(story, story._legend)
|
||||||
|
return typeof cb == "function" && cb(story, value)
|
||||||
|
}, target || can._output)
|
||||||
}, true)
|
}, true)
|
||||||
},
|
},
|
||||||
}, [], function(can) {})
|
}, [], function(can) {})
|
||||||
@ -748,19 +741,24 @@ Volcanos("onmotion", {help: "动态交互", list: [], _init: function(can) {
|
|||||||
|
|
||||||
}}]); ui.first.focus(), ui.first.setSelectionRange(0, -1)
|
}}]); ui.first.focus(), ui.first.setSelectionRange(0, -1)
|
||||||
},
|
},
|
||||||
show: function(can, target, time, cb) { time = time || {value: 100, length: 30}
|
clear: function(can, target) { target = target || can._output
|
||||||
can.page.Modify(can, target, {style: {opacity: 0}})
|
target.innerHTML = ""
|
||||||
|
},
|
||||||
|
show: function(can, time, cb, target) { target = target || can._target
|
||||||
|
time = typeof time == "object"? time: {value: 10, length: time||20}
|
||||||
|
|
||||||
|
can.page.Modify(can, target, {style: {opacity: 0, display: "block"}})
|
||||||
can.Timer(time, function(event, value, index) {
|
can.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, target, time) { time = time || {value: 100, length: 30}
|
hide: function(can, time, cb, target) { target = target || can._target
|
||||||
|
time = typeof time == "object"? time: {value: 10, length: time||20}
|
||||||
|
|
||||||
can.page.Modify(can, target, {style: {opacity: 1}})
|
can.page.Modify(can, target, {style: {opacity: 1}})
|
||||||
can.Timer(time, function(event, value, index) {
|
can.Timer(time, function(event, value, index) {
|
||||||
console.log(arguments)
|
|
||||||
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() {
|
}, cb)
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
move: function(can, target, layout) { var begin
|
move: function(can, target, layout) { var begin
|
||||||
|
@ -115,8 +115,7 @@ var base = Volcanos("base", {help: "基础模块",
|
|||||||
}),
|
}),
|
||||||
Format: shy("数据格式化", function(obj) {return JSON.stringify(obj)}),
|
Format: shy("数据格式化", function(obj) {return JSON.stringify(obj)}),
|
||||||
|
|
||||||
isNight: function() {
|
isNight: function() { var now = new Date()
|
||||||
var now = new Date()
|
|
||||||
return now.getHours() < 7 || now.getHours() > 17
|
return now.getHours() < 7 || now.getHours() > 17
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -1,53 +1,50 @@
|
|||||||
const RIVER = "river", STORM = "storm"
|
(function() { const RIVER = "river", STORM = "storm", ACTION = "action"
|
||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
var river = can.Conf("river"), storm = can.Conf("storm")
|
var river = can.Conf(RIVER), storm = can.Conf(STORM)
|
||||||
can._output.innerHTML = "", can.core.Next(msg.Table(), function(value, next) {
|
can.onmotion.clear(can), can.core.Next(msg.Table(), function(value, next) {
|
||||||
value.feature = can.base.Obj(value.feature||value.meta||"{}", {})
|
value.feature = can.base.Obj(value.feature||value.meta||"{}", {})
|
||||||
value.inputs = can.base.Obj(value.inputs||value.list||"[]", [])
|
value.inputs = can.base.Obj(value.inputs||value.list||"[]", [])
|
||||||
if (value.inputs.length > 0) {
|
|
||||||
can.onimport._plugin(can, river, storm, value), next()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
can.run({}, ["action", "command", value.index || value.ctx+"."+value.cmd], function(msg) {
|
value.inputs.length == 0? can.run({}, ["action", "command", value.index || value.ctx+"."+value.cmd], function(msg) {
|
||||||
value.feature = can.base.Obj(msg.meta&&msg.meta[0]||"{}", {})
|
value.feature = can.base.Obj(msg.meta&&msg.meta[0]||"{}", {})
|
||||||
value.inputs = can.base.Obj(msg.list&&msg.list[0]||"[]", [])
|
value.inputs = can.base.Obj(msg.list&&msg.list[0]||"[]", [])
|
||||||
can.onimport._plugin(can, river, storm, value), next()
|
|
||||||
})
|
can.onimport._plugin(can, target, river, storm, value), next()
|
||||||
|
}): (can.onimport._plugin(can, target, river, storm, value), next())
|
||||||
})
|
})
|
||||||
typeof cb == "function" && cb(msg)
|
return typeof cb == "function" && cb(msg)
|
||||||
},
|
},
|
||||||
_plugin: function(can, river, storm, value) { value.name = value.name.split(" ")[0]
|
_plugin: function(can, target, river, storm, value) { value.name = value.name.split(" ")[0]
|
||||||
value.action = value.id || value.index || value.key+"."+value.name
|
value.action = value.id || value.index || value.key+"."+value.name
|
||||||
value.width = can._target.offsetWidth
|
value.width = can._target.offsetWidth
|
||||||
value.type = "plugin"
|
value.type = "plugin"
|
||||||
|
|
||||||
can.onappend._init(can, value, ["/plugin/state.js"], function(sub) {
|
can.onappend._init(can, value, ["/plugin/state.js"], function(plugin) {
|
||||||
sub.run = function(event, cmds, cb, silent) { var msg = can.request(event); cmds = cmds || []
|
plugin.run = function(event, cmds, cb, silent) { var msg = plugin.request(event); cmds = cmds || []
|
||||||
return can.run(event, can.onengine[cmds[0]]? cmds: [river, storm, value.action].concat(cmds), function(msg) {
|
return can.run(event, can.onengine[cmds[0]]? cmds: [river, storm, value.action].concat(cmds), function(msg) {
|
||||||
return typeof cb == "function" && cb(msg)
|
return typeof cb == "function" && cb(msg)
|
||||||
}, silent)
|
}, silent)
|
||||||
}
|
}
|
||||||
}, can._output)
|
}, target)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
can.Cache(can.Conf("river")+"."+can.Conf("storm"), can._output, can._output.scrollTop+1)
|
can.Cache(can.Conf(RIVER)+"."+can.Conf(STORM), can._output, can._output.scrollTop+1)
|
||||||
var river = can.Conf("river", msg.Option("river")), storm = can.Conf("storm", msg.Option("storm"))
|
var river = can.Conf(RIVER, msg.Option(RIVER)), storm = can.Conf(STORM, msg.Option(STORM))
|
||||||
var position = can.Conf("action", msg.Option("action", can.Cache(river+"."+storm, can._output)||""))
|
var position = can.Conf(ACTION, msg.Option(ACTION, can.Cache(river+"."+storm, 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) {
|
||||||
can.onimport._init(can, msg, list, cb, target)
|
can.onimport._init(can, msg, list, cb, can._output)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: [],
|
Volcanos("onexport", {help: "导出数据", list: [],
|
||||||
args: function(can, msg, list, cb, target) {
|
args: function(can, msg, list, cb, target) {
|
||||||
can.core.Next(can.page.Select(can, target, "div.output>fieldset.plugin>form.option"), function(item, next) {
|
can.core.Next(can.page.Select(can, target, "fieldset.plugin>form.option"), function(item, next) {
|
||||||
var list = can.page.Select(can, item, '.args', function(item) { return item.value||"" })
|
var list = can.page.Select(can, item, '.args', function(item) { return item.value||"" })
|
||||||
item.dataset.args = JSON.stringify(list), cb(item, next)
|
item.dataset.args = JSON.stringify(list), cb(item, next)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
})()
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
target.innerHTML = ""
|
can.onmotion.clear(can)
|
||||||
can.onimport._title(can, msg, target)
|
can.onimport._title(can, msg, target)
|
||||||
can.onimport._state(can, msg, target)
|
can.onimport._state(can, msg, target)
|
||||||
typeof cb == "function" && cb(msg)
|
typeof cb == "function" && cb(msg)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
|
(function() { const TITLE = "title", TOPIC = "topic", POD = "pod", STATE = "state", USERNAME = "username"
|
||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
target.innerHTML = ""
|
can.onmotion.clear(can)
|
||||||
can.onimport._title(can, msg, target)
|
can.onimport._title(can, msg, target)
|
||||||
can.onimport._state(can, msg, target)
|
can.onimport._state(can, msg, target)
|
||||||
can.onimport._search(can, msg, target)
|
can.onimport._search(can, msg, target)
|
||||||
@ -7,10 +8,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
typeof cb == "function" && cb(msg)
|
typeof cb == "function" && cb(msg)
|
||||||
},
|
},
|
||||||
_title: function(can, msg, target) {
|
_title: function(can, msg, target) {
|
||||||
can.user.title(can.user.Search(can, "title") || can.user.Search(can, "pod"))
|
can.user.title(can.user.Search(can, TITLE) || can.user.Search(can, POD))
|
||||||
can.user.isMobile || can.core.List(msg.result||["github.com/shylinux/contexts"], function(item) {
|
can.user.isMobile || can.core.List(msg.result||["github.com/shylinux/contexts"], function(item) {
|
||||||
can.page.Append(can, target, [{view: ["title", "div", item],
|
can.page.Append(can, target, [{view: [TITLE, "div", item],
|
||||||
click: function(event) { can.onaction["title"](event, can) },
|
click: function(event) { can.onaction.title(event, can) },
|
||||||
}])
|
}])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -21,14 +22,14 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
}
|
}
|
||||||
}, }], }]).input)
|
}, }], }]).input)
|
||||||
|
|
||||||
var ui = can.page.Append(can, target, can.core.List(can.user.isMobile || can.user.isExtension || can.user.Search(can, "pod")? ["River"]: ["pack"], function(item) {
|
var ui = can.page.Append(can, target, can.core.List(can.user.isMobile || can.user.isExtension || can.user.Search(can, POD)? ["River"]: ["pack"], function(item) {
|
||||||
return {view: "item", list: [{type: "input", data: {type: "button", name: item, value: item.toLowerCase()}, onclick: function(event) {
|
return {view: "item", list: [{type: "input", data: {type: "button", name: item, value: item.toLowerCase()}, onclick: function(event) {
|
||||||
var cb = can.onaction[item]; typeof cb == "function" && (item == "River"? cb(can): cb(event, can, item))
|
var cb = can.onaction[item]; typeof cb == "function" && (item == "River"? cb(can): cb(event, can, item))
|
||||||
}, }]}
|
}, }]}
|
||||||
}))
|
}))
|
||||||
},
|
},
|
||||||
_state: function(can, msg, target) {
|
_state: function(can, msg, target) {
|
||||||
can.core.List(can.Conf("state")||["time", USERNAME], function(item) {
|
can.core.List(can.Conf(STATE)||["time", USERNAME], function(item) {
|
||||||
can.page.Append(can, target, [{view: ["state "+item, "div", can.Conf(item)],
|
can.page.Append(can, target, [{view: ["state "+item, "div", can.Conf(item)],
|
||||||
click: function(event) { can.onaction[item](event, can, item) },
|
click: function(event) { can.onaction[item](event, can, item) },
|
||||||
_init: function(target) {
|
_init: function(target) {
|
||||||
@ -45,7 +46,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.onaction.Footer(can)
|
can.onaction.Footer(can)
|
||||||
} else if (can.user.isExtension) {
|
} else if (can.user.isExtension) {
|
||||||
can.onaction.River(can)
|
can.onaction.River(can)
|
||||||
} else if (can.user.Search(can, "pod")) {
|
} else if (can.user.Search(can, POD)) {
|
||||||
can.onaction.River(can)
|
can.onaction.River(can)
|
||||||
can.onaction.Footer(can)
|
can.onaction.Footer(can)
|
||||||
}
|
}
|
||||||
@ -77,36 +78,23 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
}) })
|
}) })
|
||||||
},
|
},
|
||||||
|
|
||||||
time: function(can, target) {
|
time: function(can, target) { target.innerHTML = can.base.Time(null, "%w %H:%M:%S")
|
||||||
target.innerHTML = can.base.Time(null, "%w %H:%M:%S")
|
can.user.Search(can, TOPIC) || can.user.Search(can, POD) || can.user.topic(can, can.base.isNight()? "black": "white")
|
||||||
|
|
||||||
if (can.user.Search(can, "topic")) { return }
|
|
||||||
if (can.user.Search(can, "pod")) { return }
|
|
||||||
|
|
||||||
var h = parseInt(can.base.Time(null, "%H"))
|
|
||||||
can.user.topic(can, h<7 || h>17? "black": "white")
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
function init() { can.run({}, [], function(msg) {
|
function init() { can.run({}, [], function(msg) { can.Conf(USERNAME, msg.Option("user.nick")||msg.Option("user.name"))
|
||||||
const USERNAME = "username"
|
|
||||||
can.Conf(USERNAME, msg.Option("user.nick")||msg.Option("user.name"))
|
|
||||||
can.Conf(USERNAME).length > 10 && can.Conf(USERNAME, can.Conf(USERNAME).slice(0, 10))
|
|
||||||
|
|
||||||
can.onimport._init(can, msg, list, function(msg) {
|
can.onimport._init(can, msg, list, function(msg) {
|
||||||
can.run({}, ["search", "River.onaction._init"])
|
can.run({}, ["search", "River.onaction._init"])
|
||||||
can.run({}, ["search", "Footer.onaction._init"])
|
can.run({}, ["search", "Footer.onaction._init"])
|
||||||
}, can._output)
|
}, can._output)
|
||||||
}) }
|
}) }
|
||||||
|
|
||||||
can.user.topic(can, can.user.Search(can, "topic") || (can.user.Search(can, "pod") || can.base.isNight() ? "black": "white"))
|
can.user.topic(can, can.user.Search(can, TOPIC) || (can.user.Search(can, POD)||can.base.isNight() ? "black": "white"))
|
||||||
|
can.user.isLocalFile? init(): can.run({}, ["check"], function(msg) { msg.Result()? init(): can.user.login(can, init) })
|
||||||
can.user.isLocalFile? init(): can.run({}, ["check"], function(msg) {
|
|
||||||
msg.Result()? init(): can.user.login(can, init)
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
title: function(event, can) {
|
title: function(event, can) {
|
||||||
var args = {}; can.core.List(["pod", "topic", "title"], function(key) {
|
var args = {}; can.core.List([POD, TOPIC, TITLE], function(key) {
|
||||||
var value = can.user.Search(can, key); value && (args[key] = value)
|
var value = can.user.Search(can, key); value && (args[key] = value)
|
||||||
})
|
})
|
||||||
can.user.jumps(can, can.user.Share(can, args, true))
|
can.user.jumps(can, can.user.Share(can, args, true))
|
||||||
@ -114,14 +102,10 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
|
|||||||
username: function(event, can) { can.user.logout(can) },
|
username: function(event, can) { can.user.logout(can) },
|
||||||
|
|
||||||
pack: function(event, can, key) {
|
pack: function(event, can, key) {
|
||||||
can.core.Item(Volcanos.meta.pack, function(key, msg) {
|
can.core.Item(Volcanos.meta.pack, function(key, msg) { delete(msg._event), delete(msg._can) })
|
||||||
delete(msg._event), delete(msg._can)
|
var msg = can.request(event, {name: "demo", content: JSON.stringify(Volcanos.meta.pack)})
|
||||||
})
|
|
||||||
|
|
||||||
var toast = can.user.toast(can, "打包中...", "webpack", 1000000)
|
var toast = can.user.toast(can, "打包中...", "webpack", 1000000)
|
||||||
var msg = can.request(event)
|
|
||||||
msg.Option("name", "demo")
|
|
||||||
msg.Option("content", JSON.stringify(Volcanos.meta.pack))
|
|
||||||
can.run(event, ["pack"], function(msg) {
|
can.run(event, ["pack"], function(msg) {
|
||||||
toast.Close(), can.user.toast(can, "打包成功", "webpack")
|
toast.Close(), can.user.toast(can, "打包成功", "webpack")
|
||||||
})
|
})
|
||||||
@ -131,4 +115,4 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
|
|||||||
Footer: function(can) { can.run({}, ["search", "River.onmotion.autosize"]) },
|
Footer: function(can) { can.run({}, ["search", "River.onmotion.autosize"]) },
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: []})
|
Volcanos("onexport", {help: "导出数据", list: []})
|
||||||
|
})()
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
const RIVER = "river", STORM = "storm"
|
(function() { const RIVER = "river", STORM = "storm", POD = "pod"
|
||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
can._main_river = can.user.Search(can, RIVER) || (can.user.isMobile || can.user.isExtension? "product": "project")
|
can._main_river = can.user.Search(can, RIVER) || (can.user.isMobile||can.user.isExtension? "product": "project")
|
||||||
can._main_storm = can.user.Search(can, STORM) || (can.user.isMobile || can.user.isExtension? "office": "studio")
|
can._main_storm = can.user.Search(can, STORM) || (can.user.isMobile||can.user.isExtension? "office": "studio")
|
||||||
|
|
||||||
target.innerHTML = "", can.sublist = {}
|
can.onmotion.clear(can), can.sublist = {}
|
||||||
var select; msg.Table(function(value, index, array) {
|
var select; msg.Table(function(value, index, array) {
|
||||||
var view = can.onappend.item(can, target, "item", value, function(event, item) {
|
var view = can.onappend.item(can, target, "item", value, function(event, item) {
|
||||||
// 左键点击
|
// 左键点击
|
||||||
can.onaction.storm(event, can, value.hash)
|
can.onaction.storm(event, can, value.hash)
|
||||||
}, function(event) {
|
}, function(event) {
|
||||||
// 右键点击
|
// 右键点击
|
||||||
can.user.carte(can, {}, can.ondetail.list, function(ev, item, meta) {
|
can.user.carte(can, can.ondetail, can.ondetail.list, function(ev, item, meta) {
|
||||||
can.ondetail[item](event, can, item, value.hash)
|
can.ondetail[item](event, can, item, value.hash)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -36,23 +36,21 @@ Volcanos("onaction", {help: "控件交互", list: ["创建", "刷新"], _init: f
|
|||||||
return {text: [storm.name, "div", "subitem"], onclick: function(event) {
|
return {text: [storm.name, "div", "subitem"], onclick: function(event) {
|
||||||
// 左键点击
|
// 左键点击
|
||||||
can.onaction.action(event, can, river, storm.hash)
|
can.onaction.action(event, can, river, storm.hash)
|
||||||
can.user.title(can.user.Search(can, "pod") || storm.name)
|
can.user.title(can.user.Search(can, POD) || storm.name)
|
||||||
}, oncontextmenu: function(event) {
|
}, oncontextmenu: function(event) {
|
||||||
// 右键点击
|
// 右键点击
|
||||||
can.user.carte(can, {}, ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"], function(ev, item, meta) {
|
can.user.carte(can, can.ondetail, ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"], function(ev, item, meta) {
|
||||||
can.ondetail[item](event, can, item, storm.hash, river)
|
can.ondetail[item](event, can, item, storm.hash, river)
|
||||||
})
|
})
|
||||||
}}
|
}}
|
||||||
}) }]).sublist, select < list.children.length && list.children[select].click()
|
}) }]).sublist, list.children.length > 0 && list.children[select].click()
|
||||||
|
|
||||||
event.target.nextSibling && can._output.insertBefore(list, event.target.nextSibling)
|
event.target.nextSibling && can._output.insertBefore(list, event.target.nextSibling)
|
||||||
can.sublist[river] = list
|
can.sublist[river] = list
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
action: function(event, can, river, storm) {
|
action: function(event, can, river, storm) {
|
||||||
var msg = can.request(event)
|
var msg = can.request(event, {river: can.Conf(RIVER, river), storm: can.Conf(STORM, storm)})
|
||||||
msg.Option(RIVER, can.Conf(RIVER, river))
|
|
||||||
msg.Option(STORM, can.Conf(STORM, storm))
|
|
||||||
can.run(event, ["search", "Action.onaction._init"])
|
can.run(event, ["search", "Action.onaction._init"])
|
||||||
|
|
||||||
can.page.Select(can, can._output, "div.subitem.select", function(item) {
|
can.page.Select(can, can._output, "div.subitem.select", function(item) {
|
||||||
@ -169,4 +167,4 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: []})
|
Volcanos("onexport", {help: "导出数据", list: []})
|
||||||
|
})()
|
||||||
|
111
pane/Search.js
111
pane/Search.js
@ -1,93 +1,31 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta, list, cb) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
typeof cb == "function" && cb()
|
typeof cb == "function" && cb(msg)
|
||||||
},
|
},
|
||||||
|
|
||||||
input: function(can, msg, cmd, cb) { can._output.innerHTML = ""
|
select: function(can, msg, cmd, cb) { can.onmotion.clear(can)
|
||||||
can.cb = cb
|
|
||||||
can.ui = can.page.Append(can, can._output, [{view: "content"}, {view: "display"}])
|
|
||||||
can.page.Modify(can, can._target, {style: {display: "block"}})
|
|
||||||
|
|
||||||
can.page.Select(can, can._action, "input[name=word]", function(item) { item.value = cmd[1] })
|
|
||||||
var msg = can.request({})
|
|
||||||
can.run(msg._event, ["search", "River.onexport.key"])
|
|
||||||
|
|
||||||
can.run(msg._event, cmd, function(msg) {
|
|
||||||
can.onappend.table(can, msg, can.ui.content, "table", function(value, key, index, line) {
|
|
||||||
return {text: [value, "td"], onclick: function(event) {
|
|
||||||
can.Status("index", index)
|
|
||||||
can.Status("value", value)
|
|
||||||
can.run(event, ["render", line.type, line.name, line.text], function(msg) {
|
|
||||||
can.ui.display.innerHTML = ""
|
|
||||||
can.onappend.table(can, msg, can.ui.display, "table")
|
|
||||||
can.onappend.board(can, msg, can.ui.display, "board")
|
|
||||||
})
|
|
||||||
}}
|
|
||||||
ca.run(event, [""])
|
|
||||||
})
|
|
||||||
|
|
||||||
can.Status("count", msg.append && msg.append[0] && msg[msg.append[0]].length || 0)
|
|
||||||
can.onappend.board(can, msg, can.ui.content, "board")
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
active: function(can, msg, cmd, cb) { can._output.innerHTML = ""
|
|
||||||
function search(word) { cmd[1] = word || ""
|
|
||||||
var ev = {}; var res = can.request(ev); res.Copy(msg)
|
|
||||||
can.run(ev, cmd, function(res) { can.ui.content.innerHTML = ""
|
|
||||||
can.onappend.table(can, res, can.ui.content, "table", function(value, key, index, line) {
|
|
||||||
can.Status("count", index+1)
|
|
||||||
return {text: [value, "td"], onclick: function(event) {
|
|
||||||
typeof cb == "function" && cb(line)
|
|
||||||
can.Status("index", index)
|
|
||||||
can.Status("value", value)
|
|
||||||
}}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
can.ui = can.page.Append(can, can._output, [
|
|
||||||
{input: ["word", function(event) {
|
|
||||||
if (event.key == "Enter") {
|
|
||||||
search(event.target.value)
|
|
||||||
}
|
|
||||||
}], value: cmd[1]||""},
|
|
||||||
{view: "content"},
|
|
||||||
])
|
|
||||||
can.page.Modify(can, can._target, {style: {display: "block"}})
|
|
||||||
can.ui.input.focus()
|
|
||||||
search(cmd[1])
|
|
||||||
},
|
|
||||||
|
|
||||||
select: function(can, msg, cmd, cb) { can._output.innerHTML = ""
|
|
||||||
var fields = (msg.Option("fields")||"pod,ctx,cmd,type,name,text").split(",")
|
var fields = (msg.Option("fields")||"pod,ctx,cmd,type,name,text").split(",")
|
||||||
|
|
||||||
function search(word, cb) { cmd[1] = word
|
function search(word, cb) { cmd[1] = word
|
||||||
var msg = can.request({})
|
var msg = can.request({}, {fields: fields.join(",")})
|
||||||
msg.Option("fields", fields.join(","))
|
can.run(msg._event, cmd, function(msg) { can.onmotion.clear(can, can.ui.content)
|
||||||
can.run(msg._event, cmd, function(msg) { can.ui.content.innerHTML = ""
|
|
||||||
can.onappend.table(can, msg, can.ui.content, "table", function(value, key, index, line) {
|
can.onappend.table(can, msg, can.ui.content, "table", function(value, key, index, line) {
|
||||||
can.Status("count", index+1)
|
can.Status("count", index+1)
|
||||||
return {text: [value, "td"], onclick: function(event) {
|
|
||||||
can.Status("index", index)
|
|
||||||
can.Status("value", value)
|
|
||||||
|
|
||||||
|
return {text: [value, "td"], onclick: function(event) {
|
||||||
can.page.Append(can, can.ui.table, [{td: can.core.List(fields, function(item) {
|
can.page.Append(can, can.ui.table, [{td: can.core.List(fields, function(item) {
|
||||||
return line[item]
|
return line[item]
|
||||||
}), data: {index: index}, onclick: function(event) {
|
}), data: {index: index}, onclick: function(event) {
|
||||||
can.page.Remove(can, event.target.parentNode)
|
can.page.Remove(can, event.target.parentNode)
|
||||||
|
can.Status("selected", can.page.Select(can, can.ui.table, "tr").length-1)
|
||||||
}}])
|
}}])
|
||||||
|
can.Status("selected", can.page.Select(can, can.ui.table, "tr").length-1)
|
||||||
}}
|
}}
|
||||||
})
|
})
|
||||||
typeof cb == "function" && cb(msg)
|
typeof cb == "function" && cb(msg)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
can.cb = function() {
|
can.ui = can.page.Append(can, can._output, [
|
||||||
typeof cb == "function" && cb(can.page.Select(can, can.ui.display, "tr", function(tr) {
|
|
||||||
return can.page.Select(can, tr, "td", function(td) { return td.innerHTML })
|
|
||||||
}).slice(1))
|
|
||||||
can.onaction.close(can)
|
|
||||||
}, can.ui = can.page.Append(can, can._output, [
|
|
||||||
{input: ["word", function(event) {
|
{input: ["word", function(event) {
|
||||||
if (event.key == "Enter") { search(event.target.value, function(msg) {
|
if (event.key == "Enter") { search(event.target.value, function(msg) {
|
||||||
var list = can.page.Select(can, can.ui.content, "tr"); if (list.length == 2) {
|
var list = can.page.Select(can, can.ui.content, "tr"); if (list.length == 2) {
|
||||||
@ -97,30 +35,23 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta,
|
|||||||
}]},
|
}]},
|
||||||
{view: "content"}, {view: "display", list: [{type: "table", list: [{th: fields}]}]},
|
{view: "content"}, {view: "display", list: [{type: "table", list: [{th: fields}]}]},
|
||||||
])
|
])
|
||||||
can.page.Modify(can, can._target, {style: {display: "block"}})
|
can.cb = function() {
|
||||||
|
typeof cb == "function" && cb(can.page.Select(can, can.ui.display, "tr", function(tr) {
|
||||||
|
return can.page.Select(can, tr, "td", function(td) { return td.innerHTML })
|
||||||
|
}).slice(1)), can.onmotion.hide(can)
|
||||||
|
}
|
||||||
|
|
||||||
|
can.onmotion.show(can)
|
||||||
can.ui.input.focus()
|
can.ui.input.focus()
|
||||||
search(cmd[1])
|
search(cmd[1])
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"], _init: function(can, msg, list, cb, target) {
|
Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"], _init: function(can, msg, list, cb, target) {
|
||||||
can.onexport._init(can, msg, list, cb, target)
|
can.onimport._init(can, msg, list, cb, can._output)
|
||||||
},
|
|
||||||
close: function(can) {
|
|
||||||
can.page.Modify(can, can._target, {style: {display: "none"}})
|
|
||||||
},
|
|
||||||
"关闭": function(event, can, key) {
|
|
||||||
can.onaction.close(can)
|
|
||||||
},
|
|
||||||
"清空": function(event, can, key) {
|
|
||||||
can._output.innerHTML = ""
|
|
||||||
},
|
|
||||||
"完成": function(event, can, key) { can.cb && can.cb() },
|
|
||||||
})
|
|
||||||
Volcanos("ondetail", {help: "交互菜单", list: ["共享", "更名", "删除"],
|
|
||||||
"共享": function(event, can, value, sub) { var msg = sub.request(event)
|
|
||||||
},
|
|
||||||
})
|
|
||||||
Volcanos("onexport", {help: "导出数据", list: ["count", "index", "value"], _init: function(can, msg, list, cb, target) {
|
|
||||||
},
|
},
|
||||||
|
"关闭": function(event, can) { can.onmotion.hide(can) },
|
||||||
|
"清空": function(event, can) { can.onmotion.clear(can) },
|
||||||
|
"完成": function(event, can) { typeof can.cb == "function" && can.cb() },
|
||||||
})
|
})
|
||||||
|
Volcanos("onexport", {help: "导出数据", list: ["selected", "count"]})
|
||||||
|
|
||||||
|
@ -1,7 +1,16 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, list, cb, target) {
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "控件交互", list: [],
|
Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta, list, cb, target) {
|
||||||
|
can.core.Item(can.onaction, function(key, value) {
|
||||||
|
can._target && key.indexOf("on") == 0 && (can._target[key] = can._target[key] || function(event) {
|
||||||
|
value(event, can)
|
||||||
|
})
|
||||||
|
}) , typeof cb == "function" && cb()
|
||||||
|
// 自动执行
|
||||||
|
meta.type == "button" && meta.action == "auto" && can._target.click()
|
||||||
|
},
|
||||||
|
|
||||||
"关闭": function(event, can) { can.page.Remove(can, can.sup._target) },
|
"关闭": function(event, can) { can.page.Remove(can, can.sup._target) },
|
||||||
"上传": function(event, can) { can.user.upload(event, can) },
|
"上传": function(event, can) { can.user.upload(event, can) },
|
||||||
"执行": function(event, can) { can.run(event) },
|
"执行": function(event, can) { can.run(event) },
|
||||||
@ -70,4 +79,5 @@ Volcanos("onaction", {help: "控件交互", list: [],
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
Volcanos("onexport", {help: "导出数据", list: []})
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _merge: function(can, sub)
|
|||||||
]},
|
]},
|
||||||
]); can.core.Copy(can.ui, ui, "display", "output", "cmd")
|
]); can.core.Copy(can.ui, ui, "display", "output", "cmd")
|
||||||
|
|
||||||
typeof cb == "function" && cb()
|
typeof cb == "function" && cb(msg)
|
||||||
can.keylist = [], can.onkeymap._init(can, "insert")
|
can.keylist = [], can.onkeymap._init(can, "insert")
|
||||||
}, target)
|
}, target)
|
||||||
})
|
})
|
||||||
|
@ -6,7 +6,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
{view: ["display", "pre"]},
|
{view: ["display", "pre"]},
|
||||||
])
|
])
|
||||||
|
|
||||||
typeof cb == "function" && cb()
|
typeof cb == "function" && cb(msg)
|
||||||
can.onimport[can.Option("scale")](can, msg)
|
can.onimport[can.Option("scale")](can, msg)
|
||||||
can.page.Modify(can, can._action, {style: {display: "none"}})
|
can.page.Modify(can, can._action, {style: {display: "none"}})
|
||||||
|
|
||||||
|
@ -52,17 +52,17 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
return can.onappend.item(can, can.ui.project, "item", {name: name}, function(event) {
|
return can.onappend.item(can, can.ui.project, "item", {name: name}, function(event) {
|
||||||
can.group = target, can.core.List(["font-size", "storke-width", "stroke", "fill"], function(key) {
|
can.group = target, can.core.List(["font-size", "storke-width", "stroke", "fill"], function(key) {
|
||||||
can.Action(key, target.Value(key)||can.Action(key))
|
can.Action(key, target.Value(key)||can.Action(key))
|
||||||
}), can.onmotion.show(can, target, {value: 100, length: 10})
|
}), can.onmotion.show(can, 10, null, target)
|
||||||
}, function(event) {
|
}, function(event) {
|
||||||
can.user.carte(can, can.onaction||{}, ["隐藏", "显示", "添加", "删除", "清空"], function(ev, item, meta) {
|
can.user.carte(can, can.onaction||{}, ["隐藏", "显示", "添加", "删除", "清空"], function(ev, item, meta) {
|
||||||
switch (item) {
|
switch (item) {
|
||||||
case "显示":
|
case "显示":
|
||||||
can.page.Select(can, can.ui.content, "g."+name, function(item) {
|
can.page.Select(can, can.ui.content, "g."+name, function(item) {
|
||||||
can.onmotion.show(can, target, {value: 100, length: 10})
|
can.onmotion.show(can, 10, null, target)
|
||||||
}); break
|
}); break
|
||||||
case "隐藏":
|
case "隐藏":
|
||||||
can.page.Select(can, can.ui.content, "g."+name, function(item) {
|
can.page.Select(can, can.ui.content, "g."+name, function(item) {
|
||||||
can.onmotion.hide(can, target, {value: 100, length: 10})
|
can.onmotion.hide(can, {value: 100, length: 10}, null, target)
|
||||||
}); break
|
}); break
|
||||||
default:
|
default:
|
||||||
can.onaction[item](event, can, item)
|
can.onaction[item](event, can, item)
|
||||||
|
@ -165,7 +165,7 @@ Volcanos("onaction", {help: "控件交互", list: ["演示"],
|
|||||||
"z-index": 10,
|
"z-index": 10,
|
||||||
}})
|
}})
|
||||||
}, })
|
}, })
|
||||||
can.onmotion.show(can, page, {value: 10, length: 20}, next)
|
can.onmotion.show(can, {value: 10, length: 20}, next, page)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
flash: function(can) {
|
flash: function(can) {
|
||||||
@ -186,7 +186,7 @@ Volcanos("onaction", {help: "控件交互", list: ["演示"],
|
|||||||
can.onaction.show(can, index)
|
can.onaction.show(can, index)
|
||||||
can.ui["布局"].value = "开讲"
|
can.ui["布局"].value = "开讲"
|
||||||
}, })
|
}, })
|
||||||
can.onmotion.show(can, page, {value: 10, length: 20}, next)
|
can.onmotion.show(can, {value: 10, length: 20}, next, page)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
spring: function(can) {
|
spring: function(can) {
|
||||||
@ -210,7 +210,7 @@ Volcanos("onaction", {help: "控件交互", list: ["演示"],
|
|||||||
"z-index": 10,
|
"z-index": 10,
|
||||||
}})
|
}})
|
||||||
}, })
|
}, })
|
||||||
can.onmotion.show(can, page, {value: 10, length: 20}, next)
|
can.onmotion.show(can, {value: 10, length: 20}, next, page)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -51,3 +51,4 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
|||||||
} })
|
} })
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
Volcanos("onexport", {help: "导出数据", list: []})
|
||||||
|
@ -231,3 +231,4 @@ Volcanos("onaction", {help: "控件交互", list: [],
|
|||||||
can.run({})
|
can.run({})
|
||||||
}, true) },
|
}, true) },
|
||||||
})
|
})
|
||||||
|
Volcanos("onexport", {help: "导出数据", list: []})
|
||||||
|
4
proto.js
4
proto.js
@ -31,7 +31,7 @@ var Volcanos = shy("火山架", {libs: [], pack: {}, order: 1, cache: {}, index:
|
|||||||
}
|
}
|
||||||
|
|
||||||
var conf = {}, conf_cb = {}, cache = {}
|
var conf = {}, conf_cb = {}, cache = {}
|
||||||
can = can || {}, list.push(can) && (can.__proto__ = {_name: name, _create_time: new Date(), _load: function(name, cb) {
|
can = can || {}, list.push(can) && (can.__proto__ = {__proto__: Volcanos.meta, _name: name, _create_time: new Date(), _load: function(name, cb) {
|
||||||
for (var cache = meta.cache[name] || []; meta.index < list.length; meta.index++) {
|
for (var cache = meta.cache[name] || []; meta.index < list.length; meta.index++) {
|
||||||
if (name == "/plugin/input/date.css" && cache.length > 0) { continue }
|
if (name == "/plugin/input/date.css" && cache.length > 0) { continue }
|
||||||
if (name == "/lib/base.js" && cache.length > 0) { continue }
|
if (name == "/lib/base.js" && cache.length > 0) { continue }
|
||||||
@ -92,7 +92,7 @@ var Volcanos = shy("火山架", {libs: [], pack: {}, order: 1, cache: {}, index:
|
|||||||
request: function(event, option) { event = event || {}
|
request: function(event, option) { event = event || {}
|
||||||
if (event._msg) {
|
if (event._msg) {
|
||||||
can.core.Item(option, function(key, value) {
|
can.core.Item(option, function(key, value) {
|
||||||
msg.Option(key, value)
|
event._msg.Option(key, value)
|
||||||
})
|
})
|
||||||
return event._msg
|
return event._msg
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user