drawio/war/shapes/pid2/mxPidInstruments.js
Gaudenz Alder b3a060a194 5.6.0.0 release
Former-commit-id: 648b0f02cb
2016-09-06 16:07:11 +02:00

618 lines
18 KiB
JavaScript

/**
* $Id: mxPidInstruments.js,v 1.4 2014/01/21 13:10:17 gaudenz Exp $
* Copyright (c) 2006-2013, JGraph Ltd
*/
//**********************************************************************************************************************************************************
//Discrete Instrument
//**********************************************************************************************************************************************************
/**
* Extends mxShape.
*/
function mxShapePidDiscInst(bounds, fill, stroke, strokewidth)
{
mxShape.call(this);
this.bounds = bounds;
this.fill = fill;
this.stroke = stroke;
this.strokewidth = (strokewidth != null) ? strokewidth : 1;
};
/**
* Extends mxShape.
*/
mxUtils.extend(mxShapePidDiscInst, mxShape);
mxShapePidDiscInst.prototype.cst = {
SHAPE_DISC_INST : 'mxgraph.pid2inst.discInst',
MOUNTING : 'mounting',
FIELD : 'field',
ROOM : 'room',
INACCESSIBLE : 'inaccessible',
LOCAL : 'local'
};
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapePidDiscInst.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
this.background(c, x, y, w, h);
c.setShadow(false);
this.foreground(c, x, y, w, h);
};
mxShapePidDiscInst.prototype.background = function(c, x, y, w, h)
{
c.ellipse(0, 0, w, h);
c.fillAndStroke();
};
mxShapePidDiscInst.prototype.foreground = function(c, x, y, w, h)
{
var mounting = mxUtils.getValue(this.style, mxShapePidDiscInst.prototype.cst.MOUNTING, 'field');
if (mounting === mxShapePidDiscInst.prototype.cst.ROOM)
{
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w, h * 0.5);
c.stroke();
}
else if (mounting === mxShapePidDiscInst.prototype.cst.INACCESSIBLE)
{
c.setDashed(true);
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w, h * 0.5);
c.stroke();
}
else if (mounting === mxShapePidDiscInst.prototype.cst.LOCAL)
{
c.begin();
c.moveTo(w * 0.005, h * 0.48);
c.lineTo(w * 0.995, h * 0.48);
c.moveTo(w * 0.005, h * 0.52);
c.lineTo(w * 0.995, h * 0.52);
c.stroke();
}
};
mxCellRenderer.prototype.defaultShapes[mxShapePidDiscInst.prototype.cst.SHAPE_DISC_INST] = mxShapePidDiscInst;
mxShapePidDiscInst.prototype.constraints = [
new mxConnectionConstraint(new mxPoint(0.5, 0), true),
new mxConnectionConstraint(new mxPoint(0.5, 1), true),
new mxConnectionConstraint(new mxPoint(0, 0.5), true),
new mxConnectionConstraint(new mxPoint(1, 0.5), true),
new mxConnectionConstraint(new mxPoint(0.145, 0.145), false),
new mxConnectionConstraint(new mxPoint(0.145, 0.855), false),
new mxConnectionConstraint(new mxPoint(0.855, 0.145), false),
new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)
];
//**********************************************************************************************************************************************************
//Shared Control/Display
//**********************************************************************************************************************************************************
/**
* Extends mxShape.
*/
function mxShapePidSharedCont(bounds, fill, stroke, strokewidth)
{
mxShape.call(this);
this.bounds = bounds;
this.fill = fill;
this.stroke = stroke;
this.strokewidth = (strokewidth != null) ? strokewidth : 1;
};
/**
* Extends mxShape.
*/
mxUtils.extend(mxShapePidSharedCont, mxShape);
mxShapePidSharedCont.prototype.cst = {
SHAPE_SHARED_CONT : 'mxgraph.pid2inst.sharedCont',
MOUNTING : 'mounting',
FIELD : 'field',
ROOM : 'room',
INACCESSIBLE : 'inaccessible',
LOCAL : 'local'
};
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapePidSharedCont.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
this.background(c, x, y, w, h);
c.setShadow(false);
this.foreground(c, x, y, w, h);
};
mxShapePidSharedCont.prototype.background = function(c, x, y, w, h)
{
c.rect(0, 0, w, h);
c.fillAndStroke();
};
mxShapePidSharedCont.prototype.foreground = function(c, x, y, w, h)
{
var mounting = mxUtils.getValue(this.style, mxShapePidSharedCont.prototype.cst.MOUNTING, 'field');
c.ellipse(0, 0, w, h);
c.fillAndStroke();
if (mounting === mxShapePidSharedCont.prototype.cst.ROOM)
{
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w, h * 0.5);
c.stroke();
}
else if (mounting === mxShapePidSharedCont.prototype.cst.INACCESSIBLE)
{
c.setDashed(true);
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w, h * 0.5);
c.stroke();
}
else if (mounting === mxShapePidDiscInst.prototype.cst.LOCAL)
{
c.begin();
c.moveTo(w * 0.005, h * 0.48);
c.lineTo(w * 0.995, h * 0.48);
c.moveTo(w * 0.005, h * 0.52);
c.lineTo(w * 0.995, h * 0.52);
c.stroke();
}
};
mxCellRenderer.prototype.defaultShapes[mxShapePidSharedCont.prototype.cst.SHAPE_SHARED_CONT] = mxShapePidSharedCont;
mxShapePidSharedCont.prototype.constraints = [
new mxConnectionConstraint(new mxPoint(0.5, 0), true),
new mxConnectionConstraint(new mxPoint(0.5, 1), true),
new mxConnectionConstraint(new mxPoint(0, 0.5), true),
new mxConnectionConstraint(new mxPoint(1, 0.5), true),
new mxConnectionConstraint(new mxPoint(0, 0), false),
new mxConnectionConstraint(new mxPoint(0, 1), false),
new mxConnectionConstraint(new mxPoint(1, 0), false),
new mxConnectionConstraint(new mxPoint(1, 1), false)
];
//**********************************************************************************************************************************************************
//Computer Function
//**********************************************************************************************************************************************************
/**
* Extends mxShape.
*/
function mxShapePidCompFunc(bounds, fill, stroke, strokewidth)
{
mxShape.call(this);
this.bounds = bounds;
this.fill = fill;
this.stroke = stroke;
this.strokewidth = (strokewidth != null) ? strokewidth : 1;
};
/**
* Extends mxShape.
*/
mxUtils.extend(mxShapePidCompFunc, mxShape);
mxShapePidCompFunc.prototype.cst = {
SHAPE_COMP_FUNC : 'mxgraph.pid2inst.compFunc',
MOUNTING : 'mounting',
FIELD : 'field',
ROOM : 'room',
INACCESSIBLE : 'inaccessible',
LOCAL : 'local'
};
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapePidCompFunc.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
this.background(c, x, y, w, h);
c.setShadow(false);
this.foreground(c, x, y, w, h);
};
mxShapePidCompFunc.prototype.background = function(c, x, y, w, h)
{
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w * 0.25, 0);
c.lineTo(w * 0.75, 0);
c.lineTo(w, h * 0.5);
c.lineTo(w * 0.75, h);
c.lineTo(w * 0.25, h);
c.close();
c.fillAndStroke();
};
mxShapePidCompFunc.prototype.foreground = function(c, x, y, w, h)
{
var mounting = mxUtils.getValue(this.style, mxShapePidCompFunc.prototype.cst.MOUNTING, 'field');
if (mounting === mxShapePidCompFunc.prototype.cst.ROOM)
{
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w, h * 0.5);
c.stroke();
}
else if (mounting === mxShapePidCompFunc.prototype.cst.INACCESSIBLE)
{
c.setDashed(true);
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w, h * 0.5);
c.stroke();
}
else if (mounting === mxShapePidDiscInst.prototype.cst.LOCAL)
{
c.begin();
c.moveTo(w * 0.01, h * 0.48);
c.lineTo(w * 0.99, h * 0.48);
c.moveTo(w * 0.01, h * 0.52);
c.lineTo(w * 0.99, h * 0.52);
c.stroke();
}
};
mxCellRenderer.prototype.defaultShapes[mxShapePidCompFunc.prototype.cst.SHAPE_COMP_FUNC] = mxShapePidCompFunc;
mxShapePidCompFunc.prototype.constraints = [
new mxConnectionConstraint(new mxPoint(0.5, 0), true),
new mxConnectionConstraint(new mxPoint(0.5, 1), true),
new mxConnectionConstraint(new mxPoint(0, 0.5), true),
new mxConnectionConstraint(new mxPoint(1, 0.5), true),
new mxConnectionConstraint(new mxPoint(0.25, 0), false),
new mxConnectionConstraint(new mxPoint(0.75, 0), false),
new mxConnectionConstraint(new mxPoint(0.25, 1), false),
new mxConnectionConstraint(new mxPoint(0.75, 1), false)
];
//**********************************************************************************************************************************************************
//Computer Function
//**********************************************************************************************************************************************************
/**
* Extends mxShape.
*/
function mxShapePidProgLogCont(bounds, fill, stroke, strokewidth)
{
mxShape.call(this);
this.bounds = bounds;
this.fill = fill;
this.stroke = stroke;
this.strokewidth = (strokewidth != null) ? strokewidth : 1;
};
/**
* Extends mxShape.
*/
mxUtils.extend(mxShapePidProgLogCont, mxShape);
mxShapePidProgLogCont.prototype.cst = {
SHAPE_PROG_LOG_CONT : 'mxgraph.pid2inst.progLogCont',
MOUNTING : 'mounting',
FIELD : 'field',
ROOM : 'room',
INACCESSIBLE : 'inaccessible',
LOCAL : 'local'
};
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapePidProgLogCont.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
this.background(c, x, y, w, h);
c.setShadow(false);
this.foreground(c, x, y, w, h);
};
mxShapePidProgLogCont.prototype.background = function(c, x, y, w, h)
{
c.rect(0, 0, w, h);
c.fillAndStroke();
};
mxShapePidProgLogCont.prototype.foreground = function(c, x, y, w, h)
{
var mounting = mxUtils.getValue(this.style, mxShapePidProgLogCont.prototype.cst.MOUNTING, 'field');
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w * 0.5, 0);
c.lineTo(w, h * 0.5);
c.lineTo(w * 0.5, h);
c.close();
c.stroke();
if (mounting === mxShapePidProgLogCont.prototype.cst.ROOM)
{
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w, h * 0.5);
c.stroke();
}
else if (mounting === mxShapePidProgLogCont.prototype.cst.INACCESSIBLE)
{
c.setDashed(true);
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w, h * 0.5);
c.stroke();
}
else if (mounting === mxShapePidDiscInst.prototype.cst.LOCAL)
{
c.begin();
c.moveTo(w * 0.02, h * 0.48);
c.lineTo(w * 0.98, h * 0.48);
c.moveTo(w * 0.02, h * 0.52);
c.lineTo(w * 0.98, h * 0.52);
c.stroke();
}
};
mxCellRenderer.prototype.defaultShapes[mxShapePidProgLogCont.prototype.cst.SHAPE_PROG_LOG_CONT] = mxShapePidProgLogCont;
mxShapePidProgLogCont.prototype.constraints = [
new mxConnectionConstraint(new mxPoint(0.5, 0), true),
new mxConnectionConstraint(new mxPoint(0.5, 1), true),
new mxConnectionConstraint(new mxPoint(0, 0.5), true),
new mxConnectionConstraint(new mxPoint(1, 0.5), true),
new mxConnectionConstraint(new mxPoint(0, 0), false),
new mxConnectionConstraint(new mxPoint(0, 1), false),
new mxConnectionConstraint(new mxPoint(1, 0), false),
new mxConnectionConstraint(new mxPoint(1, 1), false)
];
//**********************************************************************************************************************************************************
//Indicator
//**********************************************************************************************************************************************************
/**
* Extends mxShape.
*/
function mxShapePidIndicator(bounds, fill, stroke, strokewidth)
{
mxShape.call(this);
this.bounds = bounds;
this.fill = fill;
this.stroke = stroke;
this.strokewidth = (strokewidth != null) ? strokewidth : 1;
};
/**
* Extends mxShape.
*/
mxUtils.extend(mxShapePidIndicator, mxShape);
mxShapePidIndicator.prototype.cst = {
SHAPE_INDICATOR : 'mxgraph.pid2inst.indicator',
MOUNTING : 'mounting',
FIELD : 'field',
ROOM : 'room',
INACCESSIBLE : 'inaccessible',
LOCAL : 'local',
IND_TYPE : 'indType',
INSTRUMENT : 'inst',
CONTROL : 'ctrl',
FUNCTION : 'func',
PLC : 'plc'
};
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapePidIndicator.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
this.background(c, x, y, w, h);
c.setShadow(false);
this.foreground(c, x, y, w, h);
};
mxShapePidIndicator.prototype.background = function(c, x, y, w, h)
{
var type = mxUtils.getValue(this.style, mxShapePidIndicator.prototype.cst.IND_TYPE, 'inst');
c.begin();
c.moveTo(w * 0.5, w);
c.lineTo(w * 0.5, h);
c.stroke();
if (type === mxShapePidIndicator.prototype.cst.INSTRUMENT)
{
c.ellipse(0, 0, w, w);
c.fillAndStroke();
}
else if (type === mxShapePidIndicator.prototype.cst.CONTROL)
{
c.rect(0, 0, w, w);
c.fillAndStroke();
}
else if (type === mxShapePidIndicator.prototype.cst.FUNCTION)
{
c.begin();
c.moveTo(0, w * 0.5);
c.lineTo(w * 0.25, 0);
c.lineTo(w * 0.75, 0);
c.lineTo(w, w * 0.5);
c.lineTo(w * 0.75, w);
c.lineTo(w * 0.25, w);
c.close();
c.fillAndStroke();
}
else if (type === mxShapePidIndicator.prototype.cst.PLC)
{
c.rect(0, 0, w, w);
c.fillAndStroke();
}
};
mxShapePidIndicator.prototype.foreground = function(c, x, y, w, h)
{
var mounting = mxUtils.getValue(this.style, mxShapePidIndicator.prototype.cst.MOUNTING, 'field');
var type = mxUtils.getValue(this.style, mxShapePidIndicator.prototype.cst.IND_TYPE, 'inst');
if (type === mxShapePidIndicator.prototype.cst.CONTROL)
{
c.ellipse(0, 0, w, w);
c.stroke();
}
else if (type === mxShapePidIndicator.prototype.cst.PLC)
{
c.begin();
c.moveTo(0, w * 0.5);
c.lineTo(w * 0.5, 0);
c.lineTo(w, w * 0.5);
c.lineTo(w * 0.5, w);
c.close();
c.stroke();
}
if (mounting === mxShapePidIndicator.prototype.cst.ROOM)
{
c.begin();
c.moveTo(0, w * 0.5);
c.lineTo(w, w * 0.5);
c.stroke();
}
else if (mounting === mxShapePidIndicator.prototype.cst.INACCESSIBLE)
{
c.setDashed(true);
c.begin();
c.moveTo(0, w * 0.5);
c.lineTo(w, w * 0.5);
c.stroke();
}
else if (mounting === mxShapePidIndicator.prototype.cst.LOCAL)
{
c.begin();
c.moveTo(w * 0.005, w * 0.48);
c.lineTo(w * 0.995, w * 0.48);
c.moveTo(w * 0.005, w * 0.52);
c.lineTo(w * 0.995, w * 0.52);
c.stroke();
}
};
mxCellRenderer.prototype.defaultShapes[mxShapePidIndicator.prototype.cst.SHAPE_INDICATOR] = mxShapePidIndicator;
mxShapePidIndicator.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 1), true)];
//**********************************************************************************************************************************************************
//Logic
//**********************************************************************************************************************************************************
/**
* Extends mxShape.
*/
function mxShapePidLogic(bounds, fill, stroke, strokewidth)
{
mxShape.call(this);
this.bounds = bounds;
this.fill = fill;
this.stroke = stroke;
this.strokewidth = (strokewidth != null) ? strokewidth : 1;
};
/**
* Extends mxShape.
*/
mxUtils.extend(mxShapePidLogic, mxShape);
mxShapePidLogic.prototype.cst = {
SHAPE_LOGIC : 'mxgraph.pid2inst.logic',
MOUNTING : 'mounting',
FIELD : 'field',
ROOM : 'room',
INACCESSIBLE : 'inaccessible',
LOCAL : 'local'
};
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapePidLogic.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
this.background(c, x, y, w, h);
c.setShadow(false);
this.foreground(c, x, y, w, h);
};
mxShapePidLogic.prototype.background = function(c, x, y, w, h)
{
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w * 0.5, 0);
c.lineTo(w, h * 0.5);
c.lineTo(w * 0.5, h);
c.close();
c.fillAndStroke();
};
mxShapePidLogic.prototype.foreground = function(c, x, y, w, h)
{
var mounting = mxUtils.getValue(this.style, mxShapePidLogic.prototype.cst.MOUNTING, 'field');
if (mounting === mxShapePidLogic.prototype.cst.ROOM)
{
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w, h * 0.5);
c.stroke();
}
else if (mounting === mxShapePidLogic.prototype.cst.INACCESSIBLE)
{
c.setDashed(true);
c.begin();
c.moveTo(0, h * 0.5);
c.lineTo(w, h * 0.5);
c.stroke();
}
else if (mounting === mxShapePidLogic.prototype.cst.LOCAL)
{
c.begin();
c.moveTo(w * 0.02, h * 0.48);
c.lineTo(w * 0.98, h * 0.48);
c.moveTo(w * 0.02, h * 0.52);
c.lineTo(w * 0.98, h * 0.52);
c.stroke();
}
};
mxCellRenderer.prototype.defaultShapes[mxShapePidLogic.prototype.cst.SHAPE_LOGIC] = mxShapePidLogic;
mxShapePidLogic.prototype.constraints = [
new mxConnectionConstraint(new mxPoint(0.5, 0), true),
new mxConnectionConstraint(new mxPoint(0.5, 1), true),
new mxConnectionConstraint(new mxPoint(0, 0.5), true),
new mxConnectionConstraint(new mxPoint(1, 0.5), true),
new mxConnectionConstraint(new mxPoint(0.25, 0.25), false),
new mxConnectionConstraint(new mxPoint(0.25, 0.75), false),
new mxConnectionConstraint(new mxPoint(0.75, 0.25), false),
new mxConnectionConstraint(new mxPoint(0.75, 0.75), false)
];