1
0
forked from x/volcanos
This commit is contained in:
shaoying 2021-02-17 23:28:47 +08:00
parent de1f5faeb5
commit dc31630121
13 changed files with 188 additions and 256 deletions

View File

@ -517,7 +517,7 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can) {
topic: function(can, topic) { topic && (can._topic = topic) topic: function(can, topic) { topic && (can._topic = topic)
can.user.topic(can, can._topic || can.user.Search(can, "topic") || ((can.user.Search(can, "pod")||can.base.isNight())? "black": "white")) can.user.topic(can, can._topic || can.user.Search(can, "topic") || ((can.user.Search(can, "pod")||can.base.isNight())? "black": "white"))
}, },
figure: function(can, event) { var p = can._target figure: function(event, can, target) { var p = target||can._target
var layout = {left: event.clientX, top: event.clientY+10} var layout = {left: event.clientX, top: event.clientY+10}
can.page.Modify(can, p, {style: layout}) can.page.Modify(can, p, {style: layout})
can.onmotion.move(can, p, layout) can.onmotion.move(can, p, layout)
@ -759,6 +759,26 @@ Volcanos("onmotion", {help: "动态交互", list: [], _init: function(can, targe
}) })
}, },
story: function(can, target) {
can.page.Select(can, target, ".story", function(target) { var data = target.dataset
can.page.Modify(can, target, {style: can.base.Obj(data.style)})
switch (data.type) {
case "spark":
if (data["name"] == "inner") {
target.title = "点击复制", target.onclick = function(event) {
can.user.copy(event, can, target.innerText)
}
} else {
can.page.Select(can, target, "span", function(item) {
item.title = "点击复制", item.onclick = function(event) {
can.user.copy(event, can, item.innerText)
}
})
}
}
})
},
clear: function(can, target) { clear: function(can, target) {
can.page.Modify(can, target||can._output, "") can.page.Modify(can, target||can._output, "")
}, },

View File

@ -49,11 +49,9 @@ Volcanos("user", {help: "用户模块", agent: {
}) })
}, },
trans: function(can, text) { trans: function(can, text) {
if (typeof text == "function") { if (typeof text == "function") { text = text.name || "" }
text = text.name || ""
}
return can._trans && can._trans[text] || can.Conf("trans."+text) || can.Conf("feature.trans."+text) || { return can._trans && can._trans[text] || can.Conf("trans."+text) || can.Conf("feature.trans."+text) || {
"submit": "提交", "cancel": "取消",
}[text] || text }[text] || text
}, },
topic: function(can, name) { topic: function(can, name) {
@ -62,52 +60,30 @@ Volcanos("user", {help: "用户模块", agent: {
can.user.isMobile && can.page.ClassList.add(can, document.body, "mobile") can.user.isMobile && can.page.ClassList.add(can, document.body, "mobile")
can.user.isMobile && can.page.ClassList.set(can, document.body, "landscape", width > height) can.user.isMobile && can.page.ClassList.set(can, document.body, "landscape", width > height)
}, },
toast: function(can, text, title, duration, progress) { toast: function(can, content, title, duration, progress) {
var meta = typeof text == "object"? text: {text: text, title: title||can._help, duration: duration, progress: progress} var meta = typeof content == "object"? content: {content: content, title: title||can._help, duration: duration, progress: progress}
var width = meta.width||400, height = meta.height||100 var width = meta.width||400, height = meta.height||100; if (width < 0) { width = window.innerWidth + width }
if (width < 0) { width = window.innerWidth + width }
var ui = can.page.Append(can, document.body, [{view: "toast", style: { var ui = can.page.Append(can, document.body, [{view: "toast", style: {
width: width, bottom: 100, left: document.body.clientWidth/2-width/2, width: width, bottom: 100, left: window.innerWidth/2-width/2,
}, list: [ }, list: [
{text: [meta.title||"", "div", "title"]}, {text: [meta.title||"", "div", "title"]},
typeof meta.text == "object"? meta.text: {text: [meta.text||"执行成功", "div", "content"]}, typeof meta.content == "object"? meta.content: {text: [meta.content||"执行成功", "div", "content"]},
{view: ["button"], list: meta.button}, {view: "button", list: meta.button},
{text: ["", "div", "duration"]}, {view: "duration"}, meta.progress > 0 && {view: "progress", style: {width: width}, list: [
meta.progress > 0 && {text: ["", "div", "progress"], style: {width: width}, list: [ {view: "current", style: {width: meta.progress/100*width}},
{text: ["", "div", "current"], style: {width: meta.progress/100*width}},
]}, ]},
], ondblclick: function(event) { ui.Close() }}]) ] }]); can.onmotion.story(can, ui.first)
var timer = can.core.Timer({interval: 100, length: (meta.duration||1000)/100}, function(event, interval, index) {
if (index > 20) { ui.duration.innerHTML = parseInt(index/10)+"."+(index%10)+"s..." }
}, function() {
can.page.Remove(can, ui.first), timer.stop = true
})
ui.Close = function() { can.page.Remove(can, ui.first), timer.stop = true } ui.Close = function() { can.page.Remove(can, ui.first), timer.stop = true }
var timer = can.core.Timer({interval: 100, length: (meta.duration||1000)/100}, function(event, interval, index) {
can.page.Select(can, ui.first, ".story", function(target) { var data = target.dataset if (index > 20) { ui.duration.innerHTML = parseInt(index/10)+"."+(index%10)+"s..." }
can.page.Modify(can, target, {style: can.base.Obj(data.style)}) }, ui.Close)
switch (data.type) {
case "spark":
if (data["name"] == "inner") {
target.title = "点击复制", target.onclick = function(event) {
can.user.copy(event, can, target.innerText)
}
return
}
can.page.Select(can, target, "span", function(item) {
item.title = "点击复制", item.onclick = function(event) {
can.user.copy(event, can, item.innerText)
}
})
}
})
can.run(can.request({}, { can.run(can.request({}, {
text: meta.text, time: can.base.Time(), fileline: can.base.FileLine(2, 2), title: meta.title, content: meta.content,
})._event, ["search", "Footer.onimport.toast"], function() {}, true) time: can.base.Time(), fileline: can.base.FileLine(2, 2),
})._event, ["search", "Footer.onimport.toast"], null, true)
return ui return ui
}, },
share: function(can, msg, cmd) { share: function(can, msg, cmd) {
@ -166,75 +142,55 @@ Volcanos("user", {help: "用户模块", agent: {
event.preventDefault() event.preventDefault()
return ui return ui
}, },
input: function(event, can, form, cb) { // form [ string, {_input: }, array, object, button ] input: function(event, can, form, cb) { // form [ string, array, object, {_input: }, {button: []} ]
function cbs(event, button) {
var data = {}, args = []; var list = can.page.Select(can, ui.table, "select,input,textarea", function(item) {
args.push(item.name, item.value)
return data[item.name] = item.value
})
if (typeof cb == "function" && !cb(event, button, data, list, args)) {
can.page.Remove(can, ui.first)
}
}
var msg = can.request(event, can.Option()) var msg = can.request(event, can.Option())
var x = event.clientX||200, y = event.clientY||48; y += 10; if (x > 600) { x -= 160 } var x = event.clientX||200, y = event.clientY+10||48
if (can.user.isMobile) { x = 100, y = 100 }
function Option(key, value) { var button; var ui = can.page.Append(can, document.body, [{view: ["input inputs", "fieldset"], style: {left: x, top: y}, list: [
if (key == undefined) { value = {}
can.page.Select(can, ui.first, "input", function(item) {
item.name && item.value && (value[item.name] = item.value)
}); return value
}
if (typeof key == "object") {
return can.core.Item(key, arguments.callee), key
}
can.page.Select(can, ui.first, 'input[name='+key+']', function(item) {
value == undefined? value = item.value: item.value = value
}); return value
}
var button; var ui = can.page.Append(can, document.body, [{view: ["input inputs", "fieldset"], style: {left: x+"px", top: y+"px"}, list: [
{view: ["option", "table"], list: can.core.List(form, function(item) { {view: ["option", "table"], list: can.core.List(form, function(item) {
if (item.button) { button = item.button; return } if (item.button) { button = item.button; return }
item.run = function(event, cmds, cb) {
var msg = can.request(event, Option())
msg.Option("_handle", "true")
can.run(event, cmds, cb, true)
}
function _init(target) { function _init(target) {
item.run = function(event, cmds, cb) {
var msg = can.request(event, function() { var value = {_handle: "true"}
can.page.Select(can, ui.table, "textarea,input,select", function(item) {
item.name && item.value && (value[item.name] = item.value)
}); return value
})
can.run(event, cmds, cb, true)
}
can.onappend.figure(can, item, item.value, target) can.onappend.figure(can, item, item.value, target)
target.value = target.value || msg.Option(typeof item == "string"? item: item.name) target.value = target.value || msg.Option(item.name)
} }
return {type: ["tr"], list: [ item = typeof item == "string"? {_input: "text", name: item}:
{type: "td", list: [{text: typeof item == "string"? item: item.length > 0? item[0]: item.name || ""}]}, item.length > 0? {_input: "select", name: item[0], values: item.slice(1)}: item
{type: "td", list: [typeof item == "string"? /* input */ {input: item, data: {autofocus: true}, _init: _init}:
item._input == "textarea"? /* textarea */ {type: "textarea", data: item, _init: _init}: return {type: "tr", list: [{type: "td", list: [{text: item.name||""}]}, {type: "td", list: [
item._input == "select"? /* select */ {select: [[item.name].concat(item.values)], data: item}: item._input == "textarea"? /* textarea */ {type: "textarea", data: item, _init: _init}:
item._input? /* input */ {type: "input", data: (item.type = item._input, item), _init: _init}: item._input == "select"? /* select */ {select: [[item.name].concat(item.values)], data: item}:
item.length > 0? /* select */ {select: [item]}: item._input? /* input */ {type: "input", data: (item.type = item._input, item), _init: _init}:
/* other */ item, /* other */ item,
]}, ]} ]}
]}
})}, })},
{view: "action"}, {view: "action"},
]}]) ]}])
can.onappend._action(can, button||["提交", "关闭"], ui.action, { function cbs(event, button) { var data = {}, args = [], list = []
list = can.page.Select(can, ui.table, "textarea,input,select", function(item) {
return args.push(item.name, item.value), data[item.name] = item.value
})
typeof cb == "function" && !cb(event, button, data, list, args) && can.page.Remove(can, ui.first)
}
can.onappend._action(can, button||["submit", "cancel"], ui.action, {
cancel: function(event) { can.page.Remove(can, ui.first) },
_engine: function(event, can, key) { cbs(event, key) }, _engine: function(event, can, key) { cbs(event, key) },
"提交": function(event) { cbs(event, "提交") }, submit: function(event) { cbs(event, "submit") },
"关闭": function(event) { can.page.Remove(can, ui.first) },
}) })
can.page.Select(can, ui.first, "textarea,input", function(item, index) { can.onlayout.figure(event, can, ui.first), can.page.Select(can, ui.table, "textarea,input", function(item, index) {
index == 0 && can.core.Timer(100, function() { index == 0 && can.core.Timer(100, function() { item.focus(), item.setSelectionRange(0, -1) })
item.focus(), item.setSelectionRange(0, -1)
})
}) })
return ui return ui
}, },

View File

@ -1,18 +1,15 @@
body.mobile.landscape fieldset.Header.head { body.mobile.landscape fieldset.Header.head {
position:unset; position:unset;
} }
body.mobile.landscape fieldset.Header.head div.state.time {
display:block;
}
body.mobile.landscape fieldset.Footer.foot { body.mobile.landscape fieldset.Footer.foot {
position:unset; position:unset;
} }
body.mobile.landscape fieldset.Action.main { body.mobile.landscape fieldset.Action.main {
margin-top:0; margin-bottom:0; margin-top:0; margin-bottom:0;
} }
body.mobile.landscape fieldset.Header.head div.state.time {
display:block;
}
body.mobile fieldset.Header.head div.state.time {
display:none;
}
body.mobile fieldset.Header.head { body.mobile fieldset.Header.head {
position:fixed; top:0; position:fixed; top:0;
width:-webkit-fill-available; width:-webkit-fill-available;
@ -20,6 +17,9 @@ body.mobile fieldset.Header.head {
background-color:#000000b8; background-color:#000000b8;
z-index:10; z-index:10;
} }
body.mobile fieldset.Header.head div.state.time {
display:none;
}
body.mobile fieldset.Footer.foot { body.mobile fieldset.Footer.foot {
position:fixed; bottom:0; position:fixed; bottom:0;
width:-webkit-fill-available; width:-webkit-fill-available;
@ -41,10 +41,10 @@ body.mobile fieldset.River>div.output div.list div.item {
body.mobile fieldset.Action.main { body.mobile fieldset.Action.main {
margin-top:48px; margin-bottom:64px; margin-top:48px; margin-bottom:64px;
} }
body.mobile select { body.mobile input {
font-size:18px; font-size:18px;
} }
body.mobile input { body.mobile select {
font-size:18px; font-size:18px;
} }
body.mobile div.carte { body.mobile div.carte {
@ -56,6 +56,10 @@ body {
background:black; background:black;
color:cyan; color:cyan;
} }
legend {
box-shadow:4px 4px 20px 4px #626bd0;
cursor:pointer;
}
fieldset { fieldset {
margin:0; border:0; padding:0; margin:0; border:0; padding:0;
} }
@ -67,8 +71,6 @@ fieldset.plugin {
background-color:#061c3c9e; background-color:#061c3c9e;
margin:10px; padding:10px; margin:10px; padding:10px;
} }
fieldset.input>legend {
}
fieldset.float { fieldset.float {
position:absolute; position:absolute;
background-color:#023531cf; background-color:#023531cf;
@ -76,18 +78,12 @@ fieldset.float {
fieldset.float>legend { fieldset.float>legend {
display:none; display:none;
} }
legend {
box-shadow:4px 4px 20px 4px #626bd0;
cursor:pointer;
}
input[type=button] { input[name=cmd] {
background-color:black; color:cyan; width:160px;
letter-spacing:4px;
padding-left:10px;
} }
input[type=button]:hover { input[name=date] {
background-color:gray; color:cyan; width:150px;
} }
input[type=text] { input[type=text] {
box-shadow: 4px 4px 10px 1px #626bd0; box-shadow: 4px 4px 10px 1px #626bd0;
@ -97,11 +93,13 @@ input[type=text] {
input[type=text]:hover { input[type=text]:hover {
background-color:white; background-color:white;
} }
input[name=cmd] { input[type=button] {
width:160px; background-color:black; color:cyan;
letter-spacing:4px;
padding-left:10px;
} }
fieldset>form.option>div.item input.args[name=date] { input[type=button]:hover {
width:150px; background-color:gray; color:cyan;
} }
select { select {
box-shadow: 4px 4px 10px 1px #626bd0; box-shadow: 4px 4px 10px 1px #626bd0;
@ -190,10 +188,78 @@ div.code {
text-align:left; white-space:pre; text-align:left; white-space:pre;
overflow:auto; overflow:auto;
} }
div.story {
text-align:left;
}
div.hidden { div.hidden {
display:none; display:none;
} }
div.toast {
background:#0e3369b3; color:yellow;
position:fixed;
overflow:auto;
padding:5px;
z-index:100;
}
div.toast div.title {
font-size:14px;
color:#cae850;
}
div.toast div.content {
text-align:center;
white-space:pre;
}
div.toast div.duration {
font-size:14px;
color:gray;
}
div.toast div.progress {
border:solid 2px green;
height:10px;
}
div.toast div.progress div.current {
background:red;
height:10px;
}
div.carte {
position:fixed;
background:#295b61;
color:white;
padding:4px;
z-index:100;
}
div.carte div.item {
padding:3px 12px;
cursor:pointer;
}
div.carte div.item:hover {
background:red;
}
div.upload {
background:black; color:yellow;
position:fixed;
padding:5px;
z-index:50;
}
div.upload div.item {
float:left;
}
div.story[data-type=spark] {
background-color:#2169a9a6; color:white;
box-shadow: 4px 4px 10px 1px #626bd0;
padding:4px 10px; margin:10px 0px;
border-left:solid 4px blue;
}
div.story[data-type=spark] span:hover {
box-shadow: 4px 4px 10px 1px #29318e;
background-color:#c10c8a;
cursor:copy;
}
fieldset>form.option>div.item { fieldset>form.option>div.item {
float:left; margin-right:3px; float:left; margin-right:3px;
min-height:26px; vertical-align:middle; min-height:26px; vertical-align:middle;
@ -265,9 +331,6 @@ fieldset>div.output td.project {
fieldset>div.output td.profile { fieldset>div.output td.profile {
background-color:#71909c91; background-color:#71909c91;
} }
fieldset>div.output tr.display {
/* background-color:#71909c91; */
}
fieldset>div.output { fieldset>div.output {
clear:both; overflow:auto; clear:both; overflow:auto;
@ -318,59 +381,6 @@ body>fieldset.input.date table td:hover {
background-color:red; background-color:red;
} }
div.carte {
position:fixed;
background:#295b61;
color:white;
padding:4px;
z-index:100;
}
div.carte div.item {
padding:3px 12px;
cursor:pointer;
}
div.carte div.item:hover {
background:red;
}
div.upload {
background:black; color:yellow;
position:fixed;
padding:5px;
z-index:50;
}
div.upload div.item {
float:left;
}
div.toast {
background:#0e3369b3; color:yellow;
position:fixed;
overflow:auto;
padding:5px;
z-index:100;
}
div.toast div.title {
font-size:14px;
color:#cae850;
}
div.toast div.content {
text-align:center;
white-space:pre;
}
div.toast div.duration {
font-size:14px;
color:gray;
}
div.toast div.progress {
border:solid 2px green;
height:10px;
}
div.toast div.progress div.current {
background:red;
height:10px;
}
body.black a { body.black a {
color:yellow; color:yellow;
} }
@ -424,10 +434,6 @@ body.white table input[type=button][value=启动] {
background:#52ce78; background:#52ce78;
} }
body.white fieldset.story {
/* background-color:#7c8ea5ab; */
}
body.white fieldset.Action { body.white fieldset.Action {
color:black; color:black;
} }
@ -470,16 +476,6 @@ body.print fieldset.Action {
body.print fieldset.Action fieldset.plugin { body.print fieldset.Action fieldset.plugin {
padding-left:40px; padding-left:40px;
} }
body.print fieldset.Action fieldset.plugin>legend {
/* display:none; */
}
body.print fieldset.Action fieldset.plugin>form.option {
/* display:none; */
}
body.print fieldset.River>div.output div.list div.item { body.print fieldset.River>div.output div.list div.item {
background-color:white; background-color:white;
} }
div.story {
text-align:left;
}

View File

@ -11,18 +11,16 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}) })
}, },
_toast: function(can, msg, target) { _toast: function(can, msg, target) {
can.toast = can.page.Append(can, target, [{view: ["toast", "div", ""], onclick: function(event) { can.toast = can.page.Append(can, target, [{view: "toast", onclick: function(event) {
var ui = can.onappend.field(can, "story float", {}, document.body) var ui = can.onappend.field(can, "story toast float", {}, document.body)
can.run({}, ["search", "Action.onexport.size"], function(msg, top, left, width, height) { can.run({}, ["search", "Action.onexport.size"], function(msg, top, left, width, height) {
can.page.Modify(can, ui.output, {style: {"max-width": width, "max-height": height-28}})
can.page.Modify(can, ui.first, {style: {top: top, left: left}}) can.page.Modify(can, ui.first, {style: {top: top, left: left}})
} ) } )
can.onappend._action(can, ["关闭", "刷新"], ui.action, { can.onappend._action(can, ["关闭", "刷新"], ui.action, {
"关闭": function(event) { can.page.Remove(can, ui.first) }, "关闭": function(event) { can.page.Remove(can, ui.first) },
"刷新": function(event) { "刷新": function(event) { can.page.Remove(can, ui.first), can.toast.click() },
can.page.Remove(can, ui.first)
can.toast.click()
},
}) })
can.onappend.table(can, can._toast, function(value) { can.onappend.table(can, can._toast, function(value) {
return {text: [value, "td"], onclick: function(event) { return {text: [value, "td"], onclick: function(event) {
@ -39,9 +37,9 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}) })
}, },
toast: function(can, msg, text, time, fileline) { can._toast = can._toast || can.request() toast: function(can, msg, title, content, fileline, time) { can._toast = can._toast || can.request()
can.page.Modify(can, can.toast, time.split(" ").pop()+" "+text) can.page.Modify(can, can.toast, [time.split(" ").pop(), title, content].join(" "))
can._toast.Push({time: time, fileline: fileline, text: text}) can._toast.Push({time: time, fileline: fileline, title: title, content: content})
}, },
ncmd: function(can, target) { ncmd: function(can, target) {
can.page.Select(can, target, "span.ncmd", function(item) { can.page.Select(can, target, "span.ncmd", function(item) {

View File

@ -11,10 +11,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
{view: "content"}, {view: ["display", "table"]}, {view: "preview"}, {view: "content"}, {view: ["display", "table"]}, {view: "preview"},
]), typeof cb == "function" && cb(msg) ]), typeof cb == "function" && cb(msg)
can.page.ClassList.add(can, can.ui.display, "content") can.page.ClassList.add(can, can.ui.display, "content")
var header = can.run({}, ["search", "Header.onexport.height"])||0
var footer = can.run({}, ["search", "Footer.onexport.height"])||0
can.page.Modify(can, can._output, {style: {"max-height": window.innerHeight-header-footer-64}})
}, },
_table: function(can, msg, fields) { can.onmotion.clear(can, can.ui.content) _table: function(can, msg, fields) { can.onmotion.clear(can, can.ui.content)
var table = can.onappend.table(can, msg, function(value, key, index, line) { can.Status("count", index+1) var table = can.onappend.table(can, msg, function(value, key, index, line) { can.Status("count", index+1)
@ -55,19 +51,17 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
typeof cb == "function" && cb(can.onexport.select(can)), can.onmotion.hide(can) typeof cb == "function" && cb(can.onexport.select(can)), can.onmotion.hide(can)
} }
can.run({}, ["search", "Header.onexport.height"], function(res) {
can.page.Modify(can, can._target, {style: {top: res}})
})
can.run({}, ["search", "River.onexport.width"], function(res) {
can.page.Modify(can, can._target, {style: {left: res}})
})
can.input = function(event, word) { cmds[1] = word can.input = function(event, word) { cmds[1] = word
can.onimport._word(can, msg, cmds, fields) can.onimport._word(can, msg, cmds, fields)
} }
can.onmotion.show(can), can.ui.input.focus() can.onmotion.show(can), can.ui.input.focus()
can.onimport._word(can, msg, cmds, fields) can.onimport._word(can, msg, cmds, fields)
can.run({}, ["search", "Action.onexport.size"], function(msg, top, left, width, height) {
can.page.Modify(can, can._output, {style: {"max-width": width, "max-height": height-75}})
can.page.Modify(can, can._target, {style: {top: top, left: left}})
} )
}, },
}) })
Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"], _init: function(can, msg, list, cb, target) { Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"], _init: function(can, msg, list, cb, target) {

View File

@ -56,7 +56,7 @@ Volcanos("onfigure", {help: "控件详情", list: [], date: {onclick: function(e
for (var day = new Date(one); day < end; day.setDate(day.getDate()+1)) {add(day, "main")} for (var day = new Date(one); day < end; day.setDate(day.getDate()+1)) {add(day, "main")}
for (var day = new Date(end); end.getDay() != 0 && day < tail; day.setDate(day.getDate()+1)) {add(day, "next")} for (var day = new Date(end); end.getDay() != 0 && day < tail; day.setDate(day.getDate()+1)) {add(day, "next")}
can.onlayout.figure(can, event); return now can.onlayout.figure(event, can); return now
}; show(now) }; show(now)
}} }, ["/plugin/input/date.css"]) }} }, ["/plugin/input/date.css"])

View File

@ -12,7 +12,7 @@ Volcanos("onfigure", {help: "控件详情", list: [], key: {onclick: function(ev
target.value = line[key], can.page.Remove(can, can._target) target.value = line[key], can.page.Remove(can, can._target)
}} }}
}), can.Status("count", msg.Length()) }), can.Status("count", msg.Length())
can.onlayout.figure(can, event) can.onlayout.figure(event, can)
}) })
}}}) }}})

View File

@ -9,7 +9,7 @@ Volcanos("onfigure", {help: "控件详情", list: [], province: {onclick: functi
china_chart.setOption({geo: {map: 'china'}}), china_chart.on('click', function (params) { china_chart.setOption({geo: {map: 'china'}}), china_chart.on('click', function (params) {
target.value = params.name, can.page.Remove(can, can._target) target.value = params.name, can.page.Remove(can, can._target)
}), can.Status("count", 34) }), can.Status("count", 34)
can.onlayout.figure(can, event) can.onlayout.figure(event, can)
}) })
}}, }) }}, })

View File

@ -25,10 +25,10 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
{view: "action"}, {view: "output"}, {view: "action"}, {view: "output"},
]); can.ui.output = ui.output ]); can.ui.output = ui.output
can.onappend._action(can, ["关闭", "清空", "运行"], ui.action, { can.onappend._action(can, ["运行", "清空", "关闭"], ui.action, {
"关闭": function(event) { can.onmotion.hidden(can, can.ui.display) },
"清空": function(event) { can.onmotion.clear(can, can.ui.output) },
"运行": function(event) { can.onaction["运行"](event, can) }, "运行": function(event) { can.onaction["运行"](event, can) },
"清空": function(event) { can.onmotion.clear(can, can.ui.output) },
"关闭": function(event) { can.onmotion.hidden(can, can.ui.display) },
}) })
}, },
_search: function(can, target) { _search: function(can, target) {
@ -157,7 +157,7 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
return p.line? p.line(can, line): line return p.line? p.line(can, line): line
}, },
}) })
Volcanos("onaction", {help: "控件交互", list: ["项目", "运行", "搜索"], Volcanos("onaction", {help: "控件交互", list: ["项目", "收藏", "搜索", "运行"],
"返回": 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)
@ -165,15 +165,13 @@ Volcanos("onaction", {help: "控件交互", list: ["项目", "运行", "搜索"]
}, },
"项目": function(event, can) { "项目": function(event, can) {
var width = can.Conf("width")-(can.onmotion.toggle(can, can.ui.project)? 170: 0) var width = can.Conf("width")-(can.onmotion.toggle(can, can.ui.project)? 170: 0)
can.page.Modify(can, can.ui.content, {style: {"min-width": width}}) can.page.Modify(can, can.ui.content, {style: {"min-width": width}})
}, },
"搜索": function(event, can) { can.onmotion.toggle(can, can.ui.search) },
"收藏": function(event, can) { can.onmotion.toggle(can, can.ui.favor._target) }, "收藏": function(event, can) { can.onmotion.toggle(can, can.ui.favor._target) },
"运行": function(event, can) { "搜索": function(event, can) { can.onmotion.toggle(can, can.ui.search) },
var msg = can.request(event, {_toast: "运行中..."}) "运行": function(event, can) { var msg = can.request(event, {_toast: "运行中..."})
can.run(event, ["action", "engine", can.parse, can.Option("file"), can.Option("path")], function(msg) { can.run(event, ["action", "engine", can.parse, can.Option("file"), can.Option("path")], function(msg) {
can.onappend.table(can, msg, function(value, key, index) { return {text: [value, "td"]} }, can.ui.output||can.ui.display) can.onappend.table(can, msg, null, can.ui.output||can.ui.display)
can.onappend.board(can, msg.Result(), can.ui.output||can.ui.display) can.onappend.board(can, msg.Result(), can.ui.output||can.ui.display)
can.page.Modify(can, can.ui.display, {style: {display: "block"}}) can.page.Modify(can, can.ui.display, {style: {display: "block"}})
}, true) }, true)

View File

@ -297,7 +297,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
can.onaction.rerankLine(can) can.onaction.rerankLine(can)
}, },
}) })
Volcanos("onaction", {help: "控件交互", list: ["项目", "搜索", "收藏", "运行"], Volcanos("onaction", {help: "控件交互", list: ["项目", "收藏", "搜索", "运行"],
save: function(event, can) { var msg = can.request(event, {content: can.onexport.content(can)}) save: function(event, can) { var msg = can.request(event, {content: can.onexport.content(can)})
can.run(event, ["action", "save", can.parse, can.Option("file"), can.Option("path")], function(msg) { can.run(event, ["action", "save", can.parse, can.Option("file"), can.Option("path")], function(msg) {
can.user.toast(can, "保存成功") can.user.toast(can, "保存成功")

View File

@ -53,17 +53,6 @@ fieldset.word p.story[data-name=inner]:hover {
background-color:#c10c8a; background-color:#c10c8a;
cursor:copy; cursor:copy;
} }
fieldset.word div.story[data-type=spark] {
background-color:#2169a9a6; color:white;
box-shadow: 4px 4px 10px 1px #626bd0;
padding:4px 10px; margin:10px 0px;
border-left:solid 4px blue;
}
fieldset.word div.story[data-type=spark] span:hover {
box-shadow: 4px 4px 10px 1px #29318e;
background-color:#c10c8a;
cursor:copy;
}
fieldset.word svg.story { fieldset.word svg.story {
display:block; float:left; display:block; float:left;
} }

View File

@ -11,7 +11,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}) })
can.onappend.board(can, msg.Result()) can.onappend.board(can, msg.Result())
can.onimport._board(can, msg) can.onmotion.story(can, can._output)
}, },
_table: function(can, value, key, index, line, array) { _table: function(can, value, key, index, line, array) {
return {text: [value, "td"], onclick: function(event) { var target = event.target return {text: [value, "td"], onclick: function(event) { var target = event.target
@ -29,25 +29,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}) })
}} }}
}, },
_board: function(can, msg) {
can.page.Select(can, can._output, ".story", function(item) { var data = item.dataset
can.page.Modify(can, item, {style: can.base.Obj(data.style)})
can.core.CallFunc(can.onimport[data.type], [can, data, item])
})
},
spark: function(can, list, target) {
if (list["name"] == "inner") {
target.title = "点击复制", target.onclick = function(event) {
can.user.copy(event, can, target.innerText)
}
return
}
can.page.Select(can, target, "span", function(item) {
item.title = "点击复制", item.onclick = function(event) {
can.user.copy(event, can, item.innerText)
}
})
},
_process: function(can, msg) { _process: function(can, msg) {
var cb = can.onimport[msg.Option("_process")] var cb = can.onimport[msg.Option("_process")]
@ -76,7 +57,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}, can._output) }, can._output)
can.onappend.board(can, msg.Result(), can._output) can.onappend.board(can, msg.Result(), can._output)
can.onimport._board(can, msg) can.onmotion.story(can, can._output)
can.page.Modify(can, can._output, {style: {display: "block"}}) can.page.Modify(can, can._output, {style: {display: "block"}})
return true return true
}, },

View File

@ -57,8 +57,8 @@ var Volcanos = shy("火山架", {pack: {}, libs: [], cache: {}}, [], function(na
request: function(event, option) { event = event || {} request: function(event, option) { event = event || {}
event._msg = event._msg || can.misc.Message(event, can) event._msg = event._msg || can.misc.Message(event, can)
can.core.List(arguments, function(arg, index) { can.core.List(arguments, function(option, index) {
index > 0 && can.core.Item(arg, event._msg.Option) index > 0 && can.core.Item(typeof option == "function"? option(): option, event._msg.Option)
}); return event._msg }); return event._msg
}, },
Conf: function(key, value) { return can.core.Value(can._conf, key, value) }, _conf: {}, Conf: function(key, value) { return can.core.Value(can._conf, key, value) }, _conf: {},