mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt inner.js
This commit is contained in:
parent
37040d7697
commit
14f9ef9b71
@ -1,6 +1,6 @@
|
|||||||
fieldset.Search {
|
fieldset.Search {
|
||||||
display:none;
|
display:none;
|
||||||
position:absolute;
|
position:fixed;
|
||||||
left:120px;
|
left:120px;
|
||||||
top:40px;
|
top:40px;
|
||||||
background:black;
|
background:black;
|
||||||
|
@ -27,6 +27,33 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta,
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
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, can.ui.content, "table", res, 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 = ""
|
select: function(can, msg, cmd, cb) { can._output.innerHTML = ""
|
||||||
function search(word) { cmd[1] = word
|
function search(word) { cmd[1] = word
|
||||||
can.run({}, cmd, function(msg) { can.ui.content.innerHTML = ""
|
can.run({}, cmd, function(msg) { can.ui.content.innerHTML = ""
|
||||||
@ -79,7 +106,7 @@ Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"]
|
|||||||
"清空": function(event, can, key) {
|
"清空": function(event, can, key) {
|
||||||
can._output.innerHTML = ""
|
can._output.innerHTML = ""
|
||||||
},
|
},
|
||||||
"完成": function(event, can, key) { can.cb() },
|
"完成": function(event, can, key) { can.cb && can.cb() },
|
||||||
})
|
})
|
||||||
Volcanos("ondetail", {help: "交互菜单", list: ["共享", "更名", "删除"],
|
Volcanos("ondetail", {help: "交互菜单", list: ["共享", "更名", "删除"],
|
||||||
"共享": function(event, can, value, sub) { var msg = sub.request(event)
|
"共享": function(event, can, value, sub) { var msg = sub.request(event)
|
||||||
|
@ -14,7 +14,8 @@ fieldset.editor>div.action>div.file.select {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fieldset.editor>div.output>div.project {
|
fieldset.editor>div.output>div.project {
|
||||||
max-width:120px; overflow:auto;
|
max-height:400px; overflow:auto;
|
||||||
|
max-width:120px;
|
||||||
}
|
}
|
||||||
fieldset.editor>div.output>div.project div.item {
|
fieldset.editor>div.output>div.project div.item {
|
||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
@ -46,6 +47,7 @@ fieldset.editor>div.output div.content {
|
|||||||
font-size:16px; font-family:monospace;
|
font-size:16px; font-family:monospace;
|
||||||
border-left:solid 2px red;
|
border-left:solid 2px red;
|
||||||
min-height:200px;
|
min-height:200px;
|
||||||
|
max-width:200px;
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
fieldset.editor>div.output div.content>pre.item {
|
fieldset.editor>div.output div.content>pre.item {
|
||||||
@ -82,6 +84,20 @@ fieldset.editor>div.output pre.display:hover {
|
|||||||
max-height:640px;
|
max-height:640px;
|
||||||
z-index:10;
|
z-index:10;
|
||||||
}
|
}
|
||||||
|
fieldset.editor>div.output div.search {
|
||||||
|
padding:6px; border:solid 1px red;
|
||||||
|
max-height:120px; overflow:auto;
|
||||||
|
position:sticky; bottom:0;
|
||||||
|
clear:both;
|
||||||
|
margin:0;
|
||||||
|
}
|
||||||
|
fieldset.editor>div.output div.search:hover {
|
||||||
|
background-color:black;
|
||||||
|
z-index:10;
|
||||||
|
}
|
||||||
|
fieldset.editor>div.output div.holdon {
|
||||||
|
max-height:400px; overflow:auto;
|
||||||
|
}
|
||||||
|
|
||||||
fieldset.editor>div.output textarea.editor {
|
fieldset.editor>div.output textarea.editor {
|
||||||
position:absolute; padding:0; margin:0;
|
position:absolute; padding:0; margin:0;
|
||||||
|
@ -1,11 +1,14 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb, target) { target.innerHTML = ""
|
Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb, target) { target.innerHTML = ""
|
||||||
if (can.Conf("height") < 600) { can.Conf("height", 600) }
|
if (can.Conf("height") < 600) { can.Conf("height", 600) }
|
||||||
can.onimport._share(can); var width = can.Conf("width"), height = can.Conf("height")
|
can.onimport._share(can); var width = can.Conf("width"), height = can.Conf("height")
|
||||||
can.page.Modify(can, target, {style: {"max-height": height-160+"px"}})
|
// can.page.Modify(can, target, {style: {"max-height": height-160+"px"}})
|
||||||
|
|
||||||
can.onappend.table(can, target, "table", msg), can.ui = can.page.Append(can, target, [
|
can.onappend.table(can, target, "table", msg), can.ui = can.page.Append(can, target, [
|
||||||
{view: "project"}, {view: "profile"},
|
{view: "project"}, {view: "profile"},
|
||||||
{view: "preview"}, {view: "content", style: {"max-width": can.Conf("width")-240+"px"}},
|
|
||||||
|
{view: "holdon", list: [
|
||||||
|
{view: "preview"}, {view: "content", style: {"max-width": can.Conf("width")-240+"px"}},
|
||||||
|
]},
|
||||||
|
|
||||||
{view: ["editor", "textarea"], onkeydown: function(event) {
|
{view: ["editor", "textarea"], onkeydown: function(event) {
|
||||||
can.onkeymap.parse(event, can, "insert"), can.Timer(10, function() {
|
can.onkeymap.parse(event, can, "insert"), can.Timer(10, function() {
|
||||||
@ -22,6 +25,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
|
|||||||
can.onkeymap.parse(event, can, "command")
|
can.onkeymap.parse(event, can, "command")
|
||||||
}},
|
}},
|
||||||
{type: "code", list: [{view: ["display", "pre"]}]},
|
{type: "code", list: [{view: ["display", "pre"]}]},
|
||||||
|
{view: "search"},
|
||||||
])
|
])
|
||||||
|
|
||||||
msg.Option("path", can.Option("path"))
|
msg.Option("path", can.Option("path"))
|
||||||
@ -108,6 +112,7 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
|||||||
}, true): init(p)
|
}, true): init(p)
|
||||||
},
|
},
|
||||||
parse: function(can, line) { var p = can.onsyntax[can.parse]; if (!p) { return }
|
parse: function(can, line) { var p = can.onsyntax[can.parse]; if (!p) { return }
|
||||||
|
p = can.onsyntax[p.link] || p
|
||||||
function wrap(type, str) { return type? '<span class="'+type+'">'+str+'</span>': str }
|
function wrap(type, str) { return type? '<span class="'+type+'">'+str+'</span>': str }
|
||||||
p.keyword && (line = can.core.List(can.core.Split(line, p.split && p.split.space || " ", p.split && p.split.operator || "{[(|)]}"), function(item, index, array) {
|
p.keyword && (line = can.core.List(can.core.Split(line, p.split && p.split.space || " ", p.split && p.split.operator || "{[(|)]}"), function(item, index, array) {
|
||||||
item = typeof item == "object"? item: {text: item}, p.word && (item = p.word(item, index, array))
|
item = typeof item == "object"? item: {text: item}, p.word && (item = p.word(item, index, array))
|
||||||
@ -121,7 +126,7 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
|||||||
}).join(""))
|
}).join(""))
|
||||||
|
|
||||||
p.prefix && can.core.Item(p.prefix, function(pre, type) {
|
p.prefix && can.core.Item(p.prefix, function(pre, type) {
|
||||||
if (line.startsWith(pre)) { line = wrap(type, line) }
|
if (line.trim().startsWith(pre)) { line = wrap(type, line) }
|
||||||
})
|
})
|
||||||
p.suffix && can.core.Item(p.suffix, function(pre, type) {
|
p.suffix && can.core.Item(p.suffix, function(pre, type) {
|
||||||
if (line.endsWith(pre)) { line = wrap(type, line) }
|
if (line.endsWith(pre)) { line = wrap(type, line) }
|
||||||
@ -311,6 +316,63 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
|||||||
return array[index-2]=="can"&&array[index-1]=="."&&(libs[value]||libs[value.text])? {keyword: "function", text: value.text||value}: value
|
return array[index-2]=="can"&&array[index-1]=="."&&(libs[value]||libs[value.text])? {keyword: "function", text: value.text||value}: value
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
h: {
|
||||||
|
split: {
|
||||||
|
space: " ",
|
||||||
|
operator: "{[(.:,;!|)]}",
|
||||||
|
},
|
||||||
|
prefix: {
|
||||||
|
"//": "comment",
|
||||||
|
"/*": "comment",
|
||||||
|
"*": "comment",
|
||||||
|
},
|
||||||
|
keyword: {
|
||||||
|
"#include": "keyword",
|
||||||
|
"#define": "keyword",
|
||||||
|
"#ifndef": "keyword",
|
||||||
|
"#ifdef": "keyword",
|
||||||
|
"#else": "keyword",
|
||||||
|
"#endif": "keyword",
|
||||||
|
|
||||||
|
"typedef": "keyword",
|
||||||
|
|
||||||
|
"if": "keyword",
|
||||||
|
"else": "keyword",
|
||||||
|
"for": "keyword",
|
||||||
|
"while": "keyword",
|
||||||
|
"do": "keyword",
|
||||||
|
"range": "keyword",
|
||||||
|
"break": "keyword",
|
||||||
|
"continue": "keyword",
|
||||||
|
"switch": "keyword",
|
||||||
|
"case": "keyword",
|
||||||
|
"default": "keyword",
|
||||||
|
|
||||||
|
"return": "keyword",
|
||||||
|
|
||||||
|
"union": "datatype",
|
||||||
|
"struct": "datatype",
|
||||||
|
"extern": "datatype",
|
||||||
|
"unsigned": "datatype",
|
||||||
|
"static": "datatype",
|
||||||
|
"double": "datatype",
|
||||||
|
"const": "datatype",
|
||||||
|
"void": "datatype",
|
||||||
|
"long": "datatype",
|
||||||
|
"char": "datatype",
|
||||||
|
"int": "datatype",
|
||||||
|
|
||||||
|
"sizeof": "function",
|
||||||
|
"assert": "function",
|
||||||
|
"zmalloc": "function",
|
||||||
|
|
||||||
|
"NULL": "string",
|
||||||
|
"0": "string",
|
||||||
|
"1": "string",
|
||||||
|
"-1": "string",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
c: {link: "h"},
|
||||||
|
|
||||||
png: {
|
png: {
|
||||||
display: true,
|
display: true,
|
||||||
@ -567,8 +629,12 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "控件交互", list: [
|
Volcanos("onaction", {help: "控件交互", list: [
|
||||||
"", "项目", "上传", "", "保存", "运行",
|
"搜索",
|
||||||
"", "提交", "记录", "复盘", "历史",
|
// "运行", "收藏",
|
||||||
|
|
||||||
|
// "", "项目", "上传", "", "保存", "运行",
|
||||||
|
// "", "提交", "记录", "复盘", "历史",
|
||||||
|
// "", "搜索",
|
||||||
],
|
],
|
||||||
modifyLine: function(can, target, value) { var p = can.onsyntax.parse(can, value)
|
modifyLine: function(can, target, value) { var p = can.onsyntax.parse(can, value)
|
||||||
typeof p == "object"? can.page.Appends(can, target, [p]): target.innerHTML = p
|
typeof p == "object"? can.page.Appends(can, target, [p]): target.innerHTML = p
|
||||||
@ -584,6 +650,7 @@ Volcanos("onaction", {help: "控件交互", list: [
|
|||||||
can.page.ClassList[index==i? "add": "del"](can, item, "select")
|
can.page.ClassList[index==i? "add": "del"](can, item, "select")
|
||||||
})
|
})
|
||||||
}); if (typeof target != "object") { return }; can.current = target
|
}); if (typeof target != "object") { return }; can.current = target
|
||||||
|
return
|
||||||
|
|
||||||
can.page.Modify(can, can.editor, {className: "editor "+can.mode, value: can.current.innerText, style: {
|
can.page.Modify(can, can.editor, {className: "editor "+can.mode, value: can.current.innerText, style: {
|
||||||
height: target.offsetHeight, width: target.offsetWidth,
|
height: target.offsetHeight, width: target.offsetWidth,
|
||||||
@ -601,7 +668,9 @@ Volcanos("onaction", {help: "控件交互", list: [
|
|||||||
can.onaction.selectLine(can, index)
|
can.onaction.selectLine(can, index)
|
||||||
}}])
|
}}])
|
||||||
var line = can.page.Append(can, can.ui.content, [{view: ["item", "pre", ""], onclick: function(event) {
|
var line = can.page.Append(can, can.ui.content, [{view: ["item", "pre", ""], onclick: function(event) {
|
||||||
can.onaction.selectLine(can, line)
|
// can.onaction.selectLine(can, line)
|
||||||
|
}, ondblclick: function(event) {
|
||||||
|
can.onaction.searchLine(event, can, document.getSelection().toString())
|
||||||
}}]).first; value && can.onaction.modifyLine(can, line, value)
|
}}]).first; value && can.onaction.modifyLine(can, line, value)
|
||||||
return line
|
return line
|
||||||
},
|
},
|
||||||
@ -614,6 +683,16 @@ Volcanos("onaction", {help: "控件交互", list: [
|
|||||||
can.onaction.deleteLine(can, target.nextSibling)
|
can.onaction.deleteLine(can, target.nextSibling)
|
||||||
return target
|
return target
|
||||||
},
|
},
|
||||||
|
searchLine: function(event, can, value) { var msg = can.request(event)
|
||||||
|
msg.Option("_path", can.Option("path"))
|
||||||
|
can.run(event, ["search", "Search.onimport.active", can.parse, value, ""], function(line) {
|
||||||
|
var ls = line.file.split("/")
|
||||||
|
can.onimport.tabview(can, ls.slice(0, -1).join("/"), ls[ls.length-1])
|
||||||
|
can.onaction.selectLine(can, parseInt(line.line-1))
|
||||||
|
can.current && can.current.scrollIntoView()
|
||||||
|
can.ui.holdon.scrollBy(0, -22*5)
|
||||||
|
}, true)
|
||||||
|
},
|
||||||
|
|
||||||
"串行": function(event, can, msg) {
|
"串行": function(event, can, msg) {
|
||||||
can.core.Next(can.page.Select(can, can._action, "div.file", function(item) {
|
can.core.Next(can.page.Select(can, can._action, "div.file", function(item) {
|
||||||
@ -632,7 +711,29 @@ Volcanos("onaction", {help: "控件交互", list: [
|
|||||||
can.page.Modify(can, can.ui.project, {style: {display: hide? "": "none"}})
|
can.page.Modify(can, can.ui.project, {style: {display: hide? "": "none"}})
|
||||||
},
|
},
|
||||||
"上传": function(event, can) { can.user.upload(event, can) },
|
"上传": function(event, can) { can.user.upload(event, can) },
|
||||||
"搜索": function(event, can) { can.onkeymap._remote(event, can, "搜索", ["action", "find", "vim.history", "", "id", "type", "name", "text"]) },
|
"搜索": function(event, can) {
|
||||||
|
can.onaction.searchLine(event, can, "")
|
||||||
|
return
|
||||||
|
|
||||||
|
can.user.input(event, can, ["word"], function(event, button, meta, list) {
|
||||||
|
var msg = can.request(event)
|
||||||
|
msg.Option("_path", can.Option("path"))
|
||||||
|
can.run(event, ["action", "search", can.parse, list[0], ""], function(msg) {
|
||||||
|
can.page.Modify(can, can.ui.search, {innerHTML: "", style: {display: "block"}})
|
||||||
|
can.onappend.table(can, can.ui.search, "table", msg, function(value, key, index, line) {
|
||||||
|
return {text: [value, "td"], onclick: function(event) {
|
||||||
|
console.log(value)
|
||||||
|
|
||||||
|
var ls = line.file.split("/")
|
||||||
|
can.onimport.tabview(can, ls.slice(0, -1).join("/"), ls[ls.length-1])
|
||||||
|
can.onaction.selectLine(can, parseInt(line.line-1))
|
||||||
|
can.current && can.current.scrollIntoView()
|
||||||
|
can._target && can._target.scrollBy(0, -22*3)
|
||||||
|
}}
|
||||||
|
})
|
||||||
|
}, true)
|
||||||
|
})
|
||||||
|
},
|
||||||
"记录": function(event, can) { var sub = can.request(event)
|
"记录": function(event, can) { var sub = can.request(event)
|
||||||
can.core.Item(can.Option(), sub.Option)
|
can.core.Item(can.Option(), sub.Option)
|
||||||
sub.Option("display", can.display.innerText)
|
sub.Option("display", can.display.innerText)
|
||||||
@ -651,7 +752,9 @@ Volcanos("onaction", {help: "控件交互", list: [
|
|||||||
},
|
},
|
||||||
"列表": function(event, can) { can.onkeymap._remote(event, can, "收藏", ["action", "favor", "url.favor"]) },
|
"列表": function(event, can) { can.onkeymap._remote(event, can, "收藏", ["action", "favor", "url.favor"]) },
|
||||||
})
|
})
|
||||||
Volcanos("ondetail", {help: "菜单交互", list: ["保存", "运行", "提交", "记录", "删除行", "合并行", "插入行", "添加行", "追加行"],
|
Volcanos("ondetail", {help: "菜单交互", list: [
|
||||||
|
// "保存", "运行", "提交", "记录", "删除行", "合并行", "插入行", "添加行", "追加行",
|
||||||
|
],
|
||||||
"删除行": function(event, can, msg) {
|
"删除行": function(event, can, msg) {
|
||||||
can.onaction.deleteLine(can, can.current)
|
can.onaction.deleteLine(can, can.current)
|
||||||
},
|
},
|
||||||
|
@ -10,7 +10,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
field: function(can, item, target) { var meta = can.base.Obj(item.meta)
|
field: function(can, item, target) { var meta = can.base.Obj(item.meta)
|
||||||
can.onappend._init(can, meta, Volcanos.meta.libs.concat(["/plugin/state.js"]), function(sub) {
|
can.onappend._init(can, meta, Volcanos.meta.libs.concat(["/plugin/state.js"]), function(sub) {
|
||||||
sub.run = function(event, cmds, cb, silent) {
|
sub.run = function(event, cmds, cb, silent) {
|
||||||
can.run(event, ["action", "story", item.type, item.name, item.text].concat(cmds), cb, true)
|
can.run(event, (cmds[0] == "search"? []: ["action", "story", item.type, item.name, item.text]).concat(cmds), cb, true)
|
||||||
}
|
}
|
||||||
}, can._output, target)
|
}, can._output, target)
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user