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 {
color:cyan;
background:black;
margin:3px 0;
}
fieldset>div.action>div.item>input {
color:cyan;

View File

@ -20,7 +20,6 @@ Volcanos("onaction", {help: "控件交互", list: [],
case "Enter":
if (event.target.tagName == "INPUT") {
can.run(event)
break
}
event.stopPropagation()
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 div.item.select {
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",
"fill": "purple",
"grid": "10",
"go": "auto",
}
// 默认参数
can.core.Item(def, function(key, value) {
@ -101,7 +102,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
var list = {
a: {prefix: ["mode", "mode"],
w: {list: ["draw"]},
m: {list: ["move"]},
r: {list: ["resize"]},
s: {list: ["select"]},
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: [" 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"],
"",
["grid", 1, 2, 3, 4, 5, 10, 20],
@ -600,28 +600,23 @@ Volcanos("onaction", {help: "组件菜单", list: ["保存", "清空", "删除",
})
return obj
},
move: function(event, can, point) {
if (point.length == 1) { if (event.type == "click") {
can.onaction._mode.select(event, can, point)
can.point = point, 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) { target.style.cursor = "move"
can.current.pos = 5, can.current.begin = can.core.List([target], function(item) {
if (item.tagName == "g") { return }
return target.style.cursor = "move", {
resize: function(event, can, point) {
if (point.length == 1) {
if (event.type == "click") { var target = event.target
can.current = {target: target, begin: can.core.List([target], function(item) { if (item.tagName == "g") { return }
return {
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
})
}
})
}), pos: can.page.Prepos(event, target)}
}
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.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) {
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) {
@ -747,7 +679,7 @@ Volcanos("onaction", {help: "组件菜单", list: ["保存", "清空", "删除",
}
} else {
if (pos == 5) {
can.Action("mode", "move")
can.Action("mode", "resize")
} else {
can.Action("mode", "draw")
can.Action("shape", "line")
@ -784,7 +716,9 @@ Volcanos("onaction", {help: "组件菜单", list: ["保存", "清空", "删除",
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) {
var def = value.def; can.page.Select(can, can.svg, "."+target.Value("text"), function(item) {
def = item.Value("inner")
@ -814,18 +748,20 @@ Volcanos("ondetail", {help: "组件详情", list: ["标签", "编辑", "复制",
})
})
},
"复制": function(event, can, value, cmd, target) {
var figure = can.onaction._get(can, target).data;
"复制": function(event, can) { target = event.target
var figure = can.onaction._get(can, target)
if (!figure) { return }
figure = figure.data
var data = {}
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.y||"y"] = parseInt(target.Value(figure.size.y||"y"))+20;
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.y||"y"] = parseInt(target.Value(figure.size.y||"y"))+20
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.ondetail["标签"](event, can, {silent: true, def: item.Value("inner")}, "", p);
can.ondetail["标签"](event, can, {silent: true, def: item.Value("inner")}, "", p)
})
return p
},
"变色": function(event, can, value, cmd, target) {
@ -851,7 +787,6 @@ Volcanos("ondetail", {help: "组件详情", list: ["标签", "编辑", "复制",
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"],
file: function(can, svg) {