forked from x/volcanos
opt draw
This commit is contained in:
parent
a0e65fbe32
commit
23a8cf4962
@ -38,8 +38,8 @@
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
<!-- 文本 -->
|
<!-- 文本 -->
|
||||||
<view class="output" wx:if="{{field.msg.result && field.feature && field.feature.display == 'inner'}}"><rich-text wx:for="{{field.msg.result}}" wx:key="name" nodes="{{item}}"></rich-text></view>
|
<view class="output"><rich-text wx:for="{{field.msg.result}}" wx:key="name" nodes="{{item}}"></rich-text></view>
|
||||||
<view class="code" wx:elif="{{field.msg.result}}"><text wx:for="{{field.msg.result}}" wx:key="name">{{item}}</text></view>
|
<!-- <view class="code" wx:elif="{{field.msg.result}}"><text wx:for="{{field.msg.result}}" wx:key="name">{{item}}</text></view> -->
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
@ -3,7 +3,7 @@ const app = getApp()
|
|||||||
|
|
||||||
Page({
|
Page({
|
||||||
data: {
|
data: {
|
||||||
action: ["扫码", "刷新", "登录", "授权"],
|
action: ["扫码", "刷新", "登录"],
|
||||||
river: {},
|
river: {},
|
||||||
},
|
},
|
||||||
action: {
|
action: {
|
||||||
@ -22,12 +22,7 @@ Page({
|
|||||||
page.setData({river: river})
|
page.setData({river: river})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"登录": function(event, page, data) { app.conf.sessid = "",
|
"登录": function(event, page, data) { app.conf.sessid = "",
|
||||||
app.usercode(function() {
|
|
||||||
page.onaction(event, data, "刷新")
|
|
||||||
})
|
|
||||||
},
|
|
||||||
"授权": function(event, page, data) {
|
|
||||||
app.userinfo(function(res) {
|
app.userinfo(function(res) {
|
||||||
page.onaction(event, data, "刷新")
|
page.onaction(event, data, "刷新")
|
||||||
})
|
})
|
||||||
@ -64,10 +59,12 @@ Page({
|
|||||||
app.jumps("action/action", {river: data.river.key, storm: data.key, title: data.river.name+"."+data.name})
|
app.jumps("action/action", {river: data.river.key, storm: data.key, title: data.river.name+"."+data.name})
|
||||||
},
|
},
|
||||||
|
|
||||||
onLoad: function (options) {
|
onLoad: function (options) { var page = this
|
||||||
console.log("page", "river", options)
|
console.log("page", "river", options)
|
||||||
app.conf.sessid = options.sessid || app.conf.sessid
|
app.conf.sessid = options.sessid || app.conf.sessid
|
||||||
this.onaction({}, options, "刷新")
|
app.usercode(function() {
|
||||||
|
page.onaction({}, options, "刷新")
|
||||||
|
})
|
||||||
},
|
},
|
||||||
onReady: function () {},
|
onReady: function () {},
|
||||||
onShow: function () {},
|
onShow: function () {},
|
||||||
|
4
frame.js
4
frame.js
@ -339,10 +339,6 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
|
|||||||
meta.feature = can.base.Obj(meta.feature, {})
|
meta.feature = can.base.Obj(meta.feature, {})
|
||||||
can.page.ClassList.add(can, field, meta.feature.style||"")
|
can.page.ClassList.add(can, field, meta.feature.style||"")
|
||||||
|
|
||||||
can.onappend._legend(sub, legend)
|
|
||||||
if (can.user.Search(can, "share") && can.user.Search(can, "title")) {
|
|
||||||
can.page.Select(can, field, "legend", function(item) { can.page.Remove(can, item) })
|
|
||||||
}
|
|
||||||
sub.onaction && can.onappend._action(sub, sub._action, sub.onaction.list)
|
sub.onaction && can.onappend._action(sub, sub._action, sub.onaction.list)
|
||||||
|
|
||||||
meta.detail = meta.feature["detail"] || {}
|
meta.detail = meta.feature["detail"] || {}
|
||||||
|
@ -52,7 +52,7 @@ fieldset.editor>div.output div.preview>div.item.select {
|
|||||||
fieldset.editor>div.output div.content {
|
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:20px;
|
||||||
min-width:200px;
|
min-width:200px;
|
||||||
overflow:auto;
|
overflow:auto;
|
||||||
float:left;
|
float:left;
|
||||||
@ -67,7 +67,8 @@ fieldset.editor>div.output div.content>pre.item {
|
|||||||
color:white;
|
color:white;
|
||||||
}
|
}
|
||||||
fieldset.editor>div.output div.content>pre.item.select {
|
fieldset.editor>div.output div.content>pre.item.select {
|
||||||
border:solid 1px red;
|
/* border:solid 1px red; */
|
||||||
|
border-right:0px;
|
||||||
}
|
}
|
||||||
fieldset.editor>div.output div.content>pre.item span.comment {
|
fieldset.editor>div.output div.content>pre.item span.comment {
|
||||||
color:cyan; background-color:blue;
|
color:cyan; background-color:blue;
|
||||||
|
@ -5,7 +5,26 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
|
|||||||
{view: "preview"}, {view: "content"}
|
{view: "preview"}, {view: "content"}
|
||||||
]},
|
]},
|
||||||
{view: ["display", "pre"]},
|
{view: ["display", "pre"]},
|
||||||
{view: "search", style: {display: "none"}},
|
|
||||||
|
{view: "search", style: {display: "none"}, list: [{view: "action", list: [
|
||||||
|
{input: ["word", function(event) {
|
||||||
|
if (event.key == "Enter") {
|
||||||
|
can.onaction.searchLine(event, can, can.ui.word.value)
|
||||||
|
}
|
||||||
|
}], onfocus: function(event) {
|
||||||
|
event.target.setSelectionRange(0, -1)
|
||||||
|
}},
|
||||||
|
{button: ["搜索", function(event) {
|
||||||
|
can.onaction.searchLine(event, can, can.ui.word.value)
|
||||||
|
}]},
|
||||||
|
{button: ["返回", function(event) {
|
||||||
|
var last = can.history.pop(); last = can.history.pop()
|
||||||
|
last && can.onimport.tabview(can, last.path, last.file, last.line)
|
||||||
|
}]},
|
||||||
|
{button: ["关闭", function(event) {
|
||||||
|
can.page.Modify(can, can.ui.search, {style: {display: "none"}})
|
||||||
|
}]},
|
||||||
|
]}, {view: "tags"}, ]},
|
||||||
])
|
])
|
||||||
|
|
||||||
can.tabview = {}, can.history = []
|
can.tabview = {}, can.history = []
|
||||||
@ -27,7 +46,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
|
|||||||
can.file = file, can.parse = can.base.Ext(file), can.max = 0
|
can.file = file, can.parse = can.base.Ext(file), can.max = 0
|
||||||
can.onsyntax._init(can, can._msg)
|
can.onsyntax._init(can, can._msg)
|
||||||
|
|
||||||
var width = can._target.offsetWidth - can.ui.project.offsetWidth - can.ui.preview.offsetWidth - 20
|
var width = can._target.offsetWidth - can.ui.project.offsetWidth - can.ui.preview.offsetWidth - 40
|
||||||
can.Status("当前行", can.onexport.position(can, parseInt(can.Option("line")))-1)
|
can.Status("当前行", can.onexport.position(can, parseInt(can.Option("line")))-1)
|
||||||
can.page.Modify(can, can.ui.content, {style: {"max-width": width+"px"}})
|
can.page.Modify(can, can.ui.content, {style: {"max-width": width+"px"}})
|
||||||
}
|
}
|
||||||
@ -76,6 +95,7 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
|||||||
|
|
||||||
can.Status("文件名", can.file), can.Status("解析器", can.parse)
|
can.Status("文件名", can.file), can.Status("解析器", can.parse)
|
||||||
can.Status("当前行", can.onexport.position(can, 0))
|
can.Status("当前行", can.onexport.position(can, 0))
|
||||||
|
can.Status("输入法", "normal")
|
||||||
}
|
}
|
||||||
|
|
||||||
// plugin
|
// plugin
|
||||||
@ -109,48 +129,6 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
|||||||
return p.line? p.line(can, line): line
|
return p.line? p.line(can, line): line
|
||||||
},
|
},
|
||||||
|
|
||||||
makefile: {
|
|
||||||
prefix: {"#": "comment"},
|
|
||||||
suffix: {":": "comment"},
|
|
||||||
keyword: {
|
|
||||||
"ifeq": "keyword",
|
|
||||||
"ifneq": "keyword",
|
|
||||||
"else": "keyword",
|
|
||||||
"endif": "keyword",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shy: {
|
|
||||||
prefix: {"#": "comment"},
|
|
||||||
profile: true,
|
|
||||||
keyword: {
|
|
||||||
"chapter": "keyword",
|
|
||||||
"label": "keyword",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
json: {link: "js"},
|
|
||||||
css: {
|
|
||||||
suffix: {"": "comment"},
|
|
||||||
},
|
|
||||||
html: {
|
|
||||||
split: {
|
|
||||||
space: " ",
|
|
||||||
operator: "<>",
|
|
||||||
},
|
|
||||||
keyword: {
|
|
||||||
"head": "keyword",
|
|
||||||
"body": "keyword",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
url: {
|
|
||||||
line: function(can, line) {
|
|
||||||
return {button: [line, function(event) {
|
|
||||||
can.page.Appends(can, can.ui.display, [{type: "iframe", data: {src: line}, style: {
|
|
||||||
height: "600px", width: can.Conf("width")-80+"px",
|
|
||||||
}}])
|
|
||||||
}]}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
svg: {
|
svg: {
|
||||||
display: true,
|
display: true,
|
||||||
show: function(can) {
|
show: function(can) {
|
||||||
@ -167,32 +145,28 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
jpg: {
|
url: {
|
||||||
display: true,
|
line: function(can, line) {
|
||||||
show: function(can) {
|
return {button: [line, function(event) {
|
||||||
can.page.Append(can, can.ui.display, can.core.List(can._msg.result, function(line) {
|
can.page.Appends(can, can.ui.display, [{type: "iframe", data: {src: line}, style: {
|
||||||
return {img: "/share/local/"+line, height: 400}
|
height: "600px", width: can.Conf("width")-80+"px",
|
||||||
}))
|
}}])
|
||||||
|
}]}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
m4v: {
|
|
||||||
line: function(can, line) { var auto = true, loop = true, total = 0
|
|
||||||
var p = location.href.startsWith("https")? "": "http://localhost:9020"
|
|
||||||
function cb(event) { console.log(event) }
|
|
||||||
can.page.Modify(can, can._target, {style: {"min-height": can.Conf("height")-160}})
|
|
||||||
return {className: "preview", type: "video", style: {height: can.Conf("height")-160+"px", width: can._target.offsetWidth-160+"px"},
|
|
||||||
data: {src: p+"/share/local/"+line, controls: "controls", autoplay: auto, loop: loop},
|
|
||||||
oncontextmenu: cb, onplay: cb, onpause: cb, onended: cb,
|
|
||||||
onloadedmetadata: function(event) { total = event.timeStamp
|
|
||||||
event.target.currentTime = can._msg.currentTime || 0
|
|
||||||
}, onloadeddata: cb, ontimeupdate: function(event) {
|
|
||||||
can.Status("当前行", can.onexport.position(can, (can._msg.currentTime=event.target.currentTime)-1, event.target.duration))
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "控件交互", list: ["运行", "项目", "搜索"],
|
Volcanos("onaction", {help: "控件交互", list: [],
|
||||||
|
"刷新": function(event, can) {
|
||||||
|
can.run(event, [can.Option("path"), can.Option("file")])
|
||||||
|
},
|
||||||
|
"编辑": function(event, can) { can.onkeymap && can.onkeymap._insert(can) },
|
||||||
|
"保存": function(event, can) {
|
||||||
|
var msg = can.request(event); msg.Option("content", can.onexport.content(can))
|
||||||
|
can.run(event, ["action", "save", can.parse, can.Option("file"), can.Option("path")], function(msg) {
|
||||||
|
can.user.toast(can, "保存成功")
|
||||||
|
}, true)
|
||||||
|
},
|
||||||
|
|
||||||
"返回": function(event, can) {
|
"返回": function(event, can) {
|
||||||
var last = can.history.pop(); last = can.history.pop()
|
var last = can.history.pop(); last = can.history.pop()
|
||||||
last && can.onimport.tabview(can, last.path, last.file, last.line)
|
last && can.onimport.tabview(can, last.path, last.file, last.line)
|
||||||
@ -222,6 +196,7 @@ Volcanos("onaction", {help: "控件交互", list: ["运行", "项目", "搜索"]
|
|||||||
}}])
|
}}])
|
||||||
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)
|
||||||
|
can.ui.editor && can.ui.editor.focus()
|
||||||
}, ondblclick: function(event) {
|
}, ondblclick: function(event) {
|
||||||
var s = document.getSelection()
|
var s = document.getSelection()
|
||||||
var str = s.baseNode.data
|
var str = s.baseNode.data
|
||||||
@ -263,44 +238,25 @@ Volcanos("onaction", {help: "控件交互", list: ["运行", "项目", "搜索"]
|
|||||||
if (target.offsetTop < can.ui.profile.scrollTop || target.offsetTop > can.ui.profile.scrollTop+can.ui.profile.offsetHeight) {
|
if (target.offsetTop < can.ui.profile.scrollTop || target.offsetTop > can.ui.profile.scrollTop+can.ui.profile.offsetHeight) {
|
||||||
can.ui.profile.scrollTo(0, target.offsetTop-160)
|
can.ui.profile.scrollTo(0, target.offsetTop-160)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
|
|
||||||
can.page.Modify(can, can.editor, {className: "editor "+can.mode, value: can.current.innerText, style: {
|
can.ui.editor && can.page.Modify(can, can.ui.editor, {className: "editor "+can.mode, value: can.current.innerText, style: {
|
||||||
height: target.offsetHeight, width: target.offsetWidth,
|
height: target.offsetHeight, width: target.offsetWidth,
|
||||||
left: target.offsetLeft, top: target.offsetTop,
|
left: target.offsetLeft, top: target.offsetTop,
|
||||||
display: "block",
|
display: "block",
|
||||||
}}), can.editor.focus()
|
}})
|
||||||
|
|
||||||
can.page.Modify(can, can.ui.command, {style: {
|
can.ui.command && can.page.Modify(can, can.ui.command, {style: {
|
||||||
height: target.offsetHeight, width: target.offsetWidth,
|
height: target.offsetHeight, width: target.offsetWidth,
|
||||||
left: target.offsetLeft,
|
left: target.offsetLeft,
|
||||||
}})
|
}})
|
||||||
},
|
},
|
||||||
searchLine: function(event, can, value) { can.ui.search.innerHTML = "", value = value.trim()
|
searchLine: function(event, can, value) { value = value.trim()
|
||||||
can.page.Modify(can, can.ui.search, {style: {display: ""}})
|
can.page.Modify(can, can.ui.search, {style: {display: ""}})
|
||||||
var ui = can.page.Append(can, can.ui.search, [{view: "action", list: [
|
value = can.ui.word.value = value || can.ui.word.value || "main"
|
||||||
{input: ["word", function(event) {
|
|
||||||
if (event.key == "Enter") {
|
|
||||||
can.onaction.searchLine(event, can, ui.word.value)
|
|
||||||
}
|
|
||||||
}], onfocus: function(event) {
|
|
||||||
event.target.setSelectionRange(0, -1)
|
|
||||||
}, value: value||"main"},
|
|
||||||
{button: ["搜索", function(event) {
|
|
||||||
can.onaction.searchLine(event, can, ui.word.value)
|
|
||||||
}]},
|
|
||||||
{button: ["返回", function(event) {
|
|
||||||
var last = can.history.pop(); last = can.history.pop()
|
|
||||||
last && can.onimport.tabview(can, last.path, last.file, last.line)
|
|
||||||
}]},
|
|
||||||
{button: ["关闭", function(event) {
|
|
||||||
can.page.Modify(can, can.ui.search, {style: {display: "none"}})
|
|
||||||
}]},
|
|
||||||
]}])
|
|
||||||
|
|
||||||
var msg = can.request(event); msg.Option("_path", can.Option("path"))
|
var msg = can.request(event); msg.Option("_path", can.Option("path"))
|
||||||
value && can.run(event, ["action", "search", can.parse, value, ""], function(msg) {
|
value && can.run(event, ["action", "search", can.parse, value, ""], function(msg) { can.ui.tags.innerHTML = ""
|
||||||
can.onappend.table(can, can.ui.search, "table", msg, function(value, key, index, line) {
|
can.onappend.table(can, can.ui.tags, "table", msg, function(value, key, index, line) {
|
||||||
value = value.replace("<", "<").replace(">", ">")
|
value = value.replace("<", "<").replace(">", ">")
|
||||||
value = value.replace("./", "")
|
value = value.replace("./", "")
|
||||||
can.Status("标签数", index+1)
|
can.Status("标签数", index+1)
|
||||||
@ -308,7 +264,7 @@ Volcanos("onaction", {help: "控件交互", list: ["运行", "项目", "搜索"]
|
|||||||
line.line && can.onimport.tabview(can, can.Option("path"), line.file.replace("./", ""), parseInt(line.line))
|
line.line && can.onimport.tabview(can, can.Option("path"), line.file.replace("./", ""), parseInt(line.line))
|
||||||
}}
|
}}
|
||||||
})
|
})
|
||||||
can.page.Select(can, can.ui.search, "tr", function(item, index) {
|
can.page.Select(can, can.ui.tags, "tr", function(item, index) {
|
||||||
index == 1 && can.page.Select(can, item, "td", function(item, index) {
|
index == 1 && can.page.Select(can, item, "td", function(item, index) {
|
||||||
index == 0 && item.click()
|
index == 0 && item.click()
|
||||||
})
|
})
|
||||||
@ -316,7 +272,7 @@ Volcanos("onaction", {help: "控件交互", list: ["运行", "项目", "搜索"]
|
|||||||
}, true)
|
}, true)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: ["文件名", "解析器", "当前行", "标签数"],
|
Volcanos("onexport", {help: "导出数据", list: ["输入法", "文件名", "解析器", "当前行", "标签数"],
|
||||||
position: function(can, index, total) { total = total || can.max
|
position: function(can, index, total) { total = total || can.max
|
||||||
return parseInt((index+1)*100/total)+"%"+" = "+(parseInt(index)+1)+"/"+parseInt(total)
|
return parseInt((index+1)*100/total)+"%"+" = "+(parseInt(index)+1)+"/"+parseInt(total)
|
||||||
},
|
},
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
|
|
||||||
fieldset.editor>div.output textarea.editor {
|
fieldset.editor>div.output input.editor {
|
||||||
position:absolute; padding:0; margin:0;
|
position:absolute; padding:0; margin:0;
|
||||||
font-size:16px; font-family:monospace;
|
font-size:16px; font-family:monospace;
|
||||||
padding-left:12px;
|
padding-left:9px;
|
||||||
|
|
||||||
background-color:#00000000; color:#00000000;
|
background-color:#00000000; color:#00000000;
|
||||||
caret-color:yellow;
|
caret-color:yellow;
|
||||||
display:none;
|
|
||||||
min-width:480px;
|
min-width:480px;
|
||||||
|
display:none;
|
||||||
}
|
}
|
||||||
fieldset.editor>div.output textarea.editor.normal {
|
fieldset.editor>div.output input.editor.normal {
|
||||||
caret-color:#00000000;
|
caret-color:#00000000;
|
||||||
}
|
}
|
||||||
fieldset.editor>div.output textarea.command {
|
fieldset.editor>div.output input.command {
|
||||||
clear:both;
|
clear:both;
|
||||||
padding:0; margin:0;
|
padding:0; margin:0;
|
||||||
font-size:16px; font-family:monospace;
|
font-size:16px; font-family:monospace;
|
||||||
|
@ -1,32 +1,31 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [],
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
_init: function(can, msg, list, cb, target) {
|
|
||||||
can.require(["/plugin/local/code/inner.js"], function(can) {
|
can.require(["/plugin/local/code/inner.js"], function(can) {
|
||||||
can.onimport._init(can, msg, list, function() {
|
can.onimport._init(can, msg, list, function() {
|
||||||
|
// can.page.Modify(can, can._option, {style: {display: "none"}})
|
||||||
|
var ui = can.page.Append(can, can._target, [
|
||||||
|
{view: ["editor", "input"], "rows": "1", onkeydown: function(event) {
|
||||||
|
can.onkeymap.parse(event, can, "insert"), can.Timer(10, function() {
|
||||||
|
can.onaction.modifyLine(can, can.current, can.editor.value)
|
||||||
|
})
|
||||||
|
}, onblur: function(event) {
|
||||||
|
can.onaction.modifyLine(can, can.current, can.editor.value)
|
||||||
|
}, onclick: function(event) {
|
||||||
|
|
||||||
|
}, ondblclick: function(event) {
|
||||||
|
can.onkeymap._mode(can, "insert")
|
||||||
|
}},
|
||||||
|
{view: ["command", "input"], onkeydown: function(event) {
|
||||||
|
can.onkeymap.parse(event, can, "command")
|
||||||
|
}},
|
||||||
|
])
|
||||||
|
can.ui.editor = ui.editor
|
||||||
|
can.ui.command = ui.command
|
||||||
|
can.onkeymap._init(can, "normal")
|
||||||
typeof cb == "function" && cb()
|
typeof cb == "function" && cb()
|
||||||
}, target)
|
}, target)
|
||||||
})
|
})
|
||||||
return
|
|
||||||
/*
|
|
||||||
{view: ["editor", "textarea"], onkeydown: function(event) {
|
|
||||||
can.onkeymap.parse(event, can, "insert"), can.Timer(10, function() {
|
|
||||||
can.onaction.modifyLine(can, can.current, can.editor.value)
|
|
||||||
})
|
|
||||||
}, onblur: function(event) {
|
|
||||||
can.onaction.modifyLine(can, can.current, can.editor.value)
|
|
||||||
}, onclick: function(event) {
|
|
||||||
|
|
||||||
}, ondblclick: function(event) {
|
|
||||||
can.onkeymap._mode(can, "insert")
|
|
||||||
}},
|
|
||||||
{view: ["command", "textarea"], onkeydown: function(event) {
|
|
||||||
can.onkeymap.parse(event, can, "command")
|
|
||||||
}},
|
|
||||||
*/
|
|
||||||
},
|
},
|
||||||
}, ["/plugin/local/code/vimer.css"])
|
}, ["/plugin/local/code/vimer.css"])
|
||||||
|
|
||||||
Volcanos("onaction", {help: "交互操作", list: [],
|
|
||||||
})
|
|
||||||
Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"], _init: function(can, mode) {
|
Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"], _init: function(can, mode) {
|
||||||
can.page.Modify(can, can.ui.command, {style: {display: "none", width: can._target.offsetWidth-20+"px"}})
|
can.page.Modify(can, can.ui.command, {style: {display: "none", width: can._target.offsetWidth-20+"px"}})
|
||||||
|
|
||||||
@ -39,21 +38,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
|||||||
}), can.onkeymap[item]._engine = engine
|
}), can.onkeymap[item]._engine = engine
|
||||||
}), can.onkeymap._mode(can, mode||"normal")
|
}), can.onkeymap._mode(can, mode||"normal")
|
||||||
},
|
},
|
||||||
deleteLine: function(can, target) { can.page.Remove(can, target)
|
_mode: function(can, value) { can.Status("输入法", can.mode = value)
|
||||||
var ls = can.page.Select(can, can.ui.preview, "div.item")
|
|
||||||
can.page.Remove(can, ls[ls.length-1]), can.max--
|
|
||||||
},
|
|
||||||
insertLine: function(can, target, value, before) { var line = can.onaction.appendLine(can, value)
|
|
||||||
can.ui.content.insertBefore(line, before && target || target.nextSibling)
|
|
||||||
return line
|
|
||||||
},
|
|
||||||
mergeLine: function(can, target) { if (!target) {return}
|
|
||||||
can.onaction.modifyLine(can, target, target.innerHTML + target.nextSibling.innerHTML)
|
|
||||||
can.onaction.deleteLine(can, target.nextSibling)
|
|
||||||
return target
|
|
||||||
},
|
|
||||||
_merge: function(can, value) { return true },
|
|
||||||
_mode: function(can, value) { can.Action("mode", can.mode = value)
|
|
||||||
can.page.Modify(can, can.ui.editor, {className: "editor "+can.mode, style: {display: "none"}})
|
can.page.Modify(can, can.ui.editor, {className: "editor "+can.mode, style: {display: "none"}})
|
||||||
can.page.Modify(can, can.ui.command, {className: "command "+can.mode, style: {display: "none"}})
|
can.page.Modify(can, can.ui.command, {className: "command "+can.mode, style: {display: "none"}})
|
||||||
return value
|
return value
|
||||||
@ -62,33 +47,28 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
|||||||
can.page.Modify(can, can.ui.command, {value: "", style: {display: "block"}})
|
can.page.Modify(can, can.ui.command, {value: "", style: {display: "block"}})
|
||||||
can.ui.command.focus()
|
can.ui.command.focus()
|
||||||
},
|
},
|
||||||
_normal: function(can) { can.onkeymap._mode(can, "normal") },
|
_normal: function(can) { can.onkeymap._mode(can, "normal")
|
||||||
_insert: function(can) {
|
can.page.Modify(can, can.ui.editor, {style: {display: "block"}})
|
||||||
can.onkeymap._mode(can, "insert")
|
can.ui.editor.focus()
|
||||||
can.page.Modify(can, can.ui.editor, {className: "editor "+can.mode, style: {display: ""}})
|
},
|
||||||
|
_insert: function(can) { can.onkeymap._mode(can, "insert")
|
||||||
|
can.page.Modify(can, can.ui.editor, {style: {display: "block"}})
|
||||||
|
can.ui.editor.focus()
|
||||||
},
|
},
|
||||||
|
|
||||||
_remote: function(event, can, key, arg, cb) { can.ui.display.innerHTML = "", can.ui.profile.innerHTML = ""
|
_remote: function(event, can, key, arg, cb) {
|
||||||
var p = can.onsyntax[can.parse]; can.display = p && p.profile && can.ui.profile || can.ui.display
|
can.page.Modify(can, can.ui.display, {innerHTML: "", style: {display: "none"}})
|
||||||
if (p && p.show) { p.show(can); return }
|
|
||||||
|
|
||||||
can.page.Modify(can, can.display, {innerHTML: "", style: {display: "none"}})
|
|
||||||
var msg = can.request(event); msg.Option("content", can.onexport.content(can))
|
var msg = can.request(event); msg.Option("content", can.onexport.content(can))
|
||||||
can.run(event, arg||["action", key, can.Option("path"), can.Option("file")], cb||function(msg) {
|
can.run(event, arg||["action", key, can.Option("path"), can.Option("file")], cb||function(msg) {
|
||||||
(msg.Result() || msg.append && msg.append.length > 0) && can.page.Modify(can, can.display, {innerHTML: "", style: {display: "block"}})
|
(msg.Result() || msg.append && msg.append.length > 0) && can.page.Modify(can, can.ui.display, {innerHTML: "", style: {display: "block"}})
|
||||||
can.onappend.table(can, can.display, "table", msg)
|
can.onappend.table(can, can.ui.display, "table", msg)
|
||||||
can.onappend.board(can, can.display, "board", msg)
|
can.onappend.board(can, can.ui.display, "board", msg)
|
||||||
}, true)
|
}, true)
|
||||||
},
|
},
|
||||||
_engine: {
|
_engine: {
|
||||||
w: function(event, can) { can.onkeymap._remote(event, can, "保存") },
|
e: function(event, can, line, ls) { can.onimport.tabview(can, can.Option("path"), ls[1]) },
|
||||||
e: function(event, can, line, ls) {
|
w: function(event, can) { can.onaction["保存"](event, can, "保存") },
|
||||||
can.onimport.tabview(can, can.Option("path"), ls[1])
|
r: function(event, can) { can.onaction["运行"](event, can, "运行") },
|
||||||
},
|
|
||||||
r: function(event, can) { can.onkeymap._remote(event, can, "运行") },
|
|
||||||
|
|
||||||
commit: function(event, can) { can.onkeymap._remote(event, can, "提交") },
|
|
||||||
history: function(event, can) { can.onkeymap._remote(event, can, "历史") },
|
|
||||||
},
|
},
|
||||||
|
|
||||||
parse: function(event, can, mode) {
|
parse: function(event, can, mode) {
|
||||||
@ -188,23 +168,23 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
|||||||
can.editor.setSelectionRange(-1, -1)
|
can.editor.setSelectionRange(-1, -1)
|
||||||
},
|
},
|
||||||
o: function(event, can) { can.onkeymap._insert(can)
|
o: function(event, can) { can.onkeymap._insert(can)
|
||||||
can.onaction.insertLine(can, can.current).click()
|
can.onkeymap.insertLine(can, can.current).click()
|
||||||
},
|
},
|
||||||
O: function(event, can) { can.onkeymap._insert(can)
|
O: function(event, can) { can.onkeymap._insert(can)
|
||||||
can.onaction.insertLine(can, can.current, "", true).click()
|
can.onkeymap.insertLine(can, can.current, "", true).click()
|
||||||
},
|
},
|
||||||
|
|
||||||
yy: function(event, can) { can.last = can.current.innerText },
|
yy: function(event, can) { can.last = can.current.innerText },
|
||||||
dd: function(event, can) { can.last = can.current.innerText
|
dd: function(event, can) { can.last = can.current.innerText
|
||||||
var next = can.current.nextSibling || can.current.previousSibling
|
var next = can.current.nextSibling || can.current.previousSibling
|
||||||
can.onaction.deleteLine(can, can.current)
|
can.onkeymap.deleteLine(can, can.current)
|
||||||
next.click()
|
next.click()
|
||||||
},
|
},
|
||||||
p: function(event, can) {
|
p: function(event, can) {
|
||||||
can.onaction.insertLine(can, can.current, can.last).click()
|
can.onkeymap.insertLine(can, can.current, can.last).click()
|
||||||
},
|
},
|
||||||
P: function(event, can) {
|
P: function(event, can) {
|
||||||
can.onaction.insertLine(can, can.current, can.last, true).click()
|
can.onkeymap.insertLine(can, can.current, can.last, true).click()
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
insert: {
|
insert: {
|
||||||
@ -214,10 +194,11 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
|||||||
},
|
},
|
||||||
Enter: function(event, can) {
|
Enter: function(event, can) {
|
||||||
can.onkeymap.insert.Escape(event, can)
|
can.onkeymap.insert.Escape(event, can)
|
||||||
can.onaction.insertLine(can, can.current, "", event.shiftKey).click()
|
can.onkeymap.insertLine(can, can.current, "", event.shiftKey).click()
|
||||||
|
can.onkeymap._insert(can)
|
||||||
},
|
},
|
||||||
Backspace: function(event, can) { if (can.editor.selectionStart > 0) { return }
|
Backspace: function(event, can) { if (can.editor.selectionStart > 0) { return }
|
||||||
can.onaction.mergeLine(can, can.current.previousSibling).click()
|
can.onkeymap.mergeLine(can, can.current.previousSibling).click()
|
||||||
event.stopPropagation(), event.preventDefault()
|
event.stopPropagation(), event.preventDefault()
|
||||||
},
|
},
|
||||||
ArrowDown: function(event, can) {
|
ArrowDown: function(event, can) {
|
||||||
@ -231,23 +212,18 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
|||||||
can.onkeymap.insert.Escape(event, can)
|
can.onkeymap.insert.Escape(event, can)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
|
||||||
Volcanos("ondetail", {help: "菜单交互", list: [
|
insertLine: function(can, target, value, before) { var line = can.onaction.appendLine(can, value)
|
||||||
// "保存", "运行", "提交", "记录", "删除行", "合并行", "插入行", "添加行", "追加行",
|
can.ui.content.insertBefore(line, before && target || target.nextSibling)
|
||||||
],
|
return line
|
||||||
"删除行": function(event, can, msg) {
|
|
||||||
can.onaction.deleteLine(can, can.current)
|
|
||||||
},
|
},
|
||||||
"合并行": function(event, can, msg) {
|
deleteLine: function(can, target) { can.page.Remove(can, target)
|
||||||
can.onaction.mergeLine(can, can.current)
|
var ls = can.page.Select(can, can.ui.preview, "div.item")
|
||||||
|
can.page.Remove(can, ls[ls.length-1]), can.max--
|
||||||
},
|
},
|
||||||
"插入行": function(event, can, msg) {
|
mergeLine: function(can, target) { if (!target) {return}
|
||||||
can.onaction.insertLine(can, can.current, "", true)
|
can.onaction.modifyLine(can, target, target.innerHTML + target.nextSibling.innerHTML)
|
||||||
},
|
can.onkeymap.deleteLine(can, target.nextSibling)
|
||||||
"添加行": function(event, can, msg) {
|
return target
|
||||||
can.onaction.insertLine(can, can.current)
|
|
||||||
},
|
|
||||||
"追加行": function(event, can, msg) {
|
|
||||||
can.onaction.appendLine(can)
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
fieldset.draw div.action {
|
fieldset.drawer div.output div.project {
|
||||||
clear:none;
|
min-width:80px; max-width:240px; overflow:auto;
|
||||||
}
|
}
|
||||||
fieldset.draw div.output div.project {
|
fieldset.drawer div.output div.project div.item:hover {
|
||||||
min-width:60px;
|
|
||||||
max-width:120px;
|
|
||||||
overflow:auto;
|
|
||||||
}
|
|
||||||
fieldset.draw div.output div.project div.item.select {
|
|
||||||
background-color:red; border:solid 2px yellow;
|
background-color:red; border:solid 2px yellow;
|
||||||
}
|
}
|
||||||
fieldset.draw div.output svg {
|
fieldset.drawer div.output div.project div.item.select {
|
||||||
|
background-color:red; border:solid 2px yellow;
|
||||||
|
}
|
||||||
|
fieldset.drawer div.output svg {
|
||||||
border: 1px solid red;
|
border: 1px solid red;
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { can._output.innerHTML = ""
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { can._output.innerHTML = ""
|
||||||
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", style: {display: "none"}}, {view: "profile"},
|
{view: "project", style: {display: "none"}},
|
||||||
{view: "preview"}, {view: "content", onmouseenter: function(event) {
|
{view: "content", onmouseenter: function(event) {
|
||||||
can.onkeypop.action = can
|
can.onkeypop.action = can
|
||||||
}}, {view: "display"},
|
}}, {view: "display"},
|
||||||
])
|
])
|
||||||
|
can.page.Modify(can, can._action, {style: {display: "none"}})
|
||||||
|
|
||||||
// 交互数据
|
// 交互数据
|
||||||
can.point = [], can.keys = []
|
can.point = [], can.keys = []
|
||||||
@ -40,8 +41,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
"fill": "purple",
|
"fill": "purple",
|
||||||
"shape": "rect",
|
"shape": "rect",
|
||||||
"grid": "10",
|
"grid": "10",
|
||||||
"go": "manual",
|
"go": "run",
|
||||||
"go": "auto",
|
|
||||||
}, function(key, value) {
|
}, function(key, value) {
|
||||||
can.svg.Value(key, can.Action(key, can.svg.Value(key)||value))
|
can.svg.Value(key, can.Action(key, can.svg.Value(key)||value))
|
||||||
})
|
})
|
||||||
@ -173,7 +173,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.core.List(can.keys, function(key) {
|
can.core.List(can.keys, function(key) {
|
||||||
if (!list) {
|
if (!list) {
|
||||||
// 查找失败
|
// 查找失败
|
||||||
return can.keys = [], can.Status("keys", can.keys)
|
return can.keys = [], can.Status("按键", can.keys)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查找递进
|
// 查找递进
|
||||||
@ -183,7 +183,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
|
|
||||||
if (!list || !list.list) {
|
if (!list || !list.list) {
|
||||||
// 等待输入
|
// 等待输入
|
||||||
return can.Status("keys", can.keys+"("+can.core.Item(list).join(",")+")")
|
return can.Status("按键", can.keys+"("+can.core.Item(list).join(",")+")")
|
||||||
}
|
}
|
||||||
|
|
||||||
function call(cmds) {
|
function call(cmds) {
|
||||||
@ -192,7 +192,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
|
|
||||||
// 执行命令
|
// 执行命令
|
||||||
call(prefix.concat(list.list))
|
call(prefix.concat(list.list))
|
||||||
return can.keys = [], can.Status("keys", can.keys)
|
return can.keys = [], can.Status("按键", can.keys)
|
||||||
},
|
},
|
||||||
}, ["plugin/local/wiki/draw.css"])
|
}, ["plugin/local/wiki/draw.css"])
|
||||||
Volcanos("onfigure", {help: "图形绘制", list: [],
|
Volcanos("onfigure", {help: "图形绘制", list: [],
|
||||||
@ -546,7 +546,7 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, ["/plugin/local/wiki/draw/heart.js"])
|
}, ["/plugin/local/wiki/draw/heart.js"])
|
||||||
Volcanos("onaction", {help: "组件菜单", list: ["", "项目", "保存", "",
|
Volcanos("onaction", {help: "组件菜单", list: [
|
||||||
["grid", 1, 2, 3, 4, 5, 10, 20],
|
["grid", 1, 2, 3, 4, 5, 10, 20],
|
||||||
["stroke-width", 1, 2, 3, 4, 5],
|
["stroke-width", 1, 2, 3, 4, 5],
|
||||||
["font-size", 12, 16, 18, 24, 32],
|
["font-size", 12, 16, 18, 24, 32],
|
||||||
@ -556,14 +556,18 @@ Volcanos("onaction", {help: "组件菜单", list: ["", "项目", "保存", "",
|
|||||||
{text: [" a:", "div", "item"]}, ["mode", "translate", "draw", "resize", "delete"],
|
{text: [" a:", "div", "item"]}, ["mode", "translate", "draw", "resize", "delete"],
|
||||||
{text: [" s:", "div", "item"]}, ["shape", "block", "rect", "text", "line", "path", "circle", "ellipse", "heart"],
|
{text: [" s:", "div", "item"]}, ["shape", "block", "rect", "text", "line", "path", "circle", "ellipse", "heart"],
|
||||||
],
|
],
|
||||||
|
"编辑": function(event, can, key) { can.Action("go", "auto") },
|
||||||
|
"保存": function(event, can, key) {
|
||||||
|
var msg = can.request(event); msg.Option("content", can.onexport.content(can, can.svg))
|
||||||
|
can.run(event, ["action", key, can.Option("path"), can.Option("file")], function() {
|
||||||
|
can.user.toast(can, "保存成功")
|
||||||
|
}, true)
|
||||||
|
},
|
||||||
"项目": function(event, can, key) {
|
"项目": function(event, can, key) {
|
||||||
can.page.Modify(can, can.ui.project, {style: {display: can.ui.project.style.display=="none"? "block": "none"}})
|
can.page.Modify(can, can.ui.project, {style: {display: can.ui.project.style.display=="none"? "block": "none"}})
|
||||||
},
|
},
|
||||||
"保存": function(event, can, key) { var msg = can.request(event)
|
"变参": function(event, can, key) {
|
||||||
msg.Option("content", can.onexport.file(can, can.svg))
|
can.page.Modify(can, can._action, {style: {display: can._action.style.display=="none"? "": "none"}})
|
||||||
can.run(event, ["action", key, can.Option("path")], function() {
|
|
||||||
can.user.toast(can, "保存成功")
|
|
||||||
}, true)
|
|
||||||
},
|
},
|
||||||
"清空": function(event, can) {
|
"清空": function(event, can) {
|
||||||
can.group.innerHTML = "", can.point = [], can.keys = [], delete(can.temp)
|
can.group.innerHTML = "", can.point = [], can.keys = [], delete(can.temp)
|
||||||
@ -700,14 +704,9 @@ Volcanos("onaction", {help: "组件菜单", list: ["", "项目", "保存", "",
|
|||||||
return point
|
return point
|
||||||
},
|
},
|
||||||
_show: function(can, target) { var figure = can.onfigure._get(can, target)
|
_show: function(can, target) { var figure = can.onfigure._get(can, target)
|
||||||
can.Status("group", target.Groups())
|
can.Status("分组", target.Groups() || can.group.Value("class") )
|
||||||
can.Status("target", target.tagName + " " + (
|
can.Status("图形", target.tagName + " " + (
|
||||||
figure? figure.show(can, target): ""))
|
figure? figure.show(can, target): ""))
|
||||||
if (target.Value) {
|
|
||||||
can.Status("zone", target.Value("zone"))
|
|
||||||
can.Status("type", target.Value("type"))
|
|
||||||
can.Status("name", target.Value("name"))
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
_auto: function(can, target, pos) {
|
_auto: function(can, target, pos) {
|
||||||
if (target.tagName == "text") {
|
if (target.tagName == "text") {
|
||||||
@ -749,8 +748,8 @@ Volcanos("onaction", {help: "组件菜单", list: ["", "项目", "保存", "",
|
|||||||
},
|
},
|
||||||
onmousemove: function(event, can) {
|
onmousemove: function(event, can) {
|
||||||
var point = can.onaction._point(event, can)
|
var point = can.onaction._point(event, can)
|
||||||
can.Status("point", point.x+","+point.y)
|
can.Status("坐标", point.x+","+point.y)
|
||||||
if (can.Action("go") == "run") { return }
|
if (can.Action("go") == "run") { return can.page.Modify(can, event.target, {style: {cursor: ""}}) }
|
||||||
|
|
||||||
var pos = can.page.Prepos(event, event.target)
|
var pos = can.page.Prepos(event, event.target)
|
||||||
if (can.Action("go") == "auto" && can.point.length == 0) {
|
if (can.Action("go") == "auto" && can.point.length == 0) {
|
||||||
@ -810,8 +809,8 @@ Volcanos("ondetail", {help: "组件详情", list: ["复制", "标签", "编辑",
|
|||||||
can.onfigure._copy(event, can, event.target)
|
can.onfigure._copy(event, can, event.target)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: ["point", "group", "target", "zone", "type", "name", "keys"],
|
Volcanos("onexport", {help: "导出数据", list: ["坐标", "分组", "图形", "按键"],
|
||||||
file: function(can, svg) {
|
content: function(can, svg) {
|
||||||
return ['<svg vertion="1.1" xmlns="https://www.w3.org/2000/svg" text-anchor="middle" dominant-baseline="middle"'].concat(
|
return ['<svg vertion="1.1" xmlns="https://www.w3.org/2000/svg" text-anchor="middle" dominant-baseline="middle"'].concat(
|
||||||
svg? can.core.List([
|
svg? can.core.List([
|
||||||
"count", "width", "height", "font-size", "stroke-width", "stroke", "fill",
|
"count", "width", "height", "font-size", "stroke-width", "stroke", "fill",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user