mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt input
This commit is contained in:
parent
a41445b91f
commit
b50208ed8b
16
frame.js
16
frame.js
@ -179,7 +179,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
_action: function(can, list, action, meta) { meta = meta||can.onaction||{}, action = action||can._action, can.onmotion.clear(can, action)
|
||||
return can.core.List(can.page.inputs(can, can.base.getValid(can.base.Obj(list), can.core.Value(can, [chat.ONACTION, mdb.LIST]), can.core.Item(meta))||[]), function(item) {
|
||||
!can.base.isUndefined(item) && can.onappend.input(can, item == ""? /* 空白 */ {type: html.SPACE}:
|
||||
can.base.isString(item)? /* 按键 */ {type: html.BUTTON, name: item, value: can.user.trans(can, item), onclick: function(event) {
|
||||
can.base.isString(item)? /* 按键 */ {type: html.BUTTON, name: item, value: can.user.trans(can, item, meta._trans), onclick: function(event) {
|
||||
var cb = meta[item]||meta[chat._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[chat._ENGINE]; cb? can.core.CallFunc(cb, {event: event, can: can, button: item}): can.run(event, [ctx.ACTION, item].concat(can.sup.Input()))
|
||||
@ -335,7 +335,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
},
|
||||
figure: function(can, meta, target, cb) { if (meta.action == ice.AUTO || can.base.isIn(meta.type, html.BUTTON)) { return }
|
||||
var input = meta.action||mdb.KEY; can.require([chat.PLUGIN_INPUT+input+nfs._JS], function(can) {
|
||||
function _cb(sub, value, old) { if (value == old) { return } can.base.isFunc(cb)? cb(sub, value, old): target.value = value||"", can.onmotion.focus(can, target) }
|
||||
function _cb(sub, value, old) { if (value == old) { return } can.base.isFunc(cb)? cb(sub, value, old): target.value = value||"", can.onmotion.delay(can, function() { can.onmotion.focus(can, target) }) }
|
||||
can.core.ItemCB(can.onfigure[input], function(key, on) { var last = target[key]||function(){}; target[key] = function(event) {
|
||||
target._can && can.onlayout.figure(event, can, target._can._target)
|
||||
can.core.CallFunc(on, {event: event, can: can, meta: meta, cb: _cb, target: target, sub: target._can, last: last, cbs: function(cb) {
|
||||
@ -345,14 +345,14 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
if (meta.range) { for (var i = meta.range[0]; i < meta.range[1]; i += meta.range[2]||1) { msg.Push(mdb.VALUE, i) } cb(msg); return }
|
||||
(meta.run||can.run)(sub.request(event, can.Option()), cmds, cb, true)
|
||||
}, target._can = sub, can.base.Copy(sub, can.onfigure[input], true)
|
||||
sub.close = function() { can.page.Remove(can, sub._target), delete(target._can) }
|
||||
sub.hidden = function() { return sub._target.style.display == html.NONE }
|
||||
can.onlayout.figure({target: target}, can, sub._target), can.page.style(sub, sub._target, meta.style)
|
||||
can.page.style(can, sub._output, html.MAX_HEIGHT, can.base.Max(can.page.height()-sub._target.offsetTop-2*html.ACTION_HEIGHT, can.page.height()/2))
|
||||
can.base.isFunc(cb) && cb(sub, _cb), can.base.isFunc(meta._init) && meta._init(sub, sub._target)
|
||||
sub.close = function() { can.page.Remove(can, sub._target), delete(target._can) }
|
||||
can.onmotion.delay(can, function() { can.onlayout.figure({target: target}, can, sub._target), can.page.style(sub, sub._target, meta.style)
|
||||
can.page.style(can, sub._output, html.MAX_HEIGHT, can.base.Max(can.page.height()-sub._target.offsetTop-2*html.ACTION_HEIGHT, can.page.height()/2))
|
||||
}), can.base.isFunc(cb) && cb(sub, _cb), can.base.isFunc(meta._init) && meta._init(sub, sub._target)
|
||||
}, document.body)
|
||||
}})
|
||||
} }), can.onfigure[input]._init && can.onfigure[input]._init(can, target, _cb)
|
||||
} }), can.onfigure[input]._init && can.onfigure[input]._init(can, meta, target, _cb)
|
||||
})
|
||||
},
|
||||
})
|
||||
@ -471,7 +471,7 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
|
||||
}) },
|
||||
|
||||
delay: function(can, cb, interval) { can.core.Timer(interval||30, cb) },
|
||||
clear: function(can, target) { return can.page.Modify(can, target||can._output, ""), true },
|
||||
clear: function(can, target) { return can.page.Modify(can, target||can._output, ""), target },
|
||||
cache: function(can, next) { var list = can.base.Obj(can.core.List(arguments).slice(2), [can._output])
|
||||
can.core.List(list, function(target) { target && target._cache_key && can.page.Cache(target._cache_key, target, target.scrollTop+1) })
|
||||
var key = next(can._cache_data = can._cache_data||{}, arguments[2]._cache_key); if (!key) { return }
|
||||
|
@ -95,7 +95,7 @@ Volcanos("base", {
|
||||
} return res
|
||||
},
|
||||
AddUniq: function(list, value) { list = list||[]; return list.indexOf(value) == -1 && list.push(value), list },
|
||||
isIn: function(item) { var args = arguments; for (var i = 1; i < args; i++) {
|
||||
isIn: function(item) { var args = arguments; for (var i = 1; i < args.length; i++) {
|
||||
if (typeof args[i] == lang.OBJECT && args[i].length > 0 && args[i].indexOf(item) > -1) { return true }
|
||||
if (item == args[i]) { return true }
|
||||
} },
|
||||
@ -146,7 +146,7 @@ Volcanos("base", {
|
||||
},
|
||||
|
||||
beginWith: function(str, begin) { return typeof str == lang.STRING && str.trim().indexOf(begin) == 0 },
|
||||
endWith: function(str, end) { return str.lastIndexOf(end) + end.length == str.length },
|
||||
endWith: function(str, end) { return typeof str == lang.STRING && str.lastIndexOf(end) + end.length == str.length },
|
||||
trim: function(args) { if (this.isString(args)) { return args.trim() }
|
||||
if (this.isArray(args)) { for (var i = args.length-1; i >= 0; i--) { if (!args[i]) { args.pop() } else { break } } }
|
||||
return args
|
||||
|
@ -13,6 +13,7 @@ Volcanos("page", {ClassList: {
|
||||
can.page.Select(can, target, html.IFRAME, function(item) { can.page.SelectAll(can, item.contentWindow.document.body, key, cb, interval, cbs) })
|
||||
return can.core.List(target && target.querySelectorAll(key), cb, interval, cbs)
|
||||
},
|
||||
SelectInput: function(can, target, name, cb) { return can.page.Select(can, target, "input[name="+name+"]", cb) },
|
||||
SelectArgs: function(can, option, key, cb) {
|
||||
if (can.base.isUndefined(key)) { var value = {}; can.page.SelectArgs(can, option, "", function(item) { item.name && item.value && (value[item.name] = item.value) }); return [value] }
|
||||
if (can.base.isObject(key)) { return can.core.Item(key, function(key, value) { can.page.SelectArgs(can, option, key, value) }), [key] }
|
||||
@ -29,10 +30,10 @@ Volcanos("page", {ClassList: {
|
||||
can.base.isString(value)? (target.innerHTML = value): can.core.Item(value, function(key, val) {
|
||||
key == "className" && can.base.isArray(val) && (val = val.join(ice.SP))
|
||||
!can.base.isObject(val)? (target[key] = val): can.core.Item(val, function(k, v) {
|
||||
if (["height", "max-height", "min-height", "width", "max-width", "min-width"].indexOf(k) > -1 && parseInt(v) < 0) { return target[key] && (target[key][k] = "") }
|
||||
if (["height", "max-height", "min-height", "width", "max-width", "min-width",
|
||||
"left", "right", "top", "bottom", "margin-left", "margin-top", "padding", "font-size",
|
||||
].indexOf(k) > -1 && v && (v&&v.indexOf&&v.indexOf("px") == -1 || can.base.isNumber(v))) { v += "px" }
|
||||
if (can.base.isIn(k, "height", "width", "min-height", "max-height", "min-width", "max-width") && parseInt(v) < 0) { return target[key] && (target[key][k] = "") }
|
||||
if (can.base.isIn(k, "height", "width", "min-height", "max-height", "min-width", "max-width",
|
||||
"left", "top", "right", "bottom", "margin-left", "margin-top", "margin", "padding", "font-size",
|
||||
) && v && (can.base.isNumber(v) || !can.base.endWidth(v, "px"))) { v += "px" }
|
||||
target[key] && (target[key][k] = v)
|
||||
})
|
||||
}); return target
|
||||
|
11
lib/user.js
11
lib/user.js
@ -173,7 +173,7 @@ Volcanos("user", {info: {}, agent: {
|
||||
can.core.Next(list, cb, cbs||function() { can.user.toastSuccess(can) })
|
||||
})
|
||||
},
|
||||
upload: function(event, can, cb) { var begin = new Date()
|
||||
upload: function(event, can, cb, silent) { var begin = new Date()
|
||||
var ui = can.page.Append(can, document.body, [{view: [[html.UPLOAD, chat.FLOAT]], list: [
|
||||
html.ACTION, {view: html.OUTPUT, list: ["progress"]}, {view: html.STATUS, list: [ice.SHOW, cli.COST, nfs.SIZE]},
|
||||
]}]); can.onlayout.figure(event, can, ui._target)
|
||||
@ -182,15 +182,18 @@ Volcanos("user", {info: {}, agent: {
|
||||
begin: function(event) { begin = new Date()
|
||||
var upload = can.page.Select(can, ui.action, html.INPUT_FILE)[0]; if (upload.files.length == 0) { return upload.focus() }
|
||||
var msg = can.request(event, can.Option(), {_handle: ice.TRUE}); msg._upload = upload.files[0], msg._progress = action.show
|
||||
can.runAction(event, html.UPLOAD, [], cb||function(msg) { can.user.toastSuccess(can), can.Update(), action.close() })
|
||||
can.runAction(event, html.UPLOAD, [], function(msg) { action.close()
|
||||
if (can.base.isFunc(cb)) { return cb(msg) }
|
||||
can.user.toastSuccess(can), can.Update()
|
||||
})
|
||||
},
|
||||
show: function (event, value, total, loaded) {
|
||||
ui.cost.innerHTML = can.base.Duration(new Date() - begin)
|
||||
ui.show.innerHTML = value+"%", value == 0 && action.begin(event)
|
||||
ui.size.innerHTML = can.base.Size(loaded)+ice.PS+can.base.Size(total)
|
||||
can.page.styleWidth(can, ui.progress, value*(ui.output.offsetWidth-2)/100)
|
||||
},
|
||||
}); can.page.Select(can, ui.action, html.INPUT_FILE)[0].click(); return action
|
||||
}, _target: ui._target,
|
||||
}); can.page.Select(can, ui.action, html.INPUT_FILE)[0].click(), silent && can.onmotion.hidden(can, ui._target); return action
|
||||
},
|
||||
download: function(can, path, name, ext) {
|
||||
var a = can.page.Append(can, document.body, [{type: html.A, href: path, download: can.core.Keys(name, ext)||path.split(ice.PS).pop()}]).first
|
||||
|
@ -2,7 +2,7 @@ body, fieldset, table, tr, th, td { padding:0; border:0; margin:0; }
|
||||
body { background-color:black; color:cyan; font-size:16px; overflow:hidden; }
|
||||
legend { background-color:cadetblue; color:white; padding:0 20px; margin-right:2px; float:left; }
|
||||
select { background-color:black; color:cyan; padding:0 10px; margin:0 2px; border:0; }
|
||||
textarea { background-color:cyan; width:400px; padding:5px; border:0; }
|
||||
textarea { background-color:cyan; width:400px; padding:5px; border:0; margin:2px; }
|
||||
input[type=password] { background-color:cyan; color:black; padding:0 5px; border:0; width:90px; }
|
||||
input[type=text] { background-color:cyan; color:black; padding:0 5px; margin:0 2px; border:0; width:90px; }
|
||||
input[name=cmd] { background-color:black; color:white; width:320px; }
|
||||
@ -85,6 +85,9 @@ fieldset.input.date div.output td.prev { color:gray; }
|
||||
fieldset.input.date div.output td.next { color:gray; }
|
||||
fieldset.input.date div.output td { padding:2px 10px; }
|
||||
fieldset.input.date table { text-align:center; width:280px; }
|
||||
fieldset.input.date select { width:63px; }
|
||||
fieldset.input.date select[name=month] { width:70px; }
|
||||
fieldset.input.date select[name=year] { width:88px; }
|
||||
|
||||
body>div.toast div.action>div.item.space { height:unset; }
|
||||
body>div.float { background-color:#0e3369b3; color:white; padding:5px; }
|
||||
|
@ -53,7 +53,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
|
||||
_time: function(can, target) {
|
||||
can.core.Timer({interval: 500}, function() { can.onimport.time(can, target) })
|
||||
can.onappend.figure(can, {action: "date", style: {"min-width": 306}}, target), target.onmouseenter = target.click
|
||||
can.onappend.figure(can, {action: "date"}, target), target.onmouseenter = target.click
|
||||
},
|
||||
time: function(can, target) {
|
||||
can.onimport.topic(can), target.innerHTML = can.user.time(can, null, "%w %H:%M:%S")
|
||||
|
@ -1,41 +1,36 @@
|
||||
Volcanos(chat.ONFIGURE, {date: {
|
||||
onclick: function(event, can, meta, target, cbs) { cbs(function(can, cb) {
|
||||
function set(now) { cb(can, can.user.time(can, now), target.value) }
|
||||
const TODAY = "today", YEAR = "year", MONTH = "month", HOUR = "hour", MINUTE = "minute", SECOND = "second"
|
||||
var today = new Date(), now = can.base.Date(target.value); function _cb(_now) { cb(can, can.user.time(can, now = _now), target.value) }
|
||||
can.onappend._action(can, [cli.CLOSE, [HOUR].concat(can.core.List(24)), [MINUTE].concat(can.core.List(0, 60, 5)), [SECOND].concat(can.core.List(0, 60, 5)),
|
||||
TODAY, "", mdb.PREV, [YEAR].concat(can.core.List(now.getFullYear() - 10, now.getFullYear() + 10)), [MONTH].concat(can.core.List(1, 13)), mdb.NEXT,
|
||||
], can.onmotion.clear(can, can._action), kit.Dict(cli.CLOSE, function() { can.close() },
|
||||
HOUR, function(event, can, button, value) { now.setHours(parseInt(value)||0), show(now) },
|
||||
MINUTE, function(event, can, button, value) { now.setMinutes(parseInt(value)||0), show(now) },
|
||||
SECOND, function(event, can, button, value) { now.setSeconds(parseInt(value)||0), show(now) },
|
||||
TODAY, function() { _cb(show(today)) },
|
||||
|
||||
var now = target.value? new Date(target.value): new Date()
|
||||
can.user.trans(can, kit.Dict("today", "今天", mdb.NEXT, "下一月", mdb.PREV, "上一月"))
|
||||
can.onmotion.clear(can, can._action), can.onappend._action(can, [cli.CLOSE,
|
||||
["hour"].concat(can.core.List(24)), ["minute"].concat(can.core.List(0, 60, 5)), ["second"].concat(can.core.List(0, 60, 5)),
|
||||
"today", "", mdb.PREV, ["year"].concat(can.core.List(now.getFullYear() - 10, now.getFullYear() + 10)),
|
||||
["month"].concat(can.core.List(1, 13)), mdb.NEXT,
|
||||
], can._action, {close: function(event) { can.close() },
|
||||
"hour": function(event, can, key, value) { now.setHours(parseInt(value)||0), show(now) },
|
||||
"minute": function(event, can, key, value) { now.setMinutes(parseInt(value)||0), show(now) },
|
||||
"second": function(event, can, key, value) { now.setSeconds(parseInt(value)||0), show(now) },
|
||||
"today": function(event) { now = new Date(), set(show(now)) },
|
||||
mdb.PREV, function() { now.setMonth(now.getMonth()-1), _cb(show(now)) },
|
||||
YEAR, function(event, can, button, value) { now.setFullYear(parseInt(value)), show(now) },
|
||||
MONTH, function(event, can, button, value) { now.setMonth(parseInt(value)-1), show(now) },
|
||||
mdb.NEXT, function() { now.setMonth(now.getMonth()+1), _cb(show(now)) },
|
||||
|
||||
"prev": function(event) { now.setMonth(now.getMonth()-1), set(show(now)) },
|
||||
"year": function(event, can, key, value) { now.setFullYear(parseInt(value)), show(now) },
|
||||
"month": function(event, can, key, value) { now.setMonth(parseInt(value)-1), show(now) },
|
||||
"next": function(event) { now.setMonth(now.getMonth()+1), set(show(now)) },
|
||||
|
||||
"随机": function(event) { now.setDate((Math.random() * 100 - 50) + now.getDate()), show(now) },
|
||||
"前一年": function(event) { now.setFullYear(now.getFullYear()-1), show(now) },
|
||||
"后一年": function(event) { now.setFullYear(now.getFullYear()+1), show(now) },
|
||||
})
|
||||
|
||||
can._table = can.page.Appends(can, can._output, [{view: [chat.CONTENT, html.TABLE]}]).first
|
||||
var today = new Date(); function show(now) {
|
||||
can.Action("year", now.getFullYear())
|
||||
can.Action("month", now.getMonth()+1)
|
||||
can.Action("hour", now.getHours())
|
||||
can.Action("minute", parseInt(now.getMinutes()/5)*5)
|
||||
can.Action("second", parseInt(now.getSeconds()/5)*5)
|
||||
"rand", function() { now.setDate((Math.random() * 100 - 50) + now.getDate()), show(now) },
|
||||
"over", function() { now.setFullYear(now.getFullYear()-1), show(now) },
|
||||
"come", function() { now.setFullYear(now.getFullYear()+1), show(now) },
|
||||
chat._TRANS, kit.Dict(TODAY, "今天", mdb.NEXT, "下一月", mdb.PREV, "上一月", "over", "去年", "come", "今年"),
|
||||
)), can._table = can.page.Appends(can, can._output, [{view: [chat.CONTENT, html.TABLE]}]).first
|
||||
function show(now) {
|
||||
can.Action(YEAR, now.getFullYear())
|
||||
can.Action(MONTH, now.getMonth()+1)
|
||||
can.Action(HOUR, now.getHours())
|
||||
can.Action(MINUTE, parseInt(now.getMinutes()/5)*5)
|
||||
can.Action(SECOND, parseInt(now.getSeconds()/5)*5)
|
||||
|
||||
can.page.Appends(can, can._table, [{th: ["日", "一", "二", "三", "四", "五", "六"]}])
|
||||
var tr; function add(day, type) { if (day.getDay() == 0) { tr = can.page.Append(can, can._table, [{type: html.TR}]).last }
|
||||
can.page.Append(can, tr, [{text: [day.getDate(), html.TD, can.base.Time(today, "%y-%m-%d") == can.base.Time(day, "%y-%m-%d")? html.SELECT: type],
|
||||
dataset: {date: day.getTime()}, onclick: function(event) { set(now = new Date(parseInt(event.target.dataset.date))) },
|
||||
can.page.Append(can, tr, [{text: [day.getDate(), html.TD, can.base.isIn(can.base.Time(day, "%y-%m-%d"), can.base.Time(now, "%y-%m-%d"), can.base.Time(today, "%y-%m-%d"))? html.SELECT: type],
|
||||
onclick: function(event) { _cb(day) },
|
||||
}])
|
||||
}
|
||||
|
||||
@ -48,14 +43,16 @@ Volcanos(chat.ONFIGURE, {date: {
|
||||
for (var day = new Date(one); day < end; day.setDate(day.getDate()+1)) { add(day, mdb.MAIN) }
|
||||
for (var day = new Date(end); end.getDay() != 0 && day < tail; day.setDate(day.getDate()+1)) { add(day, mdb.NEXT) }
|
||||
return now
|
||||
} show(now)
|
||||
can._show = function(_now) { set(now = show(_now)) }
|
||||
can._now = function() { return now }
|
||||
} show(now), can._show = function(d) { _cb(show(new Date(now.getTime()+d*24*3600*1000))) }
|
||||
})},
|
||||
onkeydown: function(event, can, meta, cb, target, sub, last) { if (sub.hidden()) { return } switch (event.key) {
|
||||
case "n": can.page.Select(can, sub._action, "input[name=next]", function(target) { target.click() }); break
|
||||
case "p": can.page.Select(can, sub._action, "input[name=prev]", function(target) { target.click() }); break
|
||||
case "j": sub._show(can.base.TimeAdd(sub._now(), 1)); break
|
||||
case "k": sub._show(can.base.TimeAdd(sub._now(), -1)); break
|
||||
} },
|
||||
case "n": can.page.SelectInput(can, sub._action, mdb.NEXT, function(target) { target.click() }); break
|
||||
case "p": can.page.SelectInput(can, sub._action, mdb.PREV, function(target) { target.click() }); break
|
||||
case "t": can.page.SelectInput(can, sub._action, "today", function(target) { target.click() }); break
|
||||
case "j": sub._show(7); break
|
||||
case "k": sub._show(-7); break
|
||||
case "h": sub._show(-1); break
|
||||
case "l": sub._show(1); break
|
||||
default: return
|
||||
} can.onkeymap.prevent(event) },
|
||||
} })
|
||||
|
@ -1,12 +1,14 @@
|
||||
Volcanos(chat.ONFIGURE, {img: {
|
||||
_init: function(can, target) { can.onmotion.hidden(can, target)
|
||||
for (var i = 0; i < 1; i++) {
|
||||
can.page.Append(can, target.parentNode, [{type: html.DIV, style: {width: 90, height: 90, "background-color": "yellow"}, onclick: function(event) {
|
||||
can.user.upload(event, can, function(msg) {
|
||||
target.value = can.core.Split(target.value).concat([msg.Result()]).join(ice.FS)
|
||||
can.page.Append(can, event.target, [{img: can.misc.MergeURL(can, {_path: "/share/cache/"+msg.Result()}, true), width: 90, height: 90}])
|
||||
})
|
||||
}}])
|
||||
_init: function(can, meta, target) { var images = can.core.Split(target.value); can.onmotion.hidden(can, target)
|
||||
var count = parseInt(meta.value||"1"), width = target.parentNode.offsetWidth-12; for (var n = 1; n < 10; n++) { if (n * n >= count) { width = width/n; break } } width -= 1
|
||||
function add(target, hash) { target._hash = hash, can.page.Appends(can, target, [{img: can.misc.MergeURL(can, {_path: web.SHARE_CACHE+hash}, true), height: width, width: width}]) }
|
||||
function set() { target.value = can.page.SelectChild(can, target.parentNode, html.DIV, function(target) { return target._hash }).join(ice.FS) }
|
||||
for (var i = 0; i < count; i++) {
|
||||
can.page.Append(can, target.parentNode, [{type: html.DIV, style: {
|
||||
"background-color": "yellow", "float": "left", "clear": i%n == 0? "both": "none", "margin": 1, height: width, width: width,
|
||||
}, _init: function(target) { images[i] && add(target, images[i]), target.onclick = function(event) {
|
||||
can.user.upload(event, can, function(msg) { add(target, msg.Result()), set() }, true)
|
||||
} } }])
|
||||
}
|
||||
},
|
||||
}})
|
||||
|
@ -2,8 +2,7 @@ Volcanos(chat.ONFIGURE, {key: {
|
||||
_show: function(can, msg, cb, target, name) { if (msg.Length() == 0 || msg.Length() == 1 && msg.Append(name) == target.value) { return can.onmotion.hidden(can) }
|
||||
can.onmotion.clear(can), can.onappend.table(can, msg, function(value, key, index, line) { value = line[key]
|
||||
return {text: [value, html.TD], style: msg.append && msg.append.length == 1? kit.Dict(html.MIN_WIDTH, target.offsetWidth-16): {}, onclick: function(event) {
|
||||
cb(can, value, target.value), msg.Option(ice.MSG_PROCESS) == ice.PROCESS_AGAIN && can.onmotion.delay(can, function() { can._load(event, can, cb, target, name, value) })
|
||||
can._delay_hidden = true
|
||||
can._delay_hidden = false, cb(can, value, target.value), msg.Option(ice.MSG_PROCESS) == ice.PROCESS_AGAIN && can.onmotion.delay(can, function() { can._load(event, can, cb, target, name, value) })
|
||||
}}
|
||||
}), can.onappend._status(can, [mdb.TOTAL, mdb.INDEX]), can.Status(mdb.TOTAL, msg.Length())
|
||||
},
|
||||
@ -11,21 +10,15 @@ Volcanos(chat.ONFIGURE, {key: {
|
||||
name == ctx.INDEX && can.core.Item(can.onengine.plugin.meta, function(key) { msg.Push(ctx.INDEX, can.core.Keys(ice.CAN, key)) })
|
||||
can._show(can, msg, cb, target, name)
|
||||
}) },
|
||||
onfocus: function(event, can, meta, target, cbs) {
|
||||
cbs(function(sub, cb) { if (sub.Status(mdb.TOTAL) > 0) { return }
|
||||
onclick: function(event, can, meta, target, cbs) { can.onfigure.key.onfocus(event, can, meta, target, cbs) },
|
||||
onfocus: function(event, can, meta, target, cbs) { cbs(function(sub, cb) { if (sub.Status(mdb.TOTAL) > 0) { return }
|
||||
meta.msg && meta.msg.Length() > 0? sub._show(sub, meta.msg, cb, target, meta.name): sub._load(event, sub, cb, target, meta.name, target.value)
|
||||
}) },
|
||||
onclick: function(event, can, meta, target, cbs) {
|
||||
cbs(function(sub, cb) { if (sub.Status(mdb.TOTAL) > 0) { return }
|
||||
meta.msg && meta.msg.Length() > 0? sub._show(sub, meta.msg, cb, target, meta.name): sub._load(event, sub, cb, target, meta.name, target.value)
|
||||
})
|
||||
},
|
||||
onblur: function(event, can, sub) {
|
||||
can.onmotion.delay(can, function() { sub._delay_hidden || can.onmotion.hidden(can, sub._target), sub._delay_hidden = false }, 300)
|
||||
},
|
||||
onblur: function(event, can, sub) { can.onmotion.delay(can, function() { sub._delay_hidden || can.onmotion.hidden(can, sub._target), sub._delay_hidden = false }, 300) },
|
||||
onkeydown: function(event, can, meta, cb, target, sub, last) { if (sub.hidden()) { return } switch (event.key) {
|
||||
case "n":
|
||||
case "p":
|
||||
case lang.ESCAPE: target.blur(); break
|
||||
case lang.TAB: can.onkeymap.selectInputs(event, sub, function() { sub._load(event, sub, cb, target, meta.name) }, target); break
|
||||
case lang.ENTER: if (meta._enter && (!can.page.tagis(event.target, html.TEXTAREA) || event.ctrlKey) && meta._enter(event)) { break }
|
||||
default: can.onkeymap.selectCtrlN(event, can, sub._output, "tr:not(.hidden)>td:first-child", function(td) { return cb(sub, td.innerText, target.value), td }) || last(event)
|
||||
|
@ -1,70 +1,28 @@
|
||||
fieldset.keyboard div.output div.key {
|
||||
fieldset.keyboard>div.output { min-width:750px; }
|
||||
fieldset.keyboard>div.output>br { clear:both; }
|
||||
fieldset.keyboard>div.output>div.key {
|
||||
font-size:24px; text-align:center;
|
||||
background-color:green; color:white; padding:0; margin:5px;
|
||||
height:40px; width:40px; float:left;
|
||||
cursor:pointer;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.double {
|
||||
font-size:16px; white-space:pre;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.special {
|
||||
font-size:16px;
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.special.hold {
|
||||
background-color:green;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.tail {
|
||||
width:70px;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.Tab {
|
||||
width:60px;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.Ctrl {
|
||||
width:70px;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.Shift {
|
||||
width:90px;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.Win {
|
||||
width:60px;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.Alt {
|
||||
width:60px;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.Space {
|
||||
width:300px;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.Shift.tail {
|
||||
width:140px;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.Enter {
|
||||
width:110px;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.Backspace {
|
||||
width:90px;
|
||||
}
|
||||
fieldset.keyboard div.output div.key span {
|
||||
margin-top:2px; display:block;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.special span {
|
||||
margin-top:10px; display:block;
|
||||
}
|
||||
fieldset.keyboard div.output br {
|
||||
clear:both;
|
||||
}
|
||||
fieldset.keyboard div.output div.key:hover {
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.keyboard div.output div.key.special:hover {
|
||||
background-color:green;
|
||||
}
|
||||
fieldset.keyboard div.output {
|
||||
min-width:750px;
|
||||
}
|
||||
fieldset.keyboard>div.output>div.key:hover { background-color:red; }
|
||||
fieldset.keyboard>div.output>div.key.double { font-size:16px; white-space:pre; }
|
||||
fieldset.keyboard>div.output>div.key.special { font-size:16px; background-color:red; }
|
||||
fieldset.keyboard>div.output>div.key.special:hover { background-color:green; }
|
||||
fieldset.keyboard>div.output>div.key.special.hold { background-color:green; }
|
||||
fieldset.keyboard>div.output>div.key.tail { width:70px; }
|
||||
fieldset.keyboard>div.output>div.key.Tab { width:60px; }
|
||||
fieldset.keyboard>div.output>div.key.Ctrl { width:70px; }
|
||||
fieldset.keyboard>div.output>div.key.Shift { width:90px; }
|
||||
fieldset.keyboard>div.output>div.key.Win { width:60px; }
|
||||
fieldset.keyboard>div.output>div.key.Alt { width:60px; }
|
||||
fieldset.keyboard>div.output>div.key.Space { width:300px; }
|
||||
fieldset.keyboard>div.output>div.key.Shift.tail { width:140px; }
|
||||
fieldset.keyboard>div.output>div.key.Enter { width:110px; }
|
||||
fieldset.keyboard>div.output>div.key.Backspace { width:90px; }
|
||||
fieldset.keyboard>div.output>div.key>span { margin-top:2px; display:block; }
|
||||
fieldset.keyboard>div.output>div.key.special>span { margin-top:10px; }
|
||||
|
||||
table.content td input {
|
||||
width:50px;
|
||||
}
|
||||
body.mobile table.content td input {
|
||||
width:80px;
|
||||
}
|
||||
table.content td input { width:50px; }
|
||||
body.mobile table.content td input { width:80px; }
|
||||
|
@ -1,77 +1,34 @@
|
||||
Volcanos(chat.ONFIGURE, {help: "控件详情", keyboard: {
|
||||
onclick: function(event, can, meta, cb, target) {
|
||||
can.onfigure.keyboard._make(event, can, meta, cb, target)
|
||||
},
|
||||
onfocus: function(event, can, meta, cb, target, last) {
|
||||
can.onfigure.keyboard._make(event, can, meta, cb, target)
|
||||
},
|
||||
_make: function(event, can, meta, cb, target, last) {
|
||||
var sub = target._can; if (sub && sub._cbs) { return }
|
||||
cb(function(sub, cbs) { sub._cbs = cbs
|
||||
can.onfigure.keyboard._show(sub, target)
|
||||
})
|
||||
},
|
||||
_show: function(can, target) { can.require(["/plugin/input/keyboard.css"])
|
||||
var msg = can.request({}); can.onfigure.keyboard._normal(can, msg)
|
||||
var keys = {}; function hold(value, div) { keys[value.name] = div, can.page.ClassList.add(can, div, "hold") }
|
||||
msg.Table(function(value) { value.type == "head" && can.page.Append(can, can._output, "br")
|
||||
var t = value.type+" "+value.name+(value.name.indexOf("\n")>-1? " double": value.name.length>1? " special": "")
|
||||
var div = can.page.Append(can, can._output, [{view: t, list: [{text: [value.name]}], onclick: function(event) {
|
||||
switch (value.name) {
|
||||
case "Esc":
|
||||
can.page.Remove(can, can._target)
|
||||
delete(target._can)
|
||||
break
|
||||
case "Ctrl":
|
||||
can._ctrl = !can._ctrl, hold(value, div)
|
||||
break
|
||||
case "Shift":
|
||||
can._shift = !can._shift, hold(value, div)
|
||||
break
|
||||
case "Backspace":
|
||||
if (can.base.isFunc(target)) {
|
||||
target(value.name)
|
||||
} else {
|
||||
target.value = target.value.slice(0, -1)
|
||||
}
|
||||
target.focus(), can.user.toast(can, value.name)
|
||||
break
|
||||
case "Enter":
|
||||
break
|
||||
case "Esc":
|
||||
break
|
||||
default:
|
||||
function add(value) {
|
||||
if (can.base.isFunc(target)) {
|
||||
target(value)
|
||||
} else {
|
||||
target.value += value
|
||||
target.focus(), can.user.toast(can, value.name)
|
||||
}
|
||||
}
|
||||
|
||||
can._shift = can._shift||event.shiftKey
|
||||
if (value.name == "Tab") {
|
||||
add("\t")
|
||||
} else if (value.name == "Space") {
|
||||
add(" ")
|
||||
} else if (value.name.indexOf("\n") > -1) {
|
||||
var ls = can.core.Split(value.name, "\n", "\n", "\n")
|
||||
Volcanos(chat.ONFIGURE, {keyboard: {
|
||||
onclick: function(can, cbs, target) { cbs(function(sub) { var msg = can.request(); sub._normal(can, msg), can.onfigure.keyboard._show(sub, msg, target) }) },
|
||||
_show: function(can, msg, target) { can.require(["/plugin/input/keyboard.css"])
|
||||
msg.Table(function(item) { item.type == "head" && can.page.Append(can, can._output, html.BR)
|
||||
function add(value) { target.value += value, target.focus(), can.user.toast(can, value||item.name) }
|
||||
function hold() { can.page.ClassList.add(can, div, "hold") }
|
||||
var div = can.page.Append(can, can._output, [{view: item.type+ice.SP+item.name+(item.name.indexOf(ice.NL)>-1? " double": item.name.length>1? " special": ""), list: [{text: [item.name]}], onclick: function(event) {
|
||||
switch (item.name) {
|
||||
case "clear": target.value = "", target.focus(); break
|
||||
case "close": can.close(); break
|
||||
case "Esc": can.close(); break
|
||||
case "Ctrl": can._ctrl = !can._ctrl, hold(); break
|
||||
case "Shift": can._shift = !can._shift, hold(); break
|
||||
case "Backspace": target.value = target.value.slice(0, -1), add(""); break
|
||||
case "Enter": break
|
||||
default: can._shift = can._shift||event.shiftKey
|
||||
if (item.name == lang.TAB) {
|
||||
add(ice.TB)
|
||||
} else if (item.name == "Space") {
|
||||
add(ice.SP)
|
||||
} else if (item.name.indexOf(ice.NL) > -1) { var ls = can.core.Split(item.name, ice.NL, ice.NL, ice.NL)
|
||||
add(can._shift? ls[0]: ls[1])
|
||||
} else if (can._shift) {
|
||||
add(value.name.toUpperCase())
|
||||
} else {
|
||||
add(value.name)
|
||||
}
|
||||
can.core.Item(keys, function(key, div) {
|
||||
can.page.ClassList.del(can, div, "hold")
|
||||
}), can._ctrl = false, can._shift = false
|
||||
add(can._shift? item.name.toUpperCase(): item.name)
|
||||
} can._shift = false, can._ctrl = false, can.page.Select(can, can._output, "div.hold", function(target) { can.page.ClassList.del(can, div, "hold") })
|
||||
}
|
||||
} }]).first
|
||||
})
|
||||
},
|
||||
_normal: function(can, msg) {
|
||||
can.core.List([["Esc"],
|
||||
can.core.List([["Esc", "close", "clear"],
|
||||
["~\n`", "!\n1", "@\n2", "#\n3", "$\n4", "%\n5", "^\n6", "&\n7", "*\n8", "(\n9", ")\n0", "_\n-", "+\n=", "Backspace"],
|
||||
["Tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "{\n[", "}\n]", "|\n\\"],
|
||||
["Ctrl", "a", "s", "d", "f", "g", "h", "j", "k", "l", ":\n;", "\"\n'", "Enter"],
|
||||
|
@ -1,8 +1,9 @@
|
||||
Volcanos(chat.ONFIGURE, {help: "控件详情", province: {onclick: function(event, can, meta, cb, target) { cb(function(can, cbs) {
|
||||
can.require(["/require/shylinux.com/x/echarts/echarts.js", "/require/shylinux.com/x/echarts/china.js"], function() {
|
||||
var china_chart = echarts.init(can.page.Append(can, can._output, [{type: html.DIV, style: {width: 600, height: 400}}]).first)
|
||||
china_chart.setOption({geo: {map: 'china'}}), china_chart.on(html.CLICK, function (params) {
|
||||
target.value = params.name, can.close()
|
||||
}), can.Status(mdb.TOTAL, 34), can.onlayout.figure(event, can), can.base.isFunc(cbs) && cbs(can)
|
||||
})
|
||||
}) }}, })
|
||||
Volcanos(chat.ONFIGURE, {province: {
|
||||
onclick: function(event, can, meta, cbs, target) { cbs(function(can, cb) {
|
||||
can.require(["/require/shylinux.com/x/echarts/echarts.js", "/require/shylinux.com/x/echarts/china.js"], function() {
|
||||
var chart = echarts.init(can.page.Append(can, can._output, [{type: html.DIV, style: {width: 600, height: 400}}]).first)
|
||||
chart.setOption({geo: {map: 'china'}}), chart.on(html.CLICK, function(params) { target.value = params.name, can.close() })
|
||||
can.Status(mdb.TOTAL, 34)
|
||||
})
|
||||
}) }
|
||||
}})
|
||||
|
@ -2,12 +2,14 @@ Volcanos(chat.ONIMPORT, {
|
||||
_init: function(can, msg, target) {
|
||||
can.page.Appends(can, target, msg.Table(function(item) {
|
||||
return {view: html.ITEM, list: [
|
||||
{view: wiki.IMAGE, list: [{img: can.misc.MergeCache(can, can.core.Split(item.image)[0]), width: 150}]},
|
||||
{view: wiki.IMAGE, list: [{img: can.misc.MergeCache(can, can.core.Split(item.image)[0]), width: 150, height: 150}]},
|
||||
{view: wiki.CONTENT, list: [
|
||||
{view: [wiki.TITLE, html.DIV, item.name]},
|
||||
{view: [wiki.CONTENT, html.DIV, item.text]},
|
||||
{view: [mall.PRICE, html.DIV, "¥ "+(item.price||0)]},
|
||||
{view: [mall.COUNT, html.DIV, "还剩 "+(item.count||0)]},
|
||||
{view: [html.TITLE, html.DIV, item.name]},
|
||||
{view: [html.CONTENT, html.DIV, item.text]},
|
||||
{view: html.DISPLAY, list: [
|
||||
{view: [mall.PRICE, html.DIV, "¥ "+(item.price||0)], style: {"float": "left"}},
|
||||
{view: [mall.COUNT, html.DIV, " 还剩 "+(item.count||0)+" 件"], style: {"float": "left"}},
|
||||
]},
|
||||
{view: html.ACTION, inner: item.action},
|
||||
]},
|
||||
], onclick: function(event) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user