1
0
forked from x/volcanos

add china

This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-11-05 08:33:21 +08:00
parent db2d0d8b6a
commit e595dc54fd
5 changed files with 79 additions and 28 deletions

View File

@ -263,7 +263,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
if (can.base.beginWith(item.value, nfs.PS, ice.HTTP)) { item.value = can.page.Format(html.A, item.value, item.value.split("?")[0]) }
if (keys[item.name]) { return can.Status(item.name, item.value) } keys[item.name] = item
can.page.Append(can, status, [{view: html.ITEM, list: [
{text: [can.page.Color(can.user.trans(can, item.name, null, html.INPUT)), html.LABEL]}, {text: [": ", html.LABEL]}, {text: [(item.value == undefined? "": item.value.trim())+"", html.SPAN, item.name]},
{text: [can.page.Color(can.user.trans(can, item.name, null, html.INPUT)), html.LABEL]}, {text: [": ", html.LABEL]}, {text: [(item.value == undefined? "": (item.value+"").trim())+"", html.SPAN, item.name]},
], onclick: function(event) { can.user.copy(event, can, item.value) }}])
})
},
@ -272,7 +272,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
var name = can.core.Split(item.nick||item.name||"").pop()||""; can.base.isIn(name,
tcp.SERVER, tcp.CLIENT, web.STUDIO, web.SERVICE, mdb.SEARCH,
) && (name = (item.index||"").split(".").slice(-2).join(".")), name = can.core.Keys(item.space, name)
var title = item.help && item.help != name && !can.user.isEnglish(can)? name+"("+can.core.Split(item.help)[0]+")": name
var title = item.title || (item.help && item.help != name && !can.user.isEnglish(can)? name+"("+can.core.Split(item.help)[0]+")": name)
target = can.base.isFunc(target)? target(): target
return can.page.Append(can, target||can._output, [{view: [type, html.FIELDSET], list: [{type: html.LEGEND, list: [item.icon && {icon: item.icon}, {text: title}]}, {view: [html.OPTION, html.FORM]}, html.ACTION, html.OUTPUT, html.STATUS]}])
},
@ -384,11 +384,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
target.onclick = function(event) { can.misc.Event(event, can, function(msg) { can.run(can.request(event, can.Option()), [ctx.ACTION, target.name]) }) }
}) } return code.scrollBy && code.scrollBy(0, 10000), code
},
tools: function(can, msg, cb, target) {
// can.onimport.tool(can, can.base.Obj(msg.Option(ice.MSG_TOOLKIT), can.misc.sessionStorage(can, [can.ConfIndex(), "tool"]))||[], cb, target)
can.onimport.tool(can, can.base.Obj(msg.Option(ice.MSG_TOOLKIT))||[], cb, target)
},
tools: function(can, msg, cb, target) { can.onimport.tool(can, can.base.Obj(msg.Option(ice.MSG_TOOLKIT))||[], cb, target) },
style: function(can, style, target) { target = target||can._fields||can._target
if (can.base.endWith(style, ".css")) { return can.require([style]) }
can.base.isObject(style) && !can.base.isArray(style)? can.page.style(can, target, style): can.page.ClassList.add(can, target, style)
@ -488,12 +484,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
},
plugin: function(can, meta, cb, target, field) { meta = meta||{}, meta.index = meta.index||can.core.Keys(meta.ctx, meta.cmd)||ice.CAN_PLUGIN
// meta._space = can.ConfSpace()
var res = {}; function _cb(sub, meta, skip) { kit.proto(res, sub), cb && cb(sub, meta, skip) }
if (meta.inputs && meta.inputs.length > 0 || meta.meta) { can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, _cb, target, field); return res }
var value = can.onengine.plugin(can, meta.index); if (value) { can.onappend._plugin(can, value, meta, function(sub, meta, skip) {
value.meta && value.meta._init && value.meta._init(sub, meta), _cb(sub, meta, skip)
}, target, field); return res }
var value = can.onengine.plugin(can, meta.index); if (value) { can.onappend._plugin(can, value, meta, function(sub, meta, skip) { value.meta && value.meta._init && value.meta._init(sub, meta), _cb(sub, meta, skip) }, target, field); return res }
can.runAction(can.request({}, {_method: http.GET, pod: meta.space})._caller(), ctx.COMMAND, [meta.index], function(msg) { msg.Table(function(value) { can.onappend._plugin(can, value, meta, _cb, target, field) })}); return res
},
_plugin: function(can, value, meta, cb, target, field) { can.base.Copy(meta, value, true)
@ -508,6 +501,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
can.runActionCommand(sub.request(event, {pod: meta.space}), sub._index, cmds, cb)
}
}, sub._index = value.index||meta.index, can.base.isFunc(cb) && cb(sub, meta, skip)
meta.style == html.FLOAT && can.onlayout._float(sub)
}, target||can._output, field)
},
_float: function(can, index, args, cb) { can.onappend.plugin(can, {index: index, args: args, mode: chat.FLOAT}, function(sub) {
@ -552,18 +546,6 @@ Volcanos(chat.ONLAYOUT, {_init: function(can, target) { target = target||can._ro
can.page.SelectChild(can, target, html.DIV_ITEM, function(target) { can.page.styleWidth(can, target, width) })
},
background: function(can, url, target) { can.page.style(can, target||can._root._target, "background-image", url == "" || url == "void"? "": 'url("'+url+'")') },
_figure: function(event, can, target, right, min) {
if (!can.user.isMobile) { return can.onlayout.figure(event, can, target, right, min) }
if (!event || !event.target) { return {} } target = target||can._fields||can._target
var rect = event.target == document.body? {left: can.page.width()/2, top: can.page.height()/2, right: can.page.width()/2, bottom: can.page.height()/2}: (event.currentTarget||event.target).getBoundingClientRect()
var layout = right? {left: rect.right, top: rect.top}: {left: rect.left, top: rect.bottom}
can.getActionSize(function(left, top, width, height) { left = left||0, top = top||0, height = can.base.Max(height, can.page.height()-top)
can.page.style(can, target, html.MAX_HEIGHT, top+height-layout.top)
can.page.style(can, target, html.MAX_WIDTH, left+width-layout.left)
});
can.onmotion.move(can, target, layout), can.onmotion.slideGrow(can, target)
return layout
},
figure: function(event, can, target, right, min) { if (!event || !event.target) { return {} } target = target||can._fields||can._target
var rect = event.target == document.body? {left: can.page.width()/2, top: can.page.height()/2, right: can.page.width()/2, bottom: can.page.height()/2}: (event.currentTarget||event.target).getBoundingClientRect()
var layout = right? {left: rect.right, top: rect.top}: {left: rect.left, top: rect.bottom}
@ -588,6 +570,27 @@ Volcanos(chat.ONLAYOUT, {_init: function(can, target) { target = target||can._ro
can.onmotion.move(can, target, layout), can.onmotion.slideGrow(can, target)
return layout
},
_figure: function(event, can, target, right, min) {
if (!can.user.isMobile) { return can.onlayout.figure(event, can, target, right, min) }
if (!event || !event.target) { return {} } target = target||can._fields||can._target
var rect = event.target == document.body? {left: can.page.width()/2, top: can.page.height()/2, right: can.page.width()/2, bottom: can.page.height()/2}: (event.currentTarget||event.target).getBoundingClientRect()
var layout = right? {left: rect.right, top: rect.top}: {left: rect.left, top: rect.bottom}
can.getActionSize(function(left, top, width, height) { left = left||0, top = top||0, height = can.base.Max(height, can.page.height()-top)
can.page.style(can, target, html.MAX_HEIGHT, top+height-layout.top)
can.page.style(can, target, html.MAX_WIDTH, left+width-layout.left)
});
can.onmotion.move(can, target, layout), can.onmotion.slideGrow(can, target)
return layout
},
_float: function(can) { var target = can._fields||can._target, sup = can._fields? can.sup: can
can.onappend.style(can, html.FLOAT), can.onmotion.resize(can, target, function(height, width) { sup.onimport.size(sup, height, width, true) })
can.page.style(can, target, html.LEFT, 250, html.TOP, 132), sup.onimport.size(sup, 600, 600, true)
target.onclick = function(event) { can.onkeymap.prevent(event)
can.page.Select(can, document.body, "fieldset.float,div.float", function(target) {
can.page.style(can, target, "z-index", 9)
}), can.page.style(can, target, "z-index", 10)
}
},
})
Volcanos(chat.ONMOTION, {_init: function(can, target) {
target.onclick = function(event) { if (can.page.tagis(event.target, html.SELECT, html.INPUT, html.TEXTAREA)) { return }
@ -761,7 +764,7 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
html.TOP, can.base.Min(begin.top + dy, top||0, window.innerHeight-html.ACTION_HEIGHT)
)
} can.onkeymap.prevent(event)
} else { var p = can.page.position(event, target), margin = 20, cursor = ""
} else { var p = can.page.position(event, target), margin = 10, cursor = ""
if (p.x < margin) { cursor = "ew-resize", action = html.LEFT
} else if (target.offsetWidth-margin < p.x) { cursor = "ew-resize", action = html.RIGHT
} else if (target.offsetHeight-margin < p.y || can.page.ClassList.has(can, event.target, html.STATUS) && can.page.tagis(event.target, html.DIV)) { cursor = "ns-resize", action = html.BOTTOM

View File

@ -242,6 +242,7 @@ fieldset.float.plug>form.option>div.text>span.value { display:none; }
fieldset.float:not(.plug)>form.option>div.text>input { display:none; }
fieldset.float:not(.plug)>form.option>div.text>span { display:none; }
fieldset.float:not(.plug)>form.option>div.text>span.value { white-space:pre; padding:7px; height:32px; max-width:200px; display:block; overflow:auto; }
fieldset.float:not(.plug)>form.option>div.text { box-shadow:none; }
body.mobile:not(.landscape) fieldset.float>form.option>div.text>span.value { display:none; }
body.windows form.option>div.icon { font-size:21px; line-height:32px; }
/* svg */
@ -320,7 +321,7 @@ legend, form.option, form.option>div.item, div.action, div.action>div.item, div.
fieldset.story, fieldset>div.output, fieldset>div.status, div.output>div.project div.item, div.content:not(.item), div.code, div.story[data-type=spark] { clear:both; }
fieldset.story { position:sticky; left:0; }
fieldset.full { position:fixed; left:0; top:0; }
fieldset.auto, fieldset.full, fieldset.float, div.float { position:fixed; z-index:100; box-shadow:var(--box-shadow); }
fieldset.auto, fieldset.full, fieldset.float, div.float { position:fixed; z-index:10; box-shadow:var(--box-shadow); }
fieldset.plug { position:absolute; bottom:0; right:0; }
div.output { position:relative; }
div.layout.flex>* { float:left; clear:none; }
@ -424,7 +425,7 @@ body.mobile fieldset.Header div.output div.item:not(.avatar) { padding:0px 10px;
body.mobile fieldset.Search>div.action>div.item.filter>input { width:100%; }
body.mobile fieldset.Search>div.action>div.item.filter>span { position:absolute; }
body.mobile fieldset.Search>div.action>div.item.filter { width:100%; position:relative; }
body.mobile fieldset.River { position:fixed; top:var(--header-height); z-index:100; }
body.mobile fieldset.River { position:fixed; top:var(--header-height); z-index:11; }
body.mobile fieldset.River>div.output { font-size:1.4rem; min-width:240px; }
body.mobile fieldset.Action { margin-top:var(--header-height); }
body.mobile fieldset.Action.cmd { margin-top:0; }
@ -497,6 +498,7 @@ fieldset.macos.desktop.cmd>div.output>fieldset.macos.dock { z-index:11; }
fieldset.web.code.git.status>div.output table.content { width:100%; }
fieldset.web.code.git>div.output>fieldset.web.code.inner>div.output { overflow:auto; }
fieldset.web.mall.region>div.output>table.content td:nth-child(3) { text-align:right; }
fieldset.web.mall.region>div.output>table.content td:nth-child(3) { text-align:right; }
fieldset.web.mall.region>div.output>table.content td:nth-child(4) { text-align:right; }
fieldset.web.mall.region>div.output>table.content td:nth-child(5) { text-align:right; }
@ -525,7 +527,7 @@ fieldset.draw.spide div.output svg path { stroke-width:1; }
fieldset.draw>div.output>div.project { width:180px; flex:0 0 180px; }
fieldset.draw>div.output>div.layout>div.layout>div.profile { width:180px; flex:0 0 180px; }
fieldset.web.chat.location>div.action input[type=text] { width:80px !important; }
fieldset.web.chat.location>div.output>div.layout>div.layout>div.profile { background-color:var(--plugin-bg-color); position:absolute; right:0; width:360px; z-index:5; border-left:none; }
fieldset.web.chat.location>div.output>div.layout>div.layout>div.profile { background-color:var(--plugin-bg-color); position:absolute; right:0; width:360px; z-index:9; border-left:none; }
fieldset.web.chat.location>div.output>div.layout>div.layout { position:relative; }
fieldset.web.code.git.total.draw div.output { text-align:center; }
fieldset.web.code.docker.studio>div.action>div.item { font-style:italic; height:32px; padding:5px 10px; }

View File

@ -325,6 +325,14 @@ Volcanos("page", {
case html.BUTTON: item.value = item.value||item.name||mdb.LIST; break
} return input
},
requireChina: function(can, title, list, name, path) {
can.onappend.plugin(can, {title: title, display: "/plugin/story/china.js", style: html.FLOAT, height: can.ConfHeight(), width: can.ConfHeight()}, function(sub) {
sub.run = function(event, cmds, cb) { var msg = can.request(event, {title: title, name: name, path: path})
can.core.List(list, function(item) { msg.Push(mdb.NAME, item.name), msg.Push(mdb.VALUE, item.value) }), cb(msg)
can.onmotion.resize(can, sub._target, function(height, width) { sub.onimport.size(sub, height, width, true) })
}
})
},
requireModules: function(can, libs, cb, cbs) { if (!libs || libs.length == 0) { return cb && cb() }
for (var i = 0; i < libs.length; i++) { if (libs[i].indexOf(nfs.PS) == 0 || libs[i].indexOf(ice.HTTP) == 0) { continue }
if (libs[i].indexOf(nfs._CSS) == -1 && libs[i].indexOf(nfs._JS) == -1) { libs[i] = libs[i]+"/lib/"+libs[i]+nfs._JS }

View File

@ -86,7 +86,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { msg.Option(ice.MSG_ACTI
circle: can.onfigure.circle(can, item, 100),
}
can.onfigure._mark(can), can.mark && can.mark.add({position: can.onimport.point(can, can._current), properties: can._current})
can.page.Select(can, can._target, "div.content>div", function(item) { can.page.style(can, item, {"z-index": 3}) })
can.page.Select(can, can._target, "div.content>div", function(item) { can.page.style(can, item, {"z-index": 9}) })
},
_item: function(can, item, target) { if (!item.latitude || !item.longitude) { return item }
var _target = can.onimport.item(can, item, function(event) {

38
plugin/story/china.js Normal file
View File

@ -0,0 +1,38 @@
Volcanos(chat.ONIMPORT, {
_init: function(can, msg) { var cache = {}
if (can.Conf(ctx.STYLE) == html.FLOAT && !can.page.ClassList.has(can, can._fields, html.FLOAT)) { msg.Option(ice.MSG_STATUS, ""), can.onlayout._float(can) }
var title = msg.Option("title")||can.Conf("title"), field = can.Conf(mdb.FIELD)||mdb.VALUE, name = msg.Option(mdb.NAME)||can.Conf(mdb.NAME)||"中国", path = msg.Option(nfs.PATH)||can.Conf(nfs.PATH)||"100000"
var max = 0, data = msg.Table(function(value) { if (parseFloat(value[field]) > max) { max = parseFloat(value[field]) } return {name: value.name, value: value[field]} })
var option = {title: {text: title, left: '5%', textStyle: {fontSize: '24'}},
tooltip: {show: true, trigger: "item", formatter: function (params) { return params.name+': '+(params.value||"0") }},
visualMap: {min: 0, max: max, text: ['高', '低'], calculable: true, left: 'left', top: 'bottom'},
}
can.user.toastProcess(can), can.page.requireModules(can, ["echarts/dist/echarts.js"], function() {
can.page.style(can, can._output, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth())
function load(name, path) { can.onimport.load(can, name, path, function() {
can.onimport.tabs(can, [{name:name}], function() {
if (cache[name]) { return can.page.SelectChild(can, can._output, html.DIV_ITEM, function(target) { can.onmotion.toggle(can, target, target == cache[name]) }) }
var chart = echarts.init(cache[name] = can.page.Append(can, can._output, [{view: html.ITEM, style: {height: can.ConfHeight(), width: can.ConfWidth()}}])._target)
option.series = [{name: title, data: data, mapType: name, type: "map"}], option.geo = {map: name}, chart.setOption(option), can.user.toastSuccess(can)
chart.on(html.CLICK, function(params) {
var p = can.onimport.adcode[params.name]; if (p) { return load(params.name, p) }
var p = can.onimport.adcode[name+params.name]; if (p) { return load(name+params.name, p) }
can.user.input({}, can, ["adcode"], function(list) { load(name+params.name, can.onimport.adcode[name+params.name] = list[0]) })
}), can.page.SelectChild(can, can._output, html.DIV_ITEM, function(target) { can.onmotion.toggle(can, target, target == cache[name]) })
}, function() {
})
}) } load(name, path)
})
},
load: function(can, name, path, cb) {
path.length == 2 && (path += "0000"), path.length == 4 && (path += "00")
path = "/wiki/geoarea/"+path+(can.base.endWith(path, "00")? "_full": "")+".json"
can.misc.POST(can, can.request({}, {_method: "GET"}), path, {}, function(msg) { echarts.registerMap(name, JSON.parse(msg._xhr.responseText)), cb() })
},
adcode: {
"中国": "100000",
"广东省": "440000",
"深圳市": "440300",
"宝安区": "440306",
},
})