mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt feel.js
This commit is contained in:
parent
941835dbb0
commit
85a11e33cc
2
frame.js
2
frame.js
@ -187,7 +187,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
can.core.CallFunc([sub, chat.ONIMPORT, chat._INIT], {can: sub, msg: msg, cb: function(msg) {
|
||||
can.onmotion.clear(can, can._action), can.user.isMobile && can.ConfHeight() > can.ConfWidth() && can.onmotion.hidden(can, can._action)
|
||||
action === false || sub.onappend._action(sub, can.Conf(ice.MSG_ACTION)||msg.Option(ice.MSG_ACTION), action||can._action)
|
||||
action === false || sub.onappend._status(sub, msg.Option(ice.MSG_STATUS)), sub.onappend.tools(sub, msg)
|
||||
action === false || sub.onappend._status(sub, sub.onexport&&sub.onexport.list||msg.Option(ice.MSG_STATUS)), sub.onappend.tools(sub, msg)
|
||||
can.core.List([chat.FLOAT, chat.FULL, chat.CMD], function(mode) { can.page.ClassList.has(can, can._target, mode) && sub.onlayout[mode](sub) })
|
||||
can.user.isMobile && can.isCmdMode() && can.page.style(can, can._output, html.MAX_HEIGHT, can.ConfHeight())
|
||||
can.onmotion.story.auto(can, can._output), can.onaction._output(can, msg), can.base.isFunc(cb) && cb(msg)
|
||||
|
22
lib/user.js
22
lib/user.js
@ -52,7 +52,7 @@ Volcanos("user", {info: {}, agent: {
|
||||
return list&&list[text] || can._trans&&can._trans[text] || can.Conf("trans."+text) || can.Conf("feature._trans."+text) || {
|
||||
"plugin": "插件", "label": "标签", "height": "高度", "width": "宽度", "show": "显示", "hide": "隐藏", "project": "项目", "profile": "详情", "actions": "参数",
|
||||
"create": "创建", "remove": "删除", "insert": "添加", "delete": "删除", "modify": "修改", "prunes": "清理", "export": "导出", "import": "导入",
|
||||
"link": "链接", "copy": "复制", "edit": "编辑", "save": "保存", "trash": "删除", "share": "共享", "toimage": "截图", "download": "下载",
|
||||
"link": "链接", "copy": "复制", "edit": "编辑", "save": "保存", "trash": "删除", "share": "共享", "toimage": "截图", "download": "下载", "upload": "上传",
|
||||
"run": "执行", "list": "查看", "back": "返回", "prev": "上一页", "next": "下一页",
|
||||
"source": "源码", "module": "模块", "action": "操作", "recent": "最近",
|
||||
|
||||
@ -195,15 +195,7 @@ Volcanos("user", {info: {}, agent: {
|
||||
toimage: function(event, can, name, target, silent) {
|
||||
can.require(["https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.5/dist/html2canvas.min.js"], function() {
|
||||
html2canvas(target||can._target).then(function (canvas) { var url = canvas.toDataURL("image/png")
|
||||
if (silent) { return can.user.download(can, url, name, nfs.PNG) }
|
||||
var toast = can.user.toast(can, {content: {img: url, style: {"max-height": window.innerHeight/2, display: html.BLOCK}}, title: can._name, duration: -1,
|
||||
action: shy({}, [cli.CLOSE, web.DOWNLOAD], function(event, button) {
|
||||
can.user.input(event, can, [{name: mdb.NAME, value: name}], function(list) { toast.close(), can.user.download(can, url, list[0], nfs.PNG) })
|
||||
}),
|
||||
})
|
||||
can.onmotion.delay(can, function() { can.page.Select(can, toast._target, "img", function(target) {
|
||||
can.page.style(can, toast._target, html.WIDTH, target.offsetWidth, html.LEFT, (window.innerWidth-target.offsetWidth)/2)
|
||||
}) })
|
||||
silent? can.user.download(can, url, name, nfs.PNG): can.user.toastImage(can, url)
|
||||
})
|
||||
})
|
||||
},
|
||||
@ -211,9 +203,17 @@ Volcanos("user", {info: {}, agent: {
|
||||
if (text.indexOf("<svg") != 0) { text = '<svg xmlns="http://www.w3.org/2000/svg">'+text+"</svg>" }
|
||||
var img = can.page.Create(can, html.IMG, {src: "data:image/svg+xml,"+encodeURIComponent(text), onload: function() {
|
||||
var canvas = can.page.Create(can, html.CANVAS, {height: height, width: width}); canvas.getContext("2d").drawImage(img, 0, 0)
|
||||
can.user.download(can, canvas.toDataURL("image/png"), name, nfs.PNG)
|
||||
can.user.download(can, canvas, name, nfs.PNG)
|
||||
}})
|
||||
},
|
||||
toastImage: function(can, url) { url = can.base.isString(url)? url: url.toDataURL("image/png")
|
||||
var toast = can.user.toast(can, {content: {img: url, style: {"max-height": window.innerHeight/2, display: html.BLOCK}}, title: can._name, duration: -1,
|
||||
action: shy({}, [cli.CLOSE, web.DOWNLOAD], function(event, button) { can.user.download(can, url, name, nfs.PNG) }),
|
||||
})
|
||||
can.onmotion.delay(can, function() { can.page.Select(can, toast._target, html.IMG, function(target) {
|
||||
can.page.style(can, toast._target, html.WIDTH, target.offsetWidth, html.LEFT, (window.innerWidth-target.offsetWidth)/2)
|
||||
}) })
|
||||
},
|
||||
|
||||
login: function(can, cb, method, auto) { method = can.base.Obj(method, ["登录", "扫码"])
|
||||
var meta = {
|
||||
|
@ -28,7 +28,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
Volcanos(chat.ONFIGURE, {help: "索引导航",
|
||||
create: function(can, target, zone, path) {
|
||||
can.isCmdMode()? can.onappend._action(can, can.base.Obj(can._msg.Option(ice.MSG_ACTION)).concat(
|
||||
["查找", "首页", "百度", "plan", "git", "vim"], window.webview? ["录屏", "日志", "编辑器", "浏览器"]: [],
|
||||
["查找", "git", "首页", "官网" , "文档" , "百度"], window.webview? ["录屏", "日志", "编辑器", "浏览器"]: [],
|
||||
), target): can.onmotion.hidden(can, target.parentNode)
|
||||
},
|
||||
recent: function(can, target, zone, path) { var total = 0
|
||||
@ -340,6 +340,8 @@ Volcanos(chat.ONACTION, {help: "控件交互",
|
||||
"浏览器": function(event, can) { window.openurl(location.href) },
|
||||
"首页": function(event, can) { can.user.isWebview? window.openurl(location.protocol+"//"+location.host): window.open(location.protocol+"//"+location.host) },
|
||||
"百度": function(event, can) { can.user.isWebview? window.openurl("https://baidu.com"): can.user.open("https://baidu.com") },
|
||||
"文档": function(event, can) { can.user.isWebview? window.openurl("https://developer.mozilla.org/"): can.user.open("https://developer.mozilla.org/") },
|
||||
"官网": function(event, can) { can.user.isWebview? window.openurl("https://shylinux.com/"): can.user.open("https://shylinux.com/") },
|
||||
"查找": function(event, can) {
|
||||
var ui = can.page.Append(can, can._output, [{view: "vimer find float", list: [html.ACTION, html.OUTPUT],
|
||||
style: {position: "absolute", left: can.ui.project.offsetWidth+can.ui.content.offsetWidth/2, top: can.base.Max(can.base.Min(can.current.line.offsetTop-can.ui.content.scrollTop, 100), can.ConfHeight()/2)+57+28}}])
|
||||
|
@ -1,35 +1,25 @@
|
||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
|
||||
can.path = can.request(), can.list = [], msg.Table(function(value) {
|
||||
can.base.endWith(value.path, ice.PS)? can.path.Push(value): can.list.push(value)
|
||||
}), can.base.isFunc(cb) && cb(msg)
|
||||
|
||||
can.ui = can.onlayout.display(can, target)
|
||||
can.onappend.table(can, can.path, null, can.ui.content)
|
||||
can.onappend._status(can, can.onexport.list)
|
||||
|
||||
can.Action(html.HEIGHT, msg.Option(html.HEIGHT)||ice.AUTO)
|
||||
can.Action(html.SPEED, msg.Option(html.SPEED)||"1")
|
||||
can.Action(mdb.LIMIT, msg.Option(mdb.LIMIT)||"9")
|
||||
can.onmotion.hidden(can, can._action)
|
||||
|
||||
can.begin = parseInt(can.begin||msg.Option(cli.BEGIN)||"0")
|
||||
can.dir_root = msg.Option(nfs.DIR_ROOT)
|
||||
can.onimport.page(can, can.list)
|
||||
Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.clear(can)
|
||||
can.path = can.request(), can.list = [], msg.Table(function(value) { can.base.endWith(value.path, ice.PS)? can.path.Push(value): can.list.push(value) })
|
||||
can.ui = can.onlayout.profile(can, target), can.path.Table(function(item) { item.name = item.path
|
||||
can.onimport.item(can, item, function() { can.Option(nfs.PATH, item.path), can.Update() }, function() {}, can.ui.project)
|
||||
}), can.isCmdMode() || can.onmotion.hidden(can, can._action), can.onmotion.hidden(can, can.ui.project)
|
||||
can.base.isFunc(cb) && cb(msg), can.Action(html.HEIGHT, ice.AUTO), can.Action(mdb.LIMIT, 6)
|
||||
can.dir_root = msg.Option(nfs.DIR_ROOT), can.onimport.page(can, can.list, can.begin = parseInt(msg.Option(cli.BEGIN)||"0"))
|
||||
},
|
||||
_file: function(can, path, index) { var p = location.href.indexOf(ice.HTTP) == 0? "": "http://localhost:9020"
|
||||
return path.indexOf(ice.HTTP) == 0? path: p+can.base.Path("/share/local", can.dir_root||"", path)
|
||||
return path.indexOf(ice.HTTP) == 0? path: p+can.base.Path(chat.SHARE_LOCAL, can.dir_root||"", path)
|
||||
},
|
||||
file: function(can, path, index) { path = can.onimport._file(can, path, index)
|
||||
var cb = can.onfigure[can.base.Ext(path)]||can.onfigure["image"]; can.Status(nfs.FILE, path)
|
||||
var cb = can.onfigure[can.base.Ext(path)]||can.onfigure[wiki.IMAGE]; can.Status(nfs.FILE, path)
|
||||
can.base.isFunc(cb) && can.page.Append(can, can.ui.display, [cb(can, path, index)])
|
||||
},
|
||||
page: function(can, list, begin, limit) { can.onmotion.clear(can, can.ui.display)
|
||||
begin = parseInt(begin||can.begin), limit = parseInt(limit||can.Action(mdb.LIMIT))
|
||||
for (var i = begin; i < begin+limit; i++) { list && list[i] && can.onimport.file(can, list[i].path, i) }
|
||||
can.Status({begin: begin, limit: limit, total: can.list.length})
|
||||
can.Status({begin: begin, limit: limit, total: list.length})
|
||||
},
|
||||
}, [""])
|
||||
Volcanos(chat.ONFIGURE, {help: "组件菜单",
|
||||
Volcanos(chat.ONFIGURE, {
|
||||
png: function(can, path, index) { return can.onfigure.image(can, path, index) },
|
||||
jpg: function(can, path, index) { return can.onfigure.image(can, path, index) },
|
||||
jpeg: function(can, path, index) { return can.onfigure.image(can, path, index) },
|
||||
@ -37,10 +27,9 @@ Volcanos(chat.ONFIGURE, {help: "组件菜单",
|
||||
onmouseover: function(event) { can.Status(nfs.FILE, path) },
|
||||
onclick: function(event) { can.ondetail._init(can, index) },
|
||||
} },
|
||||
|
||||
video: function(can, path) { var auto = can.user.isMobile&&can.Action(mdb.LIMIT)!="1"? false: true, loop = true, total = 0; function cb(event) { }
|
||||
return {type: html.VIDEO, style: {height: can.onexport.height(can)}, className: "preview",
|
||||
data: {src: path, controls: "controls", autoplay: auto, loop: loop, playbackRate: parseFloat(can.Action(html.SPEED))},
|
||||
data: {src: path, controls: "controls", autoplay: false&&auto, loop: loop, playbackRate: parseFloat(can.Action(html.SPEED))},
|
||||
oncontextmenu: cb, onplay: cb, onpause: cb, onended: cb,
|
||||
onmouseover: function(event) { can.Status(nfs.FILE, path) },
|
||||
onloadedmetadata: function(event) { total = event.timeStamp
|
||||
@ -55,112 +44,60 @@ Volcanos(chat.ONFIGURE, {help: "组件菜单",
|
||||
mov: function(can, path) { return can.onfigure.video(can, path) },
|
||||
webm: function(can, path) { return can.onfigure.video(can, path) },
|
||||
})
|
||||
Volcanos(chat.ONACTION, {help: "组件菜单", list: [
|
||||
Volcanos(chat.ONACTION, {list: [
|
||||
[html.HEIGHT, 100, 200, 400, 600, 800, ice.AUTO],
|
||||
[html.SPEED, 0.1, 0.2, 0.5, 1, 2, 3, 5, 10],
|
||||
[mdb.LIMIT, 1, 3, 6, 9, 12, 15, 20, 30, 50],
|
||||
[html.SPEED, 0.1, 0.2, 0.5, 1, 2, 3, 5, 10],
|
||||
],
|
||||
prev: function(event, can) {
|
||||
if (can.begin > 0) {
|
||||
can.begin -= parseInt(can.Action(mdb.LIMIT)), can.onimport.page(can, can.list)
|
||||
} else {
|
||||
can.user.toast(can, "已经是第一页了")
|
||||
}
|
||||
},
|
||||
next: function(event, can) {
|
||||
if (can.begin + parseInt(can.Action(mdb.LIMIT)) < can.list.length) {
|
||||
can.begin += parseInt(can.Action(mdb.LIMIT)), can.onimport.page(can, can.list)
|
||||
} else {
|
||||
can.user.toast(can, "已经是最后一页了")
|
||||
}
|
||||
},
|
||||
height: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) },
|
||||
speed: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) },
|
||||
limit: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) },
|
||||
speed: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) },
|
||||
|
||||
chooseImage: function(event, can) { var msg = can.request(event)
|
||||
can.user.agent.chooseImage(can, function(list) { can.core.List(list, function(item) {
|
||||
can.page.Append(can, can._output, [{img: item, height: 200}])
|
||||
}) })
|
||||
},
|
||||
record1: function(event, can) { var height = can.page.height(), width = can.page.width()
|
||||
can.user.input(event, can, [{type: "text", name: "file", value: "some"}], function(list) {
|
||||
prev: function(event, can) { if (can.begin > 0) { can.begin -= parseInt(can.Action(mdb.LIMIT)), can.onimport.page(can, can.list) } else { can.user.toast(can, "已经是第一页了") } },
|
||||
next: function(event, can) { if (can.begin + parseInt(can.Action(mdb.LIMIT)) < can.list.length) { can.begin += parseInt(can.Action(mdb.LIMIT)), can.onimport.page(can, can.list) } else { can.user.toast(can, "已经是最后一页了") } },
|
||||
|
||||
record0: function(event, can, name, cb) { can.user.input(event, can, [{name: nfs.FILE, value: name}], function(list) { var height = window.innerHeight
|
||||
navigator.mediaDevices.getDisplayMedia({video: {height: height}}).then(function(stream) {
|
||||
var video = can.page.Append(can, can._output, [{type: html.VIDEO, height: height}]).first
|
||||
video.srcObject = stream, video.onloadedmetadata = function(e) { video.play()
|
||||
can.onmotion.delay(can, function() {
|
||||
var canvas = can.page.Append(can, can._output, [{type: html.CANVAS, height: height, width: width}]).first
|
||||
canvas.getContext("2d").drawImage(video, 0, 0, width, height, 0, 0, width, height)
|
||||
canvas.toBlob((blob) => {
|
||||
var msg = can.request(event)
|
||||
msg._upload = new File([blob], (list[0])+".png")
|
||||
can.runAction(event, html.UPLOAD, [], function() {
|
||||
can.user.toast(can, "上传成功"), can.Update()
|
||||
})
|
||||
can.core.Next([3, 2, 1], function(item, next) { can.user.toast(can, item + "s 后开始截图"), can.onmotion.delay(can, next, 1000) }, function() { can.user.toast(can, "现在开始截图")
|
||||
cb(stream, function(blobs, ext) { var msg = can.request(event); msg._upload = new File(blobs, list[0]+ice.PT+ext)
|
||||
can.runAction(msg, html.UPLOAD, [], function() { can.user.toast(can, "上传成功"), can.Update() })
|
||||
can.core.List(stream.getTracks(), function(item) { item.stop() })
|
||||
})
|
||||
})
|
||||
}).catch(function(err) { can.user.toast(can, err.name + ": " + err.message) })
|
||||
}) },
|
||||
record1: function(event, can) { can.onaction.record0(event, can, "shot", function(stream, cb) { var height = window.innerHeight
|
||||
var video = can.page.Append(can, document.body, [{type: html.VIDEO, height: height}]).first; video.srcObject = stream, video.onloadedmetadata = function() { video.play(), width = video.offsetWidth
|
||||
var canvas = can.page.Append(can, document.body, [{type: html.CANVAS, height: height, width: width}]).first; canvas.getContext("2d").drawImage(video, 0, 0, width, height)
|
||||
canvas.toBlob((blob) => { cb([blob], nfs.PNG) })
|
||||
}
|
||||
}).catch(function(err) { can.user.toast(can, err.name + ": " + err.message) })
|
||||
}) },
|
||||
record2: function(event, can) { can.onaction.record0(event, can, "shot", function(stream, cb) {
|
||||
var recorder = new MediaRecorder(stream, {mimeType: 'video/webm'}), blobs = []; recorder.ondataavailable = function(res) { blobs.push(res.data) }
|
||||
recorder.onstop = function() { cb(blobs, nfs.WEBM) }, recorder.start(1)
|
||||
}) },
|
||||
})
|
||||
},
|
||||
record: function(event, can) { var blobs = []
|
||||
can.user.input(event, can, [{type: "text", name: "file", value: "some"}], function(list) {
|
||||
navigator.mediaDevices.getDisplayMedia({video: {height: can.ConfHeight()*3/4}}).then(function(stream) {
|
||||
can.core.Next([3, 2, 1], function(item, next) {
|
||||
can.user.toast(can, item + "s 后开始录屏")
|
||||
can.onmotion.delay(can, next, 1000)
|
||||
}, function() {
|
||||
can.user.toast(can, "现在开始录屏")
|
||||
var recorder = new MediaRecorder(stream, {mimeType: 'video/webm'})
|
||||
recorder.ondataavailable = function(res) { blobs.push(res.data) }
|
||||
recorder.onstop = function() {
|
||||
can.user.toast(can, "录屏成功")
|
||||
var msg = can.request(event)
|
||||
msg._upload = new File(blobs, (list[0]||"some")+".webm")
|
||||
can.runAction(event, html.UPLOAD, [], function() {
|
||||
can.user.toast(can, "上传成功"), can.Update()
|
||||
})
|
||||
}, recorder.start(10)
|
||||
})
|
||||
}).catch(function(err) { can.user.toast(can, err.name + ": " + err.message) })
|
||||
})
|
||||
},
|
||||
})
|
||||
Volcanos(chat.ONDETAIL, {help: "组件菜单", list: ["关闭", "下载", "删除", "上一个", "下一个", "设置头像", "设置背景", "复制链接"], _init: function(can, index) {
|
||||
Volcanos(chat.ONDETAIL, {list: ["关闭", "上一个", "下一个", "设置头像", "设置背景", "复制链接", "下载", "删除"], _init: function(can, index) {
|
||||
can.onappend._init(can, {type: "story feel float"}, [], function(sub) { can.sub = sub
|
||||
sub.run = function(event, cmds, cb) { return can.run(event, cmds, cb, true) }
|
||||
|
||||
sub.getActionSize(function(msg, left, top, width, height) {
|
||||
sub.page.style(sub, sub._target, {left: left||0, top: top||0})
|
||||
sub.page.style(sub, sub._output, html.WIDTH, width, html.HEIGHT, height-2*html.ACTION_HEIGHT)
|
||||
sub.onappend._action(can, can.ondetail.list, sub._action, can.ondetail)
|
||||
sub.onappend._status(sub, ["begin", "file"])
|
||||
|
||||
can.order = index, can.show = function(order) { path = can.onimport._file(can, can.list[order].path)
|
||||
var cb = can.onfigure[can.base.Ext(path)]||can.onfigure["image"]
|
||||
|
||||
can.getActionSize(function(msg, left, top, width, height) { sub.onappend._action(can, can.ondetail.list, sub._action, can.ondetail), sub.onappend._status(sub, ["begin", nfs.FILE])
|
||||
sub.page.style(sub, sub._target, {left: left||0, top: top||0}), sub.page.style(sub, sub._output, html.HEIGHT, height-2*html.ACTION_HEIGHT, html.WIDTH, width)
|
||||
can.order = index, can.show = function(order) { path = can.onimport._file(can, can.list[order].path); var cb = can.onfigure[can.base.Ext(path)]||can.onfigure[wiki.IMAGE]
|
||||
sub.page.Appends(sub, sub._output, [can.base.Copy(cb(can, path, index), {height: "", style: kit.Dict(html.MAX_WIDTH, width, html.MAX_HEIGHT, height-2*html.ACTION_HEIGHT)})])
|
||||
sub.Status(cli.BEGIN, order+1+ice.PS+can.list.length), sub.Status(nfs.FILE, path)
|
||||
}, can.show(can.order)
|
||||
})
|
||||
}), sub.run = function(can, cmds, cb) { can.run(can, cmds, cb, true) }
|
||||
}, can._root._target)
|
||||
},
|
||||
"关闭": function(event, can) { can.page.Remove(can, can.sub._target) },
|
||||
"下载": function(event, can) { can.user.download(can, path = can.onimport._file(can, can.list[can.order].path)) },
|
||||
"删除": function(event, can) { can.runAction(event, nfs.TRASH, [can.list[can.order].path], function(msg) { can.user.toastSuccess(can, "删除成功") }, true) },
|
||||
"上一个": function(event, can) { can.order > 0? can.show(--can.order): can.user.toast(can, "已经是第一张啦!") },
|
||||
"下一个": function(event, can) { can.order < can.list.length-1? can.show(++can.order): can.user.toast(can, "已经是最后一张啦!") },
|
||||
"设置头像": function(event, can) { can.setHeader("avatar", can.onimport._file(can, can.list[can.order].path)) },
|
||||
"设置背景": function(event, can) { can.setHeader("background", can.onimport._file(can, can.list[can.order].path)) },
|
||||
"复制链接": function(event, can) {
|
||||
can.onmotion.share(event, can, [], [mdb.LINK, can.user.copy(event, can, can.misc.MergeURL(can, {_path: can.onimport._file(can, can.list[can.order].path)}, true)) ])
|
||||
},
|
||||
"设置头像": function(event, can) { can.setHeader(aaa.AVATAR, can.onimport._file(can, can.list[can.order].path)) },
|
||||
"设置背景": function(event, can) { can.setHeader(aaa.BACKGROUND, can.onimport._file(can, can.list[can.order].path)) },
|
||||
"复制链接": function(event, can) { can.onmotion.share(event, can, [], [mdb.LINK, can.user.copy(event, can, can.misc.MergeURL(can, {_path: can.onimport._file(can, can.list[can.order].path)}, true)) ]) },
|
||||
"下载": function(event, can) { can.user.download(can, path = can.onimport._file(can, can.list[can.order].path)) },
|
||||
"删除": function(event, can) { can.runAction(event, nfs.TRASH, [can.list[can.order].path], function(msg) { can.user.toastSuccess(can, "删除成功") }, true) },
|
||||
})
|
||||
Volcanos(chat.ONEXPORT, {help: "导出数据", list: [cli.BEGIN, mdb.LIMIT, mdb.TOTAL, nfs.FILE, "position"],
|
||||
height: function(can) { var height = can.Action(html.HEIGHT)
|
||||
return parseInt(height == ice.AUTO? can.base.Min(can.ConfHeight()/4, 200): height)||200
|
||||
},
|
||||
position: function(can, index, total) { total = total || can.max
|
||||
return parseInt((index+1)*100/total)+"%"+" = "+(parseInt(index)+1)+ice.PS+parseInt(total)
|
||||
},
|
||||
Volcanos(chat.ONEXPORT, {list: [cli.BEGIN, mdb.LIMIT, mdb.TOTAL, nfs.FILE, "position"],
|
||||
height: function(can) { var height = can.Action(html.HEIGHT); return parseInt(height == ice.AUTO? can.base.Min(can.ConfHeight()/4, 200): height)||200 },
|
||||
position: function(can, index, total) { total = total || can.max; return parseInt((index+1)*100/total)+"%"+" = "+(parseInt(index)+1)+ice.PS+parseInt(total) },
|
||||
})
|
||||
|
3
proto.js
3
proto.js
@ -100,7 +100,7 @@ var nfs = {
|
||||
SAVE: "save", LOAD: "load", FIND: "find", GREP: "grep", TAGS: "tags",
|
||||
DIR: "dir", CAT: "cat", DEFS: "defs", TRASH: "trash", SCRIPT: "script", CONTENT: "content", DIR_ROOT: "dir_root", PWD: "./",
|
||||
HTML: "html", CSS: "css", JS: "js", GO: "go", SH: "sh", CSV: "csv", JSON: "json",
|
||||
ZML: "zml", IML: "iml", TXT: "txt", PNG: "png",
|
||||
ZML: "zml", IML: "iml", TXT: "txt", PNG: "png", WEBM: "webm",
|
||||
_CSS: ".css", _JS: ".js",
|
||||
}
|
||||
var tcp = {
|
||||
@ -164,6 +164,7 @@ var chat = {
|
||||
"/plugin/local/mall/goods.js",
|
||||
"/lib/lunar.js",
|
||||
], PLUGIN_INPUT: "/plugin/input/", PLUGIN_STORY: "/plugin/story/", PLUGIN_LOCAL: "/plugin/local/",
|
||||
SHARE_LOCAL: "/share/local/",
|
||||
PLUGIN_STATE_JS: "/plugin/state.js", PLUGIN_INPUT_JS: "/plugin/input.js", PLUGIN_TABLE_JS: "/plugin/table.js",
|
||||
ONENGINE: "onengine", ONDAEMON: "ondaemon", ONAPPEND: "onappend", ONLAYOUT: "onlayout", ONMOTION: "onmotion", ONKEYMAP: "onkeymap",
|
||||
ONIMPORT: "onimport", ONSYNTAX: "onsyntax", ONFIGURE: "onfigure", ONACTION: "onaction", ONDETAIL: "ondetail", ONEXPORT: "onexport", ONPLUGIN: "onplugin",
|
||||
|
Loading…
x
Reference in New Issue
Block a user