| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330 |
- /**
- * Map containing SVG paths needed by BpmnRenderer
- */
- export default class PathMap {
- /**
- * Contains a map of path elements
- *
- * <h1>Path definition</h1>
- * A parameterized path is defined like this:
- * <pre>
- * 'GATEWAY_PARALLEL': {
- * d: 'm {mx},{my} {e.x0},0 0,{e.x1} {e.x1},0 0,{e.y0} -{e.x1},0 0,{e.y1} ' +
- '-{e.x0},0 0,-{e.y1} -{e.x1},0 0,-{e.y0} {e.x1},0 z',
- * height: 17.5,
- * width: 17.5,
- * heightElements: [2.5, 7.5],
- * widthElements: [2.5, 7.5]
- * }
- * </pre>
- * <p>It's important to specify a correct <b>height and width</b> for the path as the scaling
- * is based on the ratio between the specified height and width in this object and the
- * height and width that is set as scale target (Note x,y coordinates will be scaled with
- * individual ratios).</p>
- * <p>The '<b>heightElements</b>' and '<b>widthElements</b>' array must contain the values that will be scaled.
- * The scaling is based on the computed ratios.
- * Coordinates on the y axis should be in the <b>heightElement</b>'s array, they will be scaled using
- * the computed ratio coefficient.
- * In the parameterized path the scaled values can be accessed through the 'e' object in {} brackets.
- * <ul>
- * <li>The values for the y axis can be accessed in the path string using {e.y0}, {e.y1}, ....</li>
- * <li>The values for the x axis can be accessed in the path string using {e.x0}, {e.x1}, ....</li>
- * </ul>
- * The numbers x0, x1 respectively y0, y1, ... map to the corresponding array index.
- * </p>
- */
- pathMap: {
- EVENT_MESSAGE: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- EVENT_SIGNAL: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- EVENT_ESCALATION: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- EVENT_CONDITIONAL: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- EVENT_LINK: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- EVENT_ERROR: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- EVENT_CANCEL_45: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- EVENT_COMPENSATION: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- EVENT_TIMER_WH: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- EVENT_TIMER_LINE: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- EVENT_MULTIPLE: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- EVENT_PARALLEL_MULTIPLE: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- GATEWAY_EXCLUSIVE: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- GATEWAY_PARALLEL: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- GATEWAY_EVENT_BASED: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- GATEWAY_COMPLEX: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- DATA_OBJECT_PATH: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- DATA_OBJECT_COLLECTION_PATH: {
- d: string;
- height: number;
- width: number;
- heightElements: any[];
- widthElements: any[];
- };
- DATA_ARROW: {
- d: string;
- height: number;
- width: number;
- heightElements: any[];
- widthElements: any[];
- };
- DATA_STORE: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- TEXT_ANNOTATION: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- MARKER_SUB_PROCESS: {
- d: string;
- height: number;
- width: number;
- heightElements: any[];
- widthElements: any[];
- };
- MARKER_PARALLEL: {
- d: string;
- height: number;
- width: number;
- heightElements: any[];
- widthElements: any[];
- };
- MARKER_SEQUENTIAL: {
- d: string;
- height: number;
- width: number;
- heightElements: any[];
- widthElements: any[];
- };
- MARKER_COMPENSATION: {
- d: string;
- height: number;
- width: number;
- heightElements: any[];
- widthElements: any[];
- };
- MARKER_LOOP: {
- d: string;
- height: number;
- width: number;
- heightElements: any[];
- widthElements: any[];
- };
- MARKER_ADHOC: {
- d: string;
- height: number;
- width: number;
- heightElements: any[];
- widthElements: any[];
- };
- TASK_TYPE_SEND: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- TASK_TYPE_SCRIPT: {
- d: string;
- height: number;
- width: number;
- heightElements: number[];
- widthElements: number[];
- };
- TASK_TYPE_USER_1: {
- d: string;
- };
- TASK_TYPE_USER_2: {
- d: string;
- };
- TASK_TYPE_USER_3: {
- d: string;
- };
- TASK_TYPE_MANUAL: {
- d: string;
- };
- TASK_TYPE_INSTANTIATING_SEND: {
- d: string;
- };
- TASK_TYPE_SERVICE: {
- d: string;
- };
- TASK_TYPE_SERVICE_FILL: {
- d: string;
- };
- TASK_TYPE_BUSINESS_RULE_HEADER: {
- d: string;
- };
- TASK_TYPE_BUSINESS_RULE_MAIN: {
- d: string;
- };
- MESSAGE_FLOW_MARKER: {
- d: string;
- };
- };
- /**
- * Return raw path for the given ID.
- *
- * @param pathId
- *
- * @return raw path
- */
- getRawPath: (pathId: string) => string;
- /**
- * Scales the path to the given height and width.
- * <h1>Use case</h1>
- * <p>Use case is to scale the content of elements (event, gateways) based
- * on the element bounding box's size.
- * </p>
- * <h1>Why not transform</h1>
- * <p>Scaling a path with transform() will also scale the stroke and IE does not support
- * the option 'non-scaling-stroke' to prevent this.
- * Also there are use cases where only some parts of a path should be
- * scaled.</p>
- *
- * @param pathId The ID of the path.
- * @param param <p>
- * Example param object scales the path to 60% size of the container (data.width, data.height).
- * <pre>
- * {
- * xScaleFactor: 0.6,
- * yScaleFactor:0.6,
- * containerWidth: data.width,
- * containerHeight: data.height,
- * position: {
- * mx: 0.46,
- * my: 0.2,
- * }
- * }
- * </pre>
- * <ul>
- * <li>targetpathwidth = xScaleFactor * containerWidth</li>
- * <li>targetpathheight = yScaleFactor * containerHeight</li>
- * <li>Position is used to set the starting coordinate of the path. M is computed:
- * <ul>
- * <li>position.x * containerWidth</li>
- * <li>position.y * containerHeight</li>
- * </ul>
- * Center of the container <pre> position: {
- * mx: 0.5,
- * my: 0.5,
- * }</pre>
- * Upper left corner of the container
- * <pre> position: {
- * mx: 0.0,
- * my: 0.0,
- * }</pre>
- * </li>
- * </ul>
- * </p>
- *
- * @return scaled path
- */
- getScaledPath: (pathId: string, param: any) => string;
- }
|