aurea-eden 1.25.1 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +0 -0
- package/README.md +300 -95
- package/dist/bpmn-diagram.es.js +37516 -25040
- package/dist/bpmn-diagram.umd.js +13 -5790
- package/package.json +17 -8
- package/.gitattributes +0 -2
- package/.github/workflows/static.yml +0 -43
- package/CHANGELOG.md +0 -60
- package/README_.md +0 -174
- package/assets/3diagram_logo.png +0 -0
- package/assets/aurea-eden-logo.jpeg +0 -0
- package/assets/favicon/about.txt +0 -6
- package/assets/favicon/android-chrome-192x192.png +0 -0
- package/assets/favicon/android-chrome-512x512.png +0 -0
- package/assets/favicon/apple-touch-icon.png +0 -0
- package/assets/favicon/favicon-16x16.png +0 -0
- package/assets/favicon/favicon-32x32.png +0 -0
- package/assets/favicon/favicon.ico +0 -0
- package/assets/favicon/site.webmanifest +0 -1
- package/assets/threejs_camera.jpg.webp +0 -0
- package/assets/threejs_camera3.jpg.webp +0 -0
- package/assets/threejs_cameras.webp +0 -0
- package/assets/threejs_cameras2.webp +0 -0
- package/assets/threejs_objects.webp +0 -0
- package/assets/threejs_scene.webp +0 -0
- package/assets/threejs_scene_graph.webp +0 -0
- package/favicon.ico +0 -0
- package/index.html +0 -34
- package/index.js +0 -153
- package/lib/connectors/Connector.js +0 -47
- package/lib/diagrams/Diagram.js +0 -710
- package/lib/diagrams/DiagramConstants.js +0 -22
- package/lib/elements/Element.js +0 -860
- package/lib/materials/BarMaterial.js +0 -17
- package/lib/materials/DiagramEditMaterial.js +0 -28
- package/lib/notations/BpmnDiagram.js +0 -861
- package/lib/shapes/Shape.js +0 -23
- package/lib/shapes/bar/ValueBarConstants.js +0 -34
- package/lib/shapes/bar/ValueBarShape.js +0 -52
- package/lib/shapes/basic/BasicShapeConstants.js +0 -23
- package/lib/shapes/basic/BoxShape.js +0 -12
- package/lib/shapes/basic/CircleShape.js +0 -55
- package/lib/shapes/basic/DiamondShape.js +0 -169
- package/lib/shapes/basic/RoundedRectangleShape.js +0 -180
- package/lib/shapes/connector/ConnectorConstants.js +0 -7
- package/lib/shapes/connector/RoundedCornerOrthogonalConnectorShape.js +0 -229
- package/lib/shapes/icon/IconConstants.js +0 -7
- package/lib/shapes/icon/IconShape.js +0 -92
- package/lib/shapes/icon/bpmn/activities/ad-hoc-marker.svg +0 -50
- package/lib/shapes/icon/bpmn/activities/business-rule.svg +0 -92
- package/lib/shapes/icon/bpmn/activities/compensation-marker.svg +0 -50
- package/lib/shapes/icon/bpmn/activities/loop-marker.svg +0 -50
- package/lib/shapes/icon/bpmn/activities/manual.svg +0 -51
- package/lib/shapes/icon/bpmn/activities/parallel-mi-marker.svg +0 -70
- package/lib/shapes/icon/bpmn/activities/receive.svg +0 -77
- package/lib/shapes/icon/bpmn/activities/script.svg +0 -54
- package/lib/shapes/icon/bpmn/activities/send.svg +0 -86
- package/lib/shapes/icon/bpmn/activities/sequential-mi-marker.svg +0 -70
- package/lib/shapes/icon/bpmn/activities/service.svg +0 -58
- package/lib/shapes/icon/bpmn/activities/sub-process-marker.svg +0 -51
- package/lib/shapes/icon/bpmn/activities/user.svg +0 -50
- package/lib/shapes/icon/bpmn/events/compensation.svg +0 -47
- package/lib/shapes/icon/bpmn/events/conditional.svg +0 -47
- package/lib/shapes/icon/bpmn/events/error.svg +0 -47
- package/lib/shapes/icon/bpmn/events/escalation.svg +0 -47
- package/lib/shapes/icon/bpmn/events/intermediate-compensation.svg +0 -53
- package/lib/shapes/icon/bpmn/events/intermediate-conditional.svg +0 -53
- package/lib/shapes/icon/bpmn/events/intermediate-escalation.svg +0 -53
- package/lib/shapes/icon/bpmn/events/intermediate-link-catch.svg +0 -53
- package/lib/shapes/icon/bpmn/events/intermediate-link-throw.svg +0 -53
- package/lib/shapes/icon/bpmn/events/intermediate-receive.svg +0 -53
- package/lib/shapes/icon/bpmn/events/intermediate-send.svg +0 -69
- package/lib/shapes/icon/bpmn/events/intermediate-signal-catch.svg +0 -53
- package/lib/shapes/icon/bpmn/events/intermediate-signal-throw.svg +0 -53
- package/lib/shapes/icon/bpmn/events/intermediate-timer.svg +0 -107
- package/lib/shapes/icon/bpmn/events/intermediate.svg +0 -49
- package/lib/shapes/icon/bpmn/events/message-end.svg +0 -54
- package/lib/shapes/icon/bpmn/events/message-start.svg +0 -41
- package/lib/shapes/icon/bpmn/events/signal-end.svg +0 -47
- package/lib/shapes/icon/bpmn/events/signal-start.svg +0 -47
- package/lib/shapes/icon/bpmn/events/terminate.svg +0 -49
- package/lib/shapes/icon/bpmn/events/timer.svg +0 -104
- package/lib/shapes/icon/bpmn/gateways/complex.svg +0 -61
- package/lib/shapes/icon/bpmn/gateways/event-based.svg +0 -68
- package/lib/shapes/icon/bpmn/gateways/exclusive.svg +0 -57
- package/lib/shapes/icon/bpmn/gateways/inclusive.svg +0 -57
- package/lib/shapes/icon/bpmn/gateways/parallel.svg +0 -56
- package/lib/shapes/icon/decorators.svg +0 -262
- package/lib/shapes/icon/hexagon.svg +0 -5
- package/lib/shapes/text/Roboto_Regular.json +0 -5610
- package/lib/shapes/text/TextShape.js +0 -29
- package/lib/shapes/text/fonts/Roboto.zip +0 -0
- package/vite.config.js +0 -15
package/LICENSE
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
@@ -1,8 +1,53 @@
|
|
|
1
|
-
# Aurea EDEN
|
|
2
|
-
|
|
3
|
-
](https://github.com/robertwaszkowski/aurea-eden)
|
|
4
|
+
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
5
|
+
[](https://robertwaszkowski.github.io/aurea-eden/)
|
|
6
|
+
|
|
7
|
+
<table>
|
|
8
|
+
<tr>
|
|
9
|
+
<td width="220" align="center" valign="top">
|
|
10
|
+
<img src="assets/aurea-eden-logo.jpeg" alt="Aurea EDEN Logo" width="200"/>
|
|
11
|
+
</td>
|
|
12
|
+
<td valign="top">
|
|
13
|
+
<p>
|
|
14
|
+
<strong>Aurea EDEN</strong> (<i>Evolving Diagramming with Enriched Notations</i>) is a flexible JavaScript library built on Three.js. It helps you create 3D diagrams, going beyond basic 2D to handle complex data better. <strong>Aurea EDEN</strong> offers extended element placement functionality, utilizes JavaScript method chaining for easy diagram manipulation, and enables users to define custom elements for any notation. This facilitates the creation of richer, more insightful models and enhances data visualization across diverse scientific and engineering domains.
|
|
15
|
+
</p>
|
|
16
|
+
</td>
|
|
17
|
+
</tr>
|
|
18
|
+
</table>
|
|
19
|
+
|
|
20
|
+
## Motivation
|
|
21
|
+
|
|
22
|
+
Traditional 2D diagrams often struggle to convey the full depth of information in complex systems, leading to cluttered representations. While 3D visualization offers potential for richer semantics and improved comprehension, many tools lack the flexibility to create custom notations or integrate quantitative data directly into the visual model. Aurea EDEN addresses this gap by providing a framework that empowers users to:
|
|
23
|
+
|
|
24
|
+
* Define, adapt, and evolve their own visual notations.
|
|
25
|
+
* Seamlessly integrate 2D and 3D elements.
|
|
26
|
+
* Visualize not only the model's structure but also associated execution data or statistical parameters.
|
|
27
|
+
|
|
28
|
+
## Key Features
|
|
29
|
+
|
|
30
|
+
* **3D Diagramming:** Leverages Three.js for robust 3D rendering of diagrams.
|
|
31
|
+
* **Flexible Notation Development:** Easily create and customize new diagrammatic notations (e.g., UML, BPMN, or domain-specific).
|
|
32
|
+
* **Enriched Data Visualization:** Directly visualize quantitative data (e.g., performance metrics, statistical parameters) as 3D elements (like value bars) on diagram components.
|
|
33
|
+
* **Extended Element Placement:** Advanced options for positioning elements, including contextual placement relative to other elements and direct coordinate positioning.
|
|
34
|
+
* **Intuitive Connection Design:** Definable connection points (e.g., "north," "west") and automated routing for connectors.
|
|
35
|
+
* **Method Chaining API:** Simplifies diagram construction and manipulation through a fluent JavaScript API.
|
|
36
|
+
* **Modular Architecture:** Core components for Diagrams, Elements, Shapes, Connectors, and Materials allow for high extensibility.
|
|
37
|
+
* **Import/Export Capabilities:** Support for importing and exporting diagrams (extensible for various formats).
|
|
38
|
+
* **Multiple Diagram Modes:**
|
|
39
|
+
* **VIEW Mode:** Default top-down view for standard diagram display.
|
|
40
|
+
* **ANALYZE Mode:** Perspective view for 3D data visualization, automatically adding value bars and using color scales.
|
|
41
|
+
* **EDIT Mode:** Top-down view intended for diagram modification operations.
|
|
42
|
+
|
|
43
|
+
## Live Demo
|
|
44
|
+
|
|
45
|
+
<a href="https://robertwaszkowski.github.io/aurea-eden/">
|
|
46
|
+
<img src="assets/figDiagramVisualization.png" alt="Diagram Visualization Example" width="600"/>
|
|
47
|
+
</a>
|
|
48
|
+
|
|
49
|
+
Explore Aurea EDEN's capabilities through the live demo:
|
|
50
|
+
[https://robertwaszkowski.github.io/aurea-eden/](https://robertwaszkowski.github.io/aurea-eden/)
|
|
6
51
|
|
|
7
52
|
## Table of Contents
|
|
8
53
|
|
|
@@ -18,136 +63,301 @@ A flexible Three.js-based framework for creating custom diagramming notations in
|
|
|
18
63
|
## Installation
|
|
19
64
|
|
|
20
65
|
```bash
|
|
21
|
-
npm install aurea-eden
|
|
66
|
+
npm install aurea-eden
|
|
22
67
|
```
|
|
23
68
|
|
|
24
69
|
## Quick Start
|
|
25
70
|
|
|
71
|
+
To quickly try Aurea EDEN, create two files in your project directory:
|
|
72
|
+
|
|
73
|
+
**index.html**
|
|
74
|
+
```html
|
|
75
|
+
<!DOCTYPE html>
|
|
76
|
+
<html lang="en">
|
|
77
|
+
<head>
|
|
78
|
+
<meta charset="UTF-8">
|
|
79
|
+
<title>Aurea EDEN Quick Start</title>
|
|
80
|
+
<style>
|
|
81
|
+
body { margin: 0; }
|
|
82
|
+
</style>
|
|
83
|
+
</head>
|
|
84
|
+
<body>
|
|
85
|
+
<script type="module" src="index.js"></script>
|
|
86
|
+
</body>
|
|
87
|
+
</html>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**index.js**
|
|
26
91
|
```javascript
|
|
27
|
-
import { BpmnDiagram } from 'aurea-eden
|
|
92
|
+
import { BpmnDiagram } from 'aurea-eden';
|
|
28
93
|
|
|
29
94
|
// Create new diagram
|
|
30
|
-
const diagram = new BpmnDiagram(
|
|
95
|
+
const diagram = new BpmnDiagram(document.body);
|
|
31
96
|
|
|
32
97
|
// Add elements
|
|
33
|
-
diagram.addStartEvent('e1')
|
|
34
|
-
|
|
98
|
+
diagram.addStartEvent('e1');
|
|
99
|
+
|
|
100
|
+
diagram.addTask('a1')
|
|
35
101
|
.positionRightOf('e1')
|
|
36
|
-
.addWrappedText('Handle
|
|
37
|
-
.connectFrom('e1')
|
|
38
|
-
.
|
|
39
|
-
|
|
102
|
+
.addWrappedText('Handle Quotations')
|
|
103
|
+
.connectFrom('e1', 'E', 'W')
|
|
104
|
+
.addValueBar(30);
|
|
105
|
+
|
|
106
|
+
diagram.addEndEvent('e2')
|
|
107
|
+
.positionRightOf('a1')
|
|
108
|
+
.connectFrom('a1', 'E', 'W');
|
|
40
109
|
|
|
41
110
|
// Arrange and display
|
|
42
111
|
diagram.arrange();
|
|
43
112
|
diagram.fitScreen();
|
|
113
|
+
|
|
114
|
+
// Add a listener to the window.
|
|
115
|
+
// Let it toggle VIEW and ANALYZE modes when the user push the space key.
|
|
116
|
+
window.addEventListener('keydown', (event) => {
|
|
117
|
+
if (event.key === ' ') {
|
|
118
|
+
diagram.setMode(diagram.mode === 'VIEW' ? 'ANALYZE' : 'VIEW');
|
|
119
|
+
}
|
|
120
|
+
});
|
|
44
121
|
```
|
|
45
122
|
|
|
46
|
-
|
|
123
|
+
Open `index.html` in your browser to see the diagram rendered.
|
|
47
124
|
|
|
48
|
-
- **3D Visualization**: Extend 2D notations into 3D space
|
|
49
|
-
- **Parameter Visualization**: Show quantitative data through value bars
|
|
50
|
-
- **Custom Notations**: Create your own visual languages
|
|
51
|
-
- **Interactive Controls**: Pan, zoom, and rotate diagrams
|
|
52
|
-
- **Multiple View Modes**: Switch between VIEW and ANALYZE modes
|
|
53
|
-
- **Fluid API**: Method chaining for intuitive diagram creation
|
|
54
|
-
- **Built-in BPMN Support**: Ready-to-use BPMN elements
|
|
55
125
|
|
|
56
|
-
|
|
126
|
+
# Core Concepts / Architecture Overview
|
|
57
127
|
|
|
58
|
-
|
|
128
|
+
Aurea EDEN's architecture is modular, built around several key components:
|
|
59
129
|
|
|
60
|
-
|
|
130
|
+
* **Diagram:** Manages the overall scene, camera, rendering (via Three.js), elements, and connectors. Base class for specific notations (e.g., `BpmnDiagram`).
|
|
131
|
+
* **Element:** Represents individual components in a diagram (e.g., tasks, events). Combines shapes, materials, text, icons, and value bars. Provides methods for positioning and connecting.
|
|
132
|
+
* **Shape:** Defines the 3D geometry of elements and connectors (e.g., `RoundedRectangleShape`, `CircleShape`, `DiamondShape`). Custom shapes can be created by extending the base `Shape` class.
|
|
133
|
+
* **Connector:** Defines relationships between elements. Handles positioning and alignment, supporting custom styles and waypoints.
|
|
134
|
+
* **Material:** Defines the appearance (color, texture, transparency) of shapes and connectors using Three.js materials.
|
|
61
135
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
136
|
+
This architecture allows for easy extension and customization to support various diagramming needs.
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
# Detailed Usage / API Highlights
|
|
140
|
+
|
|
141
|
+
## Creating Diagrams
|
|
142
|
+
|
|
143
|
+
Instantiate a diagram class (either a pre-defined one like `BpmnDiagram` or a custom one).
|
|
144
|
+
|
|
145
|
+
```js
|
|
146
|
+
import { UmlActivityDiagram } from './lib/notations/UmlActivityDiagram.js'; // Example custom notation
|
|
147
|
+
const umlDiagram = new UmlActivityDiagram(document.getElementById('diagram-container'));
|
|
66
148
|
```
|
|
67
149
|
|
|
68
|
-
|
|
150
|
+
## Adding Elements
|
|
69
151
|
|
|
70
|
-
|
|
71
|
-
- StartEvent
|
|
72
|
-
- EndEvent
|
|
73
|
-
- Task
|
|
74
|
-
- UserTask
|
|
75
|
-
- Gateway
|
|
76
|
-
- Connector
|
|
152
|
+
Elements are added using notation-specific methods (e.g., addStartEvent, addTask in BpmnDiagram) or a generic addElement method. Method chaining is heavily used for configuration.
|
|
77
153
|
|
|
78
|
-
|
|
154
|
+
```js
|
|
155
|
+
// BPMN Example
|
|
156
|
+
diagram.addTask('task1')
|
|
157
|
+
.positionAt({ x: 100, y: 50, z: 0 }) // Direct positioning
|
|
158
|
+
.addWrappedText('My Task Text');
|
|
79
159
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
160
|
+
// Generic element with a custom shape
|
|
161
|
+
import { MyCustomShape } from './lib/shapes/MyCustomShape.js';
|
|
162
|
+
const customShapeInstance = new MyCustomShape();
|
|
163
|
+
diagram.addElement('customElem1', customShapeInstance)
|
|
164
|
+
.positionRightOf('task1')
|
|
165
|
+
.addValueBar(90);
|
|
166
|
+
```
|
|
83
167
|
|
|
84
|
-
|
|
85
|
-
new DiagramMaterial({
|
|
86
|
-
color: 0x00ff00,
|
|
87
|
-
shininess: 60
|
|
88
|
-
});
|
|
168
|
+
## Connecting Elements
|
|
89
169
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
170
|
+
Connect elements using the connectFrom method or by adding connectors directly.
|
|
171
|
+
|
|
172
|
+
```js
|
|
173
|
+
// Connect 'task2' from the 'East' point of 'task1' to the 'West' point of 'task2'
|
|
174
|
+
diagram.getElementByID('task2').connectFrom('task1', 'E', 'W');
|
|
175
|
+
|
|
176
|
+
// Create a custom connector with specific waypoints
|
|
177
|
+
const DISTANCE_BETWEEN_ELEMENTS = 48;
|
|
178
|
+
const waypoints = [
|
|
179
|
+
diagram.getElementById('g1').getNorthPoint(),
|
|
180
|
+
{ x: diagram.getElementById('g1').getNorthPoint().x,
|
|
181
|
+
y: diagram.getElementById('a3').getNorthPoint().y + DISTANCE_BETWEEN_ELEMENTS },
|
|
182
|
+
{ x: diagram.getElementById('a7').getNorthPoint().x,
|
|
183
|
+
y: diagram.getElementById('a3').getNorthPoint().y + DISTANCE_BETWEEN_ELEMENTS },
|
|
184
|
+
diagram.getElementById('a7').getNorthPoint()
|
|
185
|
+
];
|
|
186
|
+
diagram.addFlowConnector('customFlow1', waypoints);
|
|
95
187
|
```
|
|
96
188
|
|
|
97
|
-
##
|
|
189
|
+
## 3D Visualization & Analysis Mode
|
|
98
190
|
|
|
99
|
-
|
|
191
|
+
* **Value Bars**: Use element.addValueBar(value) to associate quantitative data with an element.
|
|
192
|
+
* **Analyze Mode**: Switch to "ANALYZE" mode to view these values as 3D bars. The diagram tilts, and bars are color-coded (green for high, red for low).
|
|
100
193
|
|
|
101
|
-
```
|
|
102
|
-
|
|
194
|
+
```js
|
|
195
|
+
diagram.getElementById('task1').addValueBar(75);
|
|
196
|
+
diagram.getElementById('task2').addValueBar(30);
|
|
197
|
+
diagram.setMode("ANALYZE"); // Switches to perspective view, shows bars
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
* **Camera Control**:
|
|
201
|
+
```js
|
|
202
|
+
diagram.center(); // Center the diagram in view
|
|
203
|
+
diagram.fitScreen(); // Fit the entire diagram within the viewport
|
|
204
|
+
diagram.rotate(45); // Rotate the camera view by 45 degrees around Y-axis
|
|
205
|
+
```
|
|
103
206
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
207
|
+
# Customization & Extensibility
|
|
208
|
+
|
|
209
|
+
Aurea EDEN is designed for extensibility:
|
|
210
|
+
|
|
211
|
+
## Creating New Notations:
|
|
212
|
+
|
|
213
|
+
Extend the base Diagram class. Implement methods to add notation-specific elements and connectors.
|
|
214
|
+
```js
|
|
215
|
+
// lib/notations/MyNotationDiagram.js
|
|
216
|
+
import { Diagram } from '../diagrams/Diagram.js';
|
|
217
|
+
import { Element } from '../elements/Element.js';
|
|
218
|
+
import { MyCustomShape } from '../shapes/MyCustomShape.js';
|
|
219
|
+
|
|
220
|
+
class MyNotationDiagram extends Diagram {
|
|
221
|
+
constructor(container) {
|
|
222
|
+
super(container);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
addMyCustomElement(elementId, text) {
|
|
226
|
+
const element = new Element(elementId, new MyCustomShape());
|
|
227
|
+
this.addElement(element);
|
|
228
|
+
element.addWrappedText(text);
|
|
229
|
+
return element;
|
|
109
230
|
}
|
|
110
231
|
}
|
|
232
|
+
export { MyNotationDiagram };
|
|
111
233
|
```
|
|
112
234
|
|
|
113
|
-
|
|
235
|
+
## Custom Shapes:
|
|
236
|
+
|
|
237
|
+
Extend the base Shape class (which itself uses THREE.BufferGeometry and THREE.Material).
|
|
238
|
+
|
|
239
|
+
```js
|
|
240
|
+
// lib/shapes/HexagonShape.js
|
|
241
|
+
import * as THREE from 'three';
|
|
242
|
+
import { Shape } from '../Shape.js';
|
|
243
|
+
import { DiagramEditMaterial } from '../../materials/DiagramEditMaterial.js';
|
|
244
|
+
|
|
245
|
+
class HexagonShape extends Shape {
|
|
246
|
+
constructor(lineWidth = 1) {
|
|
247
|
+
const shape = new THREE.Shape();
|
|
248
|
+
const size = 30;
|
|
249
|
+
// define hexagon points and shape path
|
|
250
|
+
const points = [];
|
|
251
|
+
for (let i = 0; i < 6; i++) {
|
|
252
|
+
const angle = (i * Math.PI) / 3;
|
|
253
|
+
points.push(new THREE.Vector2(size * Math.cos(angle), size * Math.sin(angle)));
|
|
254
|
+
}
|
|
255
|
+
shape.moveTo(points[0].x, points[0].y);
|
|
256
|
+
points.forEach(point => shape.lineTo(point.x, point.y));
|
|
257
|
+
shape.lineTo(points[0].x, points[0].y); // Close the shape
|
|
258
|
+
|
|
259
|
+
const extrudeSettings = {
|
|
260
|
+
steps: 2,
|
|
261
|
+
depth: 1,
|
|
262
|
+
bevelEnabled: true,
|
|
263
|
+
bevelThickness: 0.2,
|
|
264
|
+
bevelSize: 0.1,
|
|
265
|
+
bevelOffset: 0,
|
|
266
|
+
bevelSegments: 3
|
|
267
|
+
};
|
|
268
|
+
const geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings);
|
|
269
|
+
const material = new DiagramEditMaterial(0x006699); // Example material
|
|
270
|
+
super(geometry, material);
|
|
271
|
+
this.width = size * 2; // Approximate width
|
|
272
|
+
this.height = size * Math.sqrt(3); // Approximate height
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
export { HexagonShape };
|
|
276
|
+
```
|
|
114
277
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
278
|
+
## Custom Materials:
|
|
279
|
+
|
|
280
|
+
Create new materials by extending THREE.Material subclasses (e.g., `THREE.ShaderMaterial`, `THREE.MeshLambertMaterial`).
|
|
281
|
+
|
|
282
|
+
```js
|
|
283
|
+
// lib/materials/GradientMaterial.js
|
|
284
|
+
import * as THREE from 'three';
|
|
285
|
+
|
|
286
|
+
class GradientMaterial extends THREE.ShaderMaterial {
|
|
287
|
+
constructor(colorStart = 0x00ff00, colorEnd = 0x0000ff) {
|
|
288
|
+
super({
|
|
289
|
+
uniforms: {
|
|
290
|
+
colorStart: { value: new THREE.Color(colorStart) },
|
|
291
|
+
colorEnd: { value: new THREE.Color(colorEnd) }
|
|
292
|
+
},
|
|
293
|
+
vertexShader: `
|
|
294
|
+
varying vec2 vUv;
|
|
295
|
+
void main() {
|
|
296
|
+
vUv = uv;
|
|
297
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
298
|
+
}
|
|
299
|
+
`,
|
|
300
|
+
fragmentShader: `
|
|
301
|
+
uniform vec3 colorStart;
|
|
302
|
+
uniform vec3 colorEnd;
|
|
303
|
+
varying vec2 vUv;
|
|
304
|
+
void main() {
|
|
305
|
+
gl_FragColor = vec4(mix(colorStart, colorEnd, vUv.y), 1.0);
|
|
306
|
+
}
|
|
307
|
+
`
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
export { GradientMaterial };
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
## Custom Connectors:
|
|
315
|
+
|
|
316
|
+
Define the shape of a connector by creating a class that extends `Shape` and provides the geometry (e.g., using `THREE.TubeGeometry` for a curved connector).
|
|
317
|
+
|
|
318
|
+
```js
|
|
319
|
+
// lib/shapes/connector/CurvedConnectorShape.js
|
|
320
|
+
import * as THREE from 'three';
|
|
321
|
+
import { Shape } from '../Shape.js';
|
|
322
|
+
import { DiagramEditMaterial } from '../../materials/DiagramEditMaterial.js';
|
|
121
323
|
|
|
122
|
-
|
|
324
|
+
class CurvedConnectorShape extends Shape {
|
|
325
|
+
constructor(points) { // points is an array of {x, y, z} objects or THREE.Vector3 instances
|
|
326
|
+
const curvePoints = points.map(p => new THREE.Vector3(p.x, p.y, p.z || 0));
|
|
327
|
+
const curve = new THREE.CatmullRomCurve3(curvePoints);
|
|
328
|
+
|
|
329
|
+
const tubeRadius = 0.5;
|
|
330
|
+
const tubularSegments = 64;
|
|
331
|
+
const radialSegments = 8;
|
|
332
|
+
const closed = false;
|
|
333
|
+
const geometry = new THREE.TubeGeometry(curve, tubularSegments, tubeRadius, radialSegments, closed);
|
|
334
|
+
const material = new DiagramEditMaterial(0x006699); // Example material
|
|
335
|
+
super(geometry, material);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
export { CurvedConnectorShape };
|
|
123
339
|
```
|
|
124
340
|
|
|
125
|
-
|
|
341
|
+
# Examples
|
|
342
|
+
The library includes examples, such as a `BpmnDiagram` implementation, demonstrating how to:
|
|
126
343
|
|
|
127
|
-
|
|
344
|
+
* Define BPMN-specific elements (Events, Tasks, Gateways) using base shapes and icons.
|
|
345
|
+
* Create connectors (Sequence Flows).
|
|
346
|
+
* Add text labels.
|
|
347
|
+
* Implement import functionality for BPMN data.
|
|
128
348
|
|
|
129
|
-
|
|
130
|
-
- `addStartEvent(id)`
|
|
131
|
-
- `addEndEvent(id)`
|
|
132
|
-
- `addTask(id)`
|
|
133
|
-
- `addUserTask(id)`
|
|
134
|
-
- `addGateway(id)`
|
|
349
|
+
Aurea EDEN is also utilized in the Aurea Low-Code Development Platform (LCDP) for its Modeler and Process Analysis components.
|
|
135
350
|
|
|
136
|
-
#### Element Positioning
|
|
137
|
-
- `positionRightOf(elementId)`
|
|
138
|
-
- `positionBelow(elementId)`
|
|
139
|
-
- `positionUpRightOf(elementId)`
|
|
140
|
-
- `positionDownRightOf(elementId)`
|
|
141
351
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
352
|
+
# Dependencies
|
|
353
|
+
|
|
354
|
+
* **Three.js**: A comprehensive 3D graphics library for creating and displaying animated 3D computer graphics in a web browser.
|
|
355
|
+
* **@tweenjs/tween.js**: JavaScript tweening engine for easy animations.
|
|
356
|
+
* **SVG Loader** (part of Three.js examples): For loading and rendering SVG icons.
|
|
147
357
|
|
|
148
358
|
## Contributing
|
|
149
359
|
|
|
150
|
-
1. Fork the repository
|
|
360
|
+
1. Fork the repository (https://github.com/robertwaszkowski/aurea-eden)
|
|
151
361
|
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
|
|
152
362
|
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
|
|
153
363
|
4. Push to the branch (`git push origin feature/AmazingFeature`)
|
|
@@ -157,15 +367,10 @@ diagram.addFlowConnector('connector1', waypoints);
|
|
|
157
367
|
|
|
158
368
|
This project is licensed under the GNU General Public License v3.0 - see the [LICENSE](LICENSE) file for details.
|
|
159
369
|
|
|
160
|
-
##
|
|
161
|
-
|
|
162
|
-
- Three.js: 3D graphics library
|
|
163
|
-
- Tween.js: Animation library
|
|
164
|
-
|
|
165
|
-
## Author
|
|
370
|
+
## Author / Contact
|
|
166
371
|
|
|
167
372
|
Robert Waszkowski
|
|
168
373
|
|
|
169
|
-
|
|
374
|
+
**Email:** robert.waszkowski@wat.edu.pl
|
|
170
375
|
|
|
171
|
-
|
|
376
|
+
**GitHub:** [robertwaszkowski/aurea-eden](https://github.com/robertwaszkowski/aurea-eden)
|