1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00
This commit is contained in:
shaoying 2020-07-02 10:05:03 +08:00
parent 97f55bdf09
commit e1cae0104a
4 changed files with 37 additions and 96 deletions

View File

@ -85,6 +85,7 @@ fieldset>div.action>div.item {
fieldset>div.action>div.item>select { fieldset>div.action>div.item>select {
color:cyan; color:cyan;
background:black; background:black;
margin:3px 0;
} }
fieldset>div.action>div.item>input { fieldset>div.action>div.item>input {
color:cyan; color:cyan;

View File

@ -20,7 +20,6 @@ Volcanos("onaction", {help: "控件交互", list: [],
case "Enter": case "Enter":
if (event.target.tagName == "INPUT") { if (event.target.tagName == "INPUT") {
can.run(event) can.run(event)
break
} }
event.stopPropagation() event.stopPropagation()
event.preventDefault() event.preventDefault()

View File

@ -1,5 +1,11 @@
fieldset.draw div.action {
clear:none;
}
fieldset.draw div.output div.project { fieldset.draw div.output div.project {
} }
fieldset.draw div.output div.project div.item.select { 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 {
border: 1px solid red;
}

View File

@ -35,6 +35,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
"stroke": "yellow", "stroke": "yellow",
"fill": "purple", "fill": "purple",
"grid": "10", "grid": "10",
"go": "auto",
} }
// 默认参数 // 默认参数
can.core.Item(def, function(key, value) { can.core.Item(def, function(key, value) {
@ -101,7 +102,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
var list = { var list = {
a: {prefix: ["mode", "mode"], a: {prefix: ["mode", "mode"],
w: {list: ["draw"]}, w: {list: ["draw"]},
m: {list: ["move"]},
r: {list: ["resize"]}, r: {list: ["resize"]},
s: {list: ["select"]}, s: {list: ["select"]},
d: {list: ["delete"]}, d: {list: ["delete"]},
@ -528,7 +528,7 @@ Volcanos("onaction", {help: "组件菜单", list: ["保存", "清空", "删除",
{text: [" f:", "div", "item"]}, ["fill", "red", "yellow", "green", "purple", "blue", "cyan", "white", "black", "#0000"], {text: [" f:", "div", "item"]}, ["fill", "red", "yellow", "green", "purple", "blue", "cyan", "white", "black", "#0000"],
"", "",
{text: [" a:", "div", "item"]}, ["go", "run", "auto", "manual"], {text: [" a:", "div", "item"]}, ["go", "run", "auto", "manual"],
{text: [" a:", "div", "item"]}, ["mode", "run", "draw", "move", "resize", "select", "delete"], {text: [" a:", "div", "item"]}, ["mode", "run", "draw", "resize", "delete"],
{text: [" s:", "div", "item"]}, ["shape", "block", "rect", "text", "line", "circle", "ellipse"], {text: [" s:", "div", "item"]}, ["shape", "block", "rect", "text", "line", "circle", "ellipse"],
"", "",
["grid", 1, 2, 3, 4, 5, 10, 20], ["grid", 1, 2, 3, 4, 5, 10, 20],
@ -600,28 +600,23 @@ Volcanos("onaction", {help: "组件菜单", list: ["保存", "清空", "删除",
}) })
return obj return obj
}, },
move: function(event, can, point) { resize: function(event, can, point) {
if (point.length == 1) { if (event.type == "click") { if (point.length == 1) {
can.onaction._mode.select(event, can, point) if (event.type == "click") { var target = event.target
can.point = point, can.current = {target: event.target} can.current = {target: target, begin: can.core.List([target], function(item) { if (item.tagName == "g") { return }
}; return } else if (point.length == 2) { if (event.type == "click") { return {
return can.point = [], delete(can.current) x: item.Val("x"), y: item.Val("y"), width: item.Val("width"), height: item.Val("height"),
} } target: item, ship: can.core.List(item.Value("ship"), function(ship) {
return ship.pid && (ship.target = can.page.Select(can, can.svg, "."+ship.pid)[0]) && ship
var target = can.current.target })
var figure = can.onaction._get(can, target) }
if (point.length == 1) { target.style.cursor = "move" }), pos: can.page.Prepos(event, target)}
can.current.pos = 5, can.current.begin = can.core.List([target], function(item) { }
if (item.tagName == "g") { return }
return target.style.cursor = "move", {
x: item.Val("x"), y: item.Val("y"), width: item.Val("width"), height: item.Val("height"),
target: item, ship: can.core.List(item.Value("ship"), function(ship) {
return ship.pid && (ship.target = can.page.Select(can, can.svg, "."+ship.pid)[0]) && ship
})
}
})
return return
} }
if (event.type == "click") {
return can.point = [], delete(can.current)
}
can.core.List(can.current.begin, function(item) { var figure = can.onaction._get(can, item.target) can.core.List(can.current.begin, function(item) { var figure = can.onaction._get(can, item.target)
can.page.Resizes(event, item.target, item, point[0], point[1], can.current.pos) can.page.Resizes(event, item.target, item, point[0], point[1], can.current.pos)
@ -641,72 +636,9 @@ Volcanos("onaction", {help: "组件菜单", list: ["保存", "清空", "删除",
}) })
}) })
}, },
resize: function(event, can, point) {
if (point.length == 1) { if (event.type == "click") {
can.current = {target: event.target}
} return } else if (point.length == 2) { if (event.type == "click") {
return can.point = [], delete(can.current)
} }
var target = can.current.target
var figure = can.onaction._get(can, target)
if (point.length == 1) {
can.current.pos = can.page.Prepos(event, target)
can.current.begin = {
x: target.Val("x"),
y: target.Val("y"),
width: target.Val("width"),
height: target.Val("height"),
}
return
}
can.page.Resizes(event, target, can.current.begin, point[0], point[1], can.current.pos)
},
select: function(event, can, point) {var target = event.target
while (target) {
if (target.tagName == "g") {
can.Action("group", target.Value("class"))
can.group = target
break
}
if (target.tagName == "svg") {
can.Action("group", "svg")
can.group = can.svg
break
}
target = target.parentNode
}
can.point = []
},
delete: function(event, can, point) { delete: function(event, can, point) {
can.point = [], event.target != can.svg && can.page.Remove(can, event.target) can.point = [], event.target != can.svg && can.page.Remove(can, event.target)
}, },
scale: function(event, can, point) {if (point.length < 2) {return}
if (point.length == 2) {
can.last && can.page.Remove(can, can.last)
var figure = can.onfigure["line"];
var data = figure && figure.draw(event, can, point);
can.last = can.onaction.push(can, data, "line", can.group||can.svg)
if (event.type == "click" && point.length == 2) {
can.point = point
}
return
}
can.now && can.page.Remove(can, can.now)
var figure = can.onfigure["line"];
var data = figure && figure.draw(event, can, [point[0], point[2]]);
can.now = can.onaction.push(can, data, "line", can.group||can.svg)
if (event.type == "click" && point.length == 3) {
can.now && can.page.Remove(can, can.now)
can.last && can.page.Remove(can, can.last)
can.point = []
}
can.group.Value("transform", "scale("+(point[2].x-point[0].x)/(point[1].x-point[0].x)+","+(point[2].y-point[0].y)/(point[1].y-point[0].y)+")")
},
}, },
_point: function(event, can) { _point: function(event, can) {
@ -747,7 +679,7 @@ Volcanos("onaction", {help: "组件菜单", list: ["保存", "清空", "删除",
} }
} else { } else {
if (pos == 5) { if (pos == 5) {
can.Action("mode", "move") can.Action("mode", "resize")
} else { } else {
can.Action("mode", "draw") can.Action("mode", "draw")
can.Action("shape", "line") can.Action("shape", "line")
@ -784,7 +716,9 @@ Volcanos("onaction", {help: "组件菜单", list: ["保存", "清空", "删除",
can.onaction._action(event, can, can.point.concat(point)) can.onaction._action(event, can, can.point.concat(point))
}, },
}) })
Volcanos("ondetail", {help: "组件详情", list: ["标签", "编辑", "复制", "变色", "运行", "删除"], Volcanos("ondetail", {help: "组件详情", list: ["删除"],
"删除": function(event, can) {can.page.Remove(can, event.target)},
"标签": function(event, can, value, cmd, target) { "标签": function(event, can, value, cmd, target) {
var def = value.def; can.page.Select(can, can.svg, "."+target.Value("text"), function(item) { var def = value.def; can.page.Select(can, can.svg, "."+target.Value("text"), function(item) {
def = item.Value("inner") def = item.Value("inner")
@ -814,18 +748,20 @@ Volcanos("ondetail", {help: "组件详情", list: ["标签", "编辑", "复制",
}) })
}) })
}, },
"复制": function(event, can, value, cmd, target) { "复制": function(event, can) { target = event.target
var figure = can.onaction._get(can, target).data; var figure = can.onaction._get(can, target)
if (!figure) { return }
figure = figure.data
var data = {} var data = {}
can.core.List(figure.copy, function(item) {data[item] = target.Value(item)}); can.core.List(figure.copy, function(item) {data[item] = target.Value(item)})
data[figure.size.x||"x"] = parseInt(target.Value(figure.size.x||"x"))+20; data[figure.size.x||"x"] = parseInt(target.Value(figure.size.x||"x"))+20
data[figure.size.y||"y"] = parseInt(target.Value(figure.size.y||"y"))+20; data[figure.size.y||"y"] = parseInt(target.Value(figure.size.y||"y"))+20
var p = data && can.onaction.push(can, data, target.tagName, can.group||can.svg) var p = data && can.onaction.push(can, data, target.tagName, can.group||can.svg)
can.page.Select(can, can.svg, "."+target.Value("text"), function(item) { can.page.Select(can, can.svg, "."+target.Value("text"), function(item) {
can.ondetail["标签"](event, can, {silent: true, def: item.Value("inner")}, "", p); can.ondetail["标签"](event, can, {silent: true, def: item.Value("inner")}, "", p)
}) })
return p return p
}, },
"变色": function(event, can, value, cmd, target) { "变色": function(event, can, value, cmd, target) {
@ -851,7 +787,6 @@ Volcanos("ondetail", {help: "组件详情", list: ["标签", "编辑", "复制",
can.onaction._run({type: "click", target: target}, can, target) can.onaction._run({type: "click", target: target}, can, target)
}) })
}, },
"删除": function(event, can, value, cmd, target) {can.page.Remove(can, target)},
}) })
Volcanos("onexport", {help: "导出数据", list: ["group", "target", "zone", "type", "name", "point", "keys"], Volcanos("onexport", {help: "导出数据", list: ["group", "target", "zone", "type", "name", "point", "keys"],
file: function(can, svg) { file: function(can, svg) {