joint+rappid实现工厂车间机器运转运行流程图代码
代码语言:html
所属分类:图表
代码描述:joint+rappid实现工厂车间机器运转运行流程图代码
代码标签: joint rappid 工厂 车间 机器 运转 运行 流程图 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
:root {
--accent-color: #0075f2;
--text-color: #131e29;
--liquid-color: #f6f740;
}
/* Switch */
.jj-switch {
font-family: sans-serif;
font-size: 14px;
width: 100%;
height: 100%;
background: white;
border: 1px solid #cad8e3;
position: static;
padding: 3px;
box-sizing: border-box;
border-radius: 4px;
color: var(--text-color);
}
.jj-switch-label {
width: 100%;
text-align: center;
margin: 0 0 2px 0;
}
.jj-switch-on {
background: var(--accent-color);
color: #dde6ed;
border-radius: 4px 0 0 4px;
border: 1px solid var(--accent-color);
width: 50%;
height: 22px;
}
.jj-switch-off {
background: #131e29;
color: #dde6ed;
border-radius: 0 4px 4px 0;
border: 1px solid #131e29;
width: 50%;
height: 22px;
}
.jj-switch-on:disabled,
.jj-switch-off:disabled {
background: #f2f5f8;
color: #cad8e3;
border: 1px solid #cad8e3;
}
/* Checkbox */
.jj-checkbox {
width: 100%;
height: 100%;
background: white;
border: 1px solid #cad8e3;
position: static;
box-sizing: border-box;
border-radius: 4px;
}
.jj-checkbox-input {
accent-color: var(--accent-color);
}
/* Slider */
.jj-slider {
font-family: sans-serif;
font-size: 14px;
width: 100%;
height: 100%;
background: white;
border: 1px solid #cad8e3;
position: static;
box-sizing: border-box;
border-radius: 4px;
padding: 3px;
color: var(--text-color);
}
.jj-slider-input {
accent-color: var(--accent-color);
}
.jj-slider-label {
width: 100%;
text-align: center;
white-space: pre;
}
.jj-slider-output {
width: 100%;
text-align: center;
white-space: pre;
display: block;
font-size: 11px;
color: #40668c;
}
/* Application */
#paper-container {
position: absolute;
inset: 0 0 0 0;
}
#logo {
position: absolute;
top: 20px;
right: 0;
}
#toolbar-container {
position: absolute;
top: 10px;
left: 10px;
font-family: sans-serif;
color: var(--text-color);
accent-color: var(--accent-color);
}
#toolbar-container [data-name="title"] {
font-weight: 900;
}
</style>
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/rappid.3.7.3.css">
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/lodash.4.17.21.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/backbone-min.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/rappid.3.7.3.js"></script>
</head>
<body>
<!-- partial:index.partial.html -->
<div id="paper-container"></div>
<div id="toolbar-container"></div>
<script >
/*! JointJS+ v3.7.0 - HTML5 Diagramming Framework
Copyright (c) 2023 client IO
2023-07-12
This Source Code Form is subject to the terms of the JointJS+ License
, v. 2.0. If a copy of the JointJS+ License was not distributed with this
file, You can obtain one at https://www.jointjs.com/license
or from the JointJS+ archive as was distributed by client IO. See the LICENSE file.*/
const { dia, shapes, util, ui } = joint;
const paperContainerEl = document.getElementById("paper-container");
const toolbarContainerEl = document.getElementById("toolbar-container");
// Custom view flags
const POWER_FLAG = "POWER";
const LIGHT_FLAG = "LIGHT";
const FLOW_FLAG = "FLOW";
const OPEN_FLAG = "OPEN";
// Constants
const LIQUID_COLOR = "#0EAD69";
const MAX_LIQUID_COLOR = "#ED2637";
const MIN_LIQUID_COLOR = "#FFD23F";
const START_LIQUID = 70;
const PRESSURE_COLOR = "#1446A0";
const MAX_PRESSURE_COLOR = "#ED2637";
document.documentElement.style.setProperty("--liquid-color", LIQUID_COLOR);
// Pump metrics
const r = 30;
const d = 10;
const l = 3 * r / 4;
const step = 20;
class Pump extends dia.Element {
defaults() {
return {
...super.defaults,
type: "Pump",
size: {
width: 100,
height: 100 },
power: 0,
attrs: {
root: {
magnetSelector: "body" },
body: {
rx: "calc(w / 2)",
ry: "calc(h / 2)",
cx: "calc(w / 2)",
cy: "calc(h / 2)",
stroke: "gray",
strokeWidth: 2,
fill: "lightgray" },
label: {
text: "Pump",
textAnchor: "middle",
textVerticalAnchor: "top",
x: "calc(0.5*w)",
y: "calc(h+10)",
fontSize: 14,
fontFamily: "sans-serif",
fill: "#350100" },
rotorGroup: {
transform: "translate(calc(w/2),calc(h/2))",
event: "element:power:click",
cursor: "pointer" },
rotorFrame: {
r: 40,
fill: "#eee",
stroke: "#666",
strokeWidth: 2 },
rotorBackground: {
r: 34,
fill: "#777",
stroke: "#222",
strokeWidth: 1,
style: {
transition: "fill 0.5s ease-in-out" } },
rotor: {
// d: `M ${a} ${a} ${b} ${r} -${b} ${r} -${a} ${a} -${r} ${b} -${r} -${b} -${a} -${a} -${b} -${r} ${b} -${r} ${a} -${a} ${r} -${b} ${r} ${b} Z`,
d: `M 0 0 V ${r} l ${-d} ${-l} Z M 0 0 V ${-r} l ${d} ${l} Z M 0 0 H ${r} l ${-l} ${d} Z M 0 0 H ${-r} l ${l} ${-d} Z`,
stroke: "#222",
strokeWidth: 3,
fill: "#bbb" } },
ports: {
groups: {
pipes: {
position: {
name: "line",
args: {
start: { x: "calc(w / 2)", y: "calc(h)" },
end: { x: "calc(w / 2)", y: 0 } } },
markup: util.svg`
<rect @selector="pipeBody" />
<rect @selector="pipeEnd" />
`,
size: { width: 80, height: 30 },
attrs: {
portRoot: {
magnetSelector: "pipeEnd" },
pipeBody: {
width: "calc(w)",
height: "calc(h)",
y: "calc(h / -2)",
fill: {
type: "linearGradient",
stops: [
{ offset: "0%", color: "gray" },
{ offset: "30%", color: "white" },
{ offset: "70%", color: "white" },
{ offset: "100%", color: "gray" }],
attrs: {
x1: "0%",
y1: "0%",
x2: "0%",
y2: "100%" } } },
pipeEnd: {
width: 10,
height: "calc(h+6)",
y: "calc(h / -2 - 3)",
stroke: "gray",
strokeWidth: 3,
fill: "white" } } } },
items: [
{
id: "left",
group: "pipes",
z: 1,
attrs: {
pipeBody: {
x: "calc(-1 * w)" },
pipeEnd: {
x: "calc(-1 * w)" } } },
{
id: "right",
group: "pipes",
z: 0,
attrs: {
pipeEnd: {
x: "calc(w - 10)" } } }] } };
}
preinitialize() {
this.markup = util.svg /* xml */`
<ellipse @selector="body" />
<g @selector="rotorGroup">
<circle @selector="rotorFrame" />
<circle @selector="rotorBackground" />
<path @selector="rotor" />
</g>
<text @selector="label" />
`;
}
get power() {
return this.get("power") || 0;
}
set power(value) {
this.set("power", value);
}}
const PumpView = dia.ElementView.extend({
presentationAttributes: dia.ElementView.addPresentationAttributes({
power: [POWER_FLAG] }),
initFlag: [dia.ElementView.Flags.RENDER, POWER_FLAG],
powerAnimation: null,
confirmUpdate(...args) {
let flags = dia.ElementView.prototype.confirmUpdate.call(this, ...args);
if (this.hasFlag(flags, POWER_FLAG)) {
this.togglePower();
flags = this.removeFlag(flags, POWER_FLAG);
}
return flags;
},
getSpinAnimation() {
let { spinAnimation } = this;
if (spinAnimation) return spinAnimation;
const [rotorEl] = this.findBySelector("rotor");
// It's important to use start and end frames to make it work in Safari.
const keyframes = { transform: ["rotate(0deg)", "rotate(360deg)"] };
spinAnimation = rotorEl.animate(keyframes, {
fill: "forwards",
duration: 1000,
iterations: Infinity });
this.spinAnimation = spinAnimation;
return spinAnimation;
},
togglePower() {
const { model } = this;
this.getSpinAnimation().playbackRate = model.power;
} });
class ControlValve extends dia.Element {
defaults() {
return {
...super.defaults,
type: "ControlValve",
size: {
width: 60,
height: 60 },
open: 1,
attrs: {
root: {
magnetSelector: "body" },
body: {
rx: "calc(w / 2)",
ry: "calc(h / 2)",
cx: "calc(w / 2)",
cy: "calc(h / 2)",
stroke: "gray",
strokeWidth: 2,
fill: {
type: "radialGradient",
.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0