@linkurious/ogma-linkurious-parser 3.1.13 → 4.0.1
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/dist/captions/captions.js +42 -54
- package/dist/captions/captions.js.map +1 -1
- package/dist/filters/filters.d.ts +1 -1
- package/dist/filters/filters.js +55 -76
- package/dist/filters/filters.js.map +1 -1
- package/dist/index.js +34 -33
- package/dist/index.js.map +1 -1
- package/dist/ogma/features/OgmaStore.js +16 -30
- package/dist/ogma/features/OgmaStore.js.map +1 -1
- package/dist/ogma/features/captions.js +43 -87
- package/dist/ogma/features/captions.js.map +1 -1
- package/dist/ogma/features/reactive.js +58 -75
- package/dist/ogma/features/reactive.js.map +1 -1
- package/dist/ogma/features/selectors.d.ts +5 -5
- package/dist/ogma/features/selectors.js +25 -16
- package/dist/ogma/features/selectors.js.map +1 -1
- package/dist/ogma/features/styles.js +115 -137
- package/dist/ogma/features/styles.js.map +1 -1
- package/dist/ogma/features/transformations.js +39 -87
- package/dist/ogma/features/transformations.js.map +1 -1
- package/dist/ogma/index.js +140 -230
- package/dist/ogma/index.js.map +1 -1
- package/dist/styles/edgeAttributes.js +31 -47
- package/dist/styles/edgeAttributes.js.map +1 -1
- package/dist/styles/itemAttributes.js +33 -42
- package/dist/styles/itemAttributes.js.map +1 -1
- package/dist/styles/nodeAttributes.js +49 -71
- package/dist/styles/nodeAttributes.js.map +1 -1
- package/dist/styles/styleRule.js +57 -68
- package/dist/styles/styleRule.js.map +1 -1
- package/dist/styles/styleRules.js +150 -192
- package/dist/styles/styleRules.js.map +1 -1
- package/dist/tools/colorPalette.js +1 -0
- package/dist/tools/colorPalette.js.map +1 -1
- package/dist/tools/ogmaTool.js +28 -30
- package/dist/tools/ogmaTool.js.map +1 -1
- package/dist/tools/tools.js +88 -91
- package/dist/tools/tools.js.map +1 -1
- package/package.json +7 -7
package/dist/ogma/index.js
CHANGED
|
@@ -1,28 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
extendStatics(d, b);
|
|
11
|
-
function __() { this.constructor = d; }
|
|
12
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
var __assign = (this && this.__assign) || function () {
|
|
16
|
-
__assign = Object.assign || function(t) {
|
|
17
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
18
|
-
s = arguments[i];
|
|
19
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
20
|
-
t[p] = s[p];
|
|
21
|
-
}
|
|
22
|
-
return t;
|
|
23
|
-
};
|
|
24
|
-
return __assign.apply(this, arguments);
|
|
25
|
-
};
|
|
26
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
27
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
28
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -32,61 +8,31 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
32
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
33
9
|
});
|
|
34
10
|
};
|
|
35
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
36
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
37
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
38
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
39
|
-
function step(op) {
|
|
40
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
41
|
-
while (_) try {
|
|
42
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
43
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
44
|
-
switch (op[0]) {
|
|
45
|
-
case 0: case 1: t = op; break;
|
|
46
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
47
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
48
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
49
|
-
default:
|
|
50
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
51
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
52
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
53
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
54
|
-
if (t[2]) _.ops.pop();
|
|
55
|
-
_.trys.pop(); continue;
|
|
56
|
-
}
|
|
57
|
-
op = body.call(thisArg, _);
|
|
58
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
59
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
63
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
64
13
|
};
|
|
65
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
15
|
+
exports.LKOgma = exports.ANIMATION_DURATION = exports.Ogma = void 0;
|
|
16
|
+
const rest_client_1 = require("@linkurious/rest-client");
|
|
17
|
+
const ogma_1 = __importDefault(require("@linkurious/ogma"));
|
|
18
|
+
const __1 = require("..");
|
|
19
|
+
const tools_1 = require("../tools/tools");
|
|
20
|
+
const styles_1 = require("./features/styles");
|
|
21
|
+
const transformations_1 = require("./features/transformations");
|
|
22
|
+
const captions_1 = require("./features/captions");
|
|
23
|
+
const reactive_1 = require("./features/reactive");
|
|
74
24
|
var ogma_2 = require("@linkurious/ogma");
|
|
75
|
-
exports
|
|
25
|
+
Object.defineProperty(exports, "Ogma", { enumerable: true, get: function () { return __importDefault(ogma_2).default; } });
|
|
76
26
|
exports.ANIMATION_DURATION = 750;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
function LKOgma(_configuration) {
|
|
80
|
-
var _newTarget = this.constructor;
|
|
81
|
-
var _this =
|
|
27
|
+
class LKOgma extends ogma_1.default {
|
|
28
|
+
constructor(_configuration) {
|
|
82
29
|
// set Ogma global configuration
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
Object.setPrototypeOf(
|
|
86
|
-
|
|
87
|
-
return _this;
|
|
30
|
+
super(_configuration);
|
|
31
|
+
this._configuration = _configuration;
|
|
32
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
33
|
+
this.initOgmaLinkuriousParser(true);
|
|
88
34
|
}
|
|
89
|
-
|
|
35
|
+
initOgmaLinkuriousParser(init) {
|
|
90
36
|
this.nodeCategoriesWatcher = this.schema.watchNodeNonObjectProperty({
|
|
91
37
|
path: 'categories',
|
|
92
38
|
unwindArrays: true,
|
|
@@ -100,7 +46,7 @@ var LKOgma = /** @class */ (function (_super) {
|
|
|
100
46
|
this.setOptions({
|
|
101
47
|
interactions: {
|
|
102
48
|
zoom: {
|
|
103
|
-
maxValue:
|
|
49
|
+
maxValue: (params) => {
|
|
104
50
|
return 128 / params.smallestNodeSize;
|
|
105
51
|
}
|
|
106
52
|
},
|
|
@@ -125,22 +71,21 @@ var LKOgma = /** @class */ (function (_super) {
|
|
|
125
71
|
this.LKStyles.setEdgesDefaultHalo();
|
|
126
72
|
this.LKStyles.setBadgeRule();
|
|
127
73
|
this.LKStyles.setFilterClass();
|
|
128
|
-
}
|
|
74
|
+
}
|
|
129
75
|
/**
|
|
130
76
|
* Initialize selection behavior
|
|
131
77
|
*/
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
this.events.onClick(function (e) {
|
|
78
|
+
initSelection() {
|
|
79
|
+
this.events.onClick((e) => {
|
|
135
80
|
if (e !== undefined && e.button === 'left') {
|
|
136
81
|
if (e.target !== null) {
|
|
137
|
-
|
|
138
|
-
if (
|
|
139
|
-
if (e.target.isNode &&
|
|
140
|
-
|
|
82
|
+
const multiSelectionKey = navigator.platform === 'MacIntel' ? 'cmd' : 'ctrl';
|
|
83
|
+
if (this.keyboard.isKeyPressed(multiSelectionKey)) {
|
|
84
|
+
if (e.target.isNode && this.getSelectedEdges().size > 0) {
|
|
85
|
+
this.getSelectedEdges().setSelected(false);
|
|
141
86
|
}
|
|
142
|
-
if (!e.target.isNode &&
|
|
143
|
-
|
|
87
|
+
if (!e.target.isNode && this.getSelectedNodes().size > 0) {
|
|
88
|
+
this.getSelectedNodes().setSelected(false);
|
|
144
89
|
}
|
|
145
90
|
if (e.target.isSelected()) {
|
|
146
91
|
e.target.setSelected(false);
|
|
@@ -150,39 +95,38 @@ var LKOgma = /** @class */ (function (_super) {
|
|
|
150
95
|
}
|
|
151
96
|
}
|
|
152
97
|
else {
|
|
153
|
-
|
|
154
|
-
|
|
98
|
+
this.getSelectedNodes().setSelected(false);
|
|
99
|
+
this.getSelectedEdges().setSelected(false);
|
|
155
100
|
e.target.setSelected(true);
|
|
156
101
|
}
|
|
157
102
|
}
|
|
158
103
|
else {
|
|
159
|
-
|
|
160
|
-
|
|
104
|
+
this.getSelectedNodes().setSelected(false);
|
|
105
|
+
this.getSelectedEdges().setSelected(false);
|
|
161
106
|
}
|
|
162
107
|
}
|
|
163
108
|
});
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
var _a, _b, _c, _d
|
|
109
|
+
}
|
|
110
|
+
setStyles(configuration) {
|
|
111
|
+
var _a, _b, _c, _d;
|
|
167
112
|
this.LKStyles = new styles_1.StylesViz(this, {
|
|
168
|
-
node: ((
|
|
169
|
-
edge: ((
|
|
113
|
+
node: ((_b = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.options) === null || _a === void 0 ? void 0 : _a.styles) === null || _b === void 0 ? void 0 : _b.node) || {},
|
|
114
|
+
edge: ((_d = (_c = configuration === null || configuration === void 0 ? void 0 : configuration.options) === null || _c === void 0 ? void 0 : _c.styles) === null || _d === void 0 ? void 0 : _d.edge) || {}
|
|
170
115
|
});
|
|
171
116
|
this.LKStyles.setNodesDefaultStyles();
|
|
172
117
|
this.LKStyles.setEdgesDefaultStyles();
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
var _a, _b, _c, _d, _e, _f, _g, _h
|
|
176
|
-
|
|
177
|
-
|
|
118
|
+
}
|
|
119
|
+
setCaptions(configuration) {
|
|
120
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
121
|
+
const nodeMaxTextLength = (_d = (_c = (_b = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.options) === null || _a === void 0 ? void 0 : _a.styles) === null || _b === void 0 ? void 0 : _b.node) === null || _c === void 0 ? void 0 : _c.text) === null || _d === void 0 ? void 0 : _d.maxTextLength;
|
|
122
|
+
const edgeMaxTextLength = (_h = (_g = (_f = (_e = configuration === null || configuration === void 0 ? void 0 : configuration.options) === null || _e === void 0 ? void 0 : _e.styles) === null || _f === void 0 ? void 0 : _f.edge) === null || _g === void 0 ? void 0 : _g.text) === null || _h === void 0 ? void 0 : _h.maxTextLength;
|
|
178
123
|
this.LKCaptions = new captions_1.CaptionsViz(this, nodeMaxTextLength, edgeMaxTextLength);
|
|
179
|
-
}
|
|
124
|
+
}
|
|
180
125
|
/**
|
|
181
126
|
* Returns Ogma Layout parameters according to visualization layout settings
|
|
182
127
|
* */
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
var dynamicSteps = 300 - ((300 - 40) / 5000) * this.getNodes().size;
|
|
128
|
+
getForceLayoutParams(mode, duration = 0) {
|
|
129
|
+
let dynamicSteps = 300 - ((300 - 40) / 5000) * this.getNodes().size;
|
|
186
130
|
if (dynamicSteps < 40) {
|
|
187
131
|
dynamicSteps = 40;
|
|
188
132
|
}
|
|
@@ -194,9 +138,8 @@ var LKOgma = /** @class */ (function (_super) {
|
|
|
194
138
|
gravity: 0.08,
|
|
195
139
|
theta: this.getNodes().size > 100 ? 0.8 : 0.34
|
|
196
140
|
};
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
if (duration === void 0) { duration = 0; }
|
|
141
|
+
}
|
|
142
|
+
getRadialLayoutParams(rootNode, duration = 0) {
|
|
200
143
|
return {
|
|
201
144
|
centralNode: rootNode,
|
|
202
145
|
radiusDelta: 1,
|
|
@@ -204,197 +147,164 @@ var LKOgma = /** @class */ (function (_super) {
|
|
|
204
147
|
repulsion: this.getNodes().size > 80 ? 1 : 6,
|
|
205
148
|
duration: duration
|
|
206
149
|
};
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
if (duration === void 0) { duration = 0; }
|
|
150
|
+
}
|
|
151
|
+
getHierarchicalLayoutParams(mode, rootNode, duration = 0) {
|
|
210
152
|
return {
|
|
211
153
|
direction: mode,
|
|
212
154
|
roots: [rootNode],
|
|
213
155
|
duration: duration
|
|
214
156
|
};
|
|
215
|
-
}
|
|
157
|
+
}
|
|
216
158
|
/**
|
|
217
159
|
* Initialize graph.
|
|
218
160
|
* add nodes and edges to the viz and init the selection.
|
|
219
161
|
*/
|
|
220
|
-
|
|
221
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
if (selectedEntityType === undefined || selectedEntityType === rest_client_1.EntityType.NODE) {
|
|
241
|
-
selectedEntityType = rest_client_1.EntityType.EDGE;
|
|
242
|
-
selectedElements = [];
|
|
243
|
-
}
|
|
244
|
-
selectedElements.push(edge.id);
|
|
245
|
-
}
|
|
246
|
-
delete edge.attributes.selected;
|
|
247
|
-
}
|
|
248
|
-
return edge;
|
|
249
|
-
});
|
|
250
|
-
return [4 /*yield*/, this.addGraphAfterValidation({
|
|
251
|
-
nodes: fixedNodes,
|
|
252
|
-
edges: fixedEdges
|
|
253
|
-
})];
|
|
254
|
-
case 1:
|
|
255
|
-
_a.sent();
|
|
256
|
-
if (selectedEntityType === rest_client_1.EntityType.NODE) {
|
|
257
|
-
this.getNodes(selectedElements).setSelected(true);
|
|
258
|
-
}
|
|
259
|
-
else if (selectedEntityType === rest_client_1.EntityType.EDGE) {
|
|
260
|
-
this.getEdges(selectedElements).setSelected(true);
|
|
162
|
+
init(visualization) {
|
|
163
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
164
|
+
this.clearGraph();
|
|
165
|
+
let selectedEntityType = undefined;
|
|
166
|
+
let selectedElements = [];
|
|
167
|
+
// need to remove selected in every items before adding them to Ogma
|
|
168
|
+
const fixedNodes = visualization.nodes.map((node) => {
|
|
169
|
+
if (node.attributes.selected) {
|
|
170
|
+
selectedEntityType = rest_client_1.EntityType.NODE;
|
|
171
|
+
selectedElements.push(node.id);
|
|
172
|
+
}
|
|
173
|
+
delete node.attributes.selected;
|
|
174
|
+
return node;
|
|
175
|
+
});
|
|
176
|
+
const fixedEdges = visualization.edges.map((edge) => {
|
|
177
|
+
if (edge.attributes !== undefined) {
|
|
178
|
+
if (edge.attributes.selected) {
|
|
179
|
+
if (selectedEntityType === undefined || selectedEntityType === rest_client_1.EntityType.NODE) {
|
|
180
|
+
selectedEntityType = rest_client_1.EntityType.EDGE;
|
|
181
|
+
selectedElements = [];
|
|
261
182
|
}
|
|
262
|
-
|
|
183
|
+
selectedElements.push(edge.id);
|
|
184
|
+
}
|
|
185
|
+
delete edge.attributes.selected;
|
|
263
186
|
}
|
|
187
|
+
return edge;
|
|
188
|
+
});
|
|
189
|
+
yield this.addGraphAfterValidation({
|
|
190
|
+
nodes: fixedNodes,
|
|
191
|
+
edges: fixedEdges
|
|
264
192
|
});
|
|
193
|
+
if (selectedEntityType === rest_client_1.EntityType.NODE) {
|
|
194
|
+
this.getNodes(selectedElements).setSelected(true);
|
|
195
|
+
}
|
|
196
|
+
else if (selectedEntityType === rest_client_1.EntityType.EDGE) {
|
|
197
|
+
this.getEdges(selectedElements).setSelected(true);
|
|
198
|
+
}
|
|
265
199
|
});
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
this.LKStyles.initEdgesShape(styles.edge);
|
|
282
|
-
this.LKStyles.initEdgesColor(styles.edge);
|
|
283
|
-
return [4 /*yield*/, this.LKCaptions.initVizCaptions({
|
|
284
|
-
node: visualization.nodeFields.captions || {},
|
|
285
|
-
edge: visualization.edgeFields.captions || {}
|
|
286
|
-
})];
|
|
287
|
-
case 2:
|
|
288
|
-
_a.sent();
|
|
289
|
-
this.LKTransformation.groupedEdges = visualization.edgeGrouping;
|
|
290
|
-
return [4 /*yield*/, this.LKTransformation.initTransformation()];
|
|
291
|
-
case 3:
|
|
292
|
-
_a.sent();
|
|
293
|
-
this.LKTransformation.initEdgeGroupingStyle();
|
|
294
|
-
return [2 /*return*/];
|
|
295
|
-
}
|
|
200
|
+
}
|
|
201
|
+
initVisualization(visualization) {
|
|
202
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
203
|
+
yield this.init(visualization);
|
|
204
|
+
const styles = __1.StyleRules.sanitizeStylesIndex(visualization.design.styles);
|
|
205
|
+
this.LKStyles.initNodeColors(styles.node);
|
|
206
|
+
this.LKStyles.initNodesIcons(styles.node);
|
|
207
|
+
this.LKStyles.initNodesSizes(styles.node);
|
|
208
|
+
this.LKStyles.initNodesShapes(styles.node);
|
|
209
|
+
this.LKStyles.initEdgesWidth(styles.edge);
|
|
210
|
+
this.LKStyles.initEdgesShape(styles.edge);
|
|
211
|
+
this.LKStyles.initEdgesColor(styles.edge);
|
|
212
|
+
yield this.LKCaptions.initVizCaptions({
|
|
213
|
+
node: visualization.nodeFields.captions || {},
|
|
214
|
+
edge: visualization.edgeFields.captions || {}
|
|
296
215
|
});
|
|
216
|
+
this.LKTransformation.groupedEdges = visualization.edgeGrouping;
|
|
217
|
+
yield this.LKTransformation.initTransformation();
|
|
218
|
+
this.LKTransformation.initEdgeGroupingStyle();
|
|
297
219
|
});
|
|
298
|
-
}
|
|
220
|
+
}
|
|
299
221
|
/**
|
|
300
222
|
* Adding nodes then adding edges to the graph
|
|
301
223
|
*/
|
|
302
|
-
|
|
303
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
return [4 /*yield*/, this.addEdges(graph.edges)];
|
|
311
|
-
case 2:
|
|
312
|
-
addedEdges = _a.sent();
|
|
313
|
-
return [2 /*return*/, {
|
|
314
|
-
nodes: addedNodes,
|
|
315
|
-
edges: addedEdges
|
|
316
|
-
}];
|
|
317
|
-
}
|
|
318
|
-
});
|
|
224
|
+
addGraphAfterValidation(graph) {
|
|
225
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
226
|
+
const addedNodes = yield this.addNodes(graph.nodes);
|
|
227
|
+
const addedEdges = yield this.addEdges(graph.edges);
|
|
228
|
+
return {
|
|
229
|
+
nodes: addedNodes,
|
|
230
|
+
edges: addedEdges
|
|
231
|
+
};
|
|
319
232
|
});
|
|
320
|
-
}
|
|
233
|
+
}
|
|
321
234
|
/**
|
|
322
235
|
* Adding edges to the graph after filtering disconnected ones
|
|
323
236
|
*/
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
return _this.getNode(edge.source) !== undefined && _this.getNode(edge.target) !== undefined;
|
|
237
|
+
addEdges(edges, options) {
|
|
238
|
+
const filteredEdges = edges.filter((edge) => {
|
|
239
|
+
return this.getNode(edge.source) !== undefined && this.getNode(edge.target) !== undefined;
|
|
328
240
|
});
|
|
329
|
-
return
|
|
330
|
-
}
|
|
241
|
+
return super.addEdges(filteredEdges, options);
|
|
242
|
+
}
|
|
331
243
|
/**
|
|
332
244
|
* Return the list of non filtered nodes
|
|
333
245
|
*/
|
|
334
|
-
|
|
246
|
+
getNonFilteredNodes(items) {
|
|
335
247
|
return tools_1.Tools.isDefined(items)
|
|
336
|
-
? this.getNodes(items).filter(
|
|
337
|
-
: this.getNodes().filter(
|
|
338
|
-
}
|
|
248
|
+
? this.getNodes(items).filter((i) => !i.hasClass('filtered'))
|
|
249
|
+
: this.getNodes().filter((i) => !i.hasClass('filtered'));
|
|
250
|
+
}
|
|
339
251
|
/**
|
|
340
252
|
* Return the list of filtered nodes
|
|
341
253
|
*/
|
|
342
|
-
|
|
254
|
+
getFilteredNodes(items) {
|
|
343
255
|
return tools_1.Tools.isDefined(items)
|
|
344
|
-
? this.getNodes(items).filter(
|
|
345
|
-
: this.getNodes().filter(
|
|
346
|
-
}
|
|
256
|
+
? this.getNodes(items).filter((i) => i.hasClass('filtered'))
|
|
257
|
+
: this.getNodes().filter((i) => i.hasClass('filtered'));
|
|
258
|
+
}
|
|
347
259
|
/**
|
|
348
260
|
* Return the list of non filtered edges
|
|
349
261
|
*/
|
|
350
|
-
|
|
262
|
+
getNonFilteredEdges(items) {
|
|
351
263
|
return tools_1.Tools.isDefined(items)
|
|
352
|
-
? this.getEdges(items).filter(
|
|
353
|
-
: this.getEdges('raw').filter(
|
|
354
|
-
}
|
|
264
|
+
? this.getEdges(items).filter((i) => !i.hasClass('filtered'))
|
|
265
|
+
: this.getEdges('raw').filter((i) => !i.hasClass('filtered'));
|
|
266
|
+
}
|
|
355
267
|
/**
|
|
356
268
|
* Return the list of filtered edges
|
|
357
269
|
*/
|
|
358
|
-
|
|
359
|
-
if (filter === void 0) { filter = 'raw'; }
|
|
270
|
+
getFilteredEdges(items, filter = 'raw') {
|
|
360
271
|
return tools_1.Tools.isDefined(items)
|
|
361
|
-
? this.getEdges(items).filter(
|
|
362
|
-
: this.getEdges(filter).filter(
|
|
363
|
-
}
|
|
272
|
+
? this.getEdges(items).filter((i) => i.hasClass('filtered'))
|
|
273
|
+
: this.getEdges(filter).filter((i) => i.hasClass('filtered'));
|
|
274
|
+
}
|
|
364
275
|
/**
|
|
365
276
|
* Do a full reset on ogma and streams of ogma
|
|
366
277
|
*/
|
|
367
|
-
|
|
278
|
+
shutDown() {
|
|
368
279
|
this.destroy();
|
|
369
280
|
if (this.store) {
|
|
370
281
|
this.store.clear();
|
|
371
282
|
}
|
|
372
|
-
}
|
|
283
|
+
}
|
|
373
284
|
/**
|
|
374
285
|
* Reset the Ogma instance so that it can be used fresh in the next visulization
|
|
375
286
|
*/
|
|
376
|
-
|
|
287
|
+
clearOgmaState() {
|
|
377
288
|
this.reset();
|
|
378
289
|
if (this.store) {
|
|
379
290
|
this.store.clear();
|
|
380
291
|
}
|
|
381
292
|
this.initOgmaLinkuriousParser();
|
|
382
|
-
}
|
|
293
|
+
}
|
|
383
294
|
/**
|
|
384
295
|
* Updates the Ogma config when config changes in LKE. If init, options were already set by the Ogma.reset()
|
|
385
296
|
*/
|
|
386
|
-
|
|
297
|
+
setConfigOgma(configuration, init) {
|
|
387
298
|
if (configuration) {
|
|
388
299
|
// here we make sure that the internal config object is updated and we have the correct one when resetting
|
|
389
300
|
this._configuration = configuration;
|
|
390
301
|
}
|
|
391
302
|
if (!init) {
|
|
392
|
-
this.setOptions(
|
|
303
|
+
this.setOptions(Object.assign(Object.assign({}, this._configuration.options), { renderer: this._configuration.renderer }));
|
|
393
304
|
}
|
|
394
305
|
this.setStyles(this._configuration);
|
|
395
306
|
this.setCaptions(this._configuration);
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
}(ogma_1.default));
|
|
307
|
+
}
|
|
308
|
+
}
|
|
399
309
|
exports.LKOgma = LKOgma;
|
|
400
310
|
//# sourceMappingURL=index.js.map
|
package/dist/ogma/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ogma/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EntityType,\n ForceLayoutMode,\n HierarchicalLayoutMode,\n IOgmaConfig,\n LkEdgeData,\n LkNodeData,\n PopulatedVisualization,\n VizEdge,\n VizNode\n} from '@linkurious/rest-client';\nimport Ogma, {\n EdgeList,\n ForceLayoutOptions,\n HierarchicalLayoutOptions,\n NodeList,\n NonObjectPropertyWatcher,\n RadialLayoutOptions,\n RawEdge,\n RawGraph,\n RawNode\n} from '@linkurious/ogma';\n\nimport {StyleRules} from '..';\nimport {Tools} from '../tools/tools';\n\nimport {StylesViz} from './features/styles';\nimport {TransformationsViz} from './features/transformations';\nimport {CaptionsViz} from './features/captions';\nimport {RxViz} from './features/reactive';\nimport {OgmaStore} from './features/OgmaStore';\n\nexport {default as Ogma} from '@linkurious/ogma';\nexport const ANIMATION_DURATION = 750;\n\ninterface AddItemOptions {\n batchSize?: number;\n virtual?: boolean;\n}\n\nexport class LKOgma extends Ogma<LkNodeData, LkEdgeData> {\n public LKStyles!: StylesViz;\n public LKCaptions!: CaptionsViz;\n public LKTransformation!: TransformationsViz;\n // Trigger an event with node category changes\n public nodeCategoriesWatcher!: NonObjectPropertyWatcher<LkNodeData, LkEdgeData>;\n // Trigger an event with edge type changes\n public edgeTypeWatcher!: NonObjectPropertyWatcher<LkNodeData, LkEdgeData>;\n public store!: OgmaStore;\n private _reactive!: RxViz;\n\n constructor(private _configuration: IOgmaConfig) {\n // set Ogma global configuration\n super(_configuration);\n Object.setPrototypeOf(this, new.target.prototype);\n this.initOgmaLinkuriousParser(true);\n }\n\n private initOgmaLinkuriousParser(init?: boolean): void {\n this.nodeCategoriesWatcher = this.schema.watchNodeNonObjectProperty({\n path: 'categories',\n unwindArrays: true,\n filter: 'all'\n });\n this.edgeTypeWatcher = this.schema.watchEdgeNonObjectProperty({\n path: 'type',\n filter: 'all'\n });\n // set ogma max zoom value and selection with mouse option (false?)\n this.setOptions({\n interactions: {\n zoom: {\n maxValue: (params: any) => {\n return 128 / params.smallestNodeSize;\n }\n },\n selection: {\n enabled: false\n }\n }\n });\n\n // only instantiate the store once when app is starting\n if (this._reactive === undefined) {\n this._reactive = new RxViz(this);\n this.store = this._reactive.store;\n } else {\n // if store already exist, but ogma was reset, create new ogma event listener\n this._reactive.listenToSelectionEvents();\n }\n this.initSelection();\n this.setConfigOgma(this._configuration, init);\n this.LKTransformation = new TransformationsViz(this);\n\n this.LKStyles.setNodesDefaultHalo();\n this.LKStyles.setEdgesDefaultHalo();\n this.LKStyles.setBadgeRule();\n this.LKStyles.setFilterClass();\n }\n\n /**\n * Initialize selection behavior\n */\n public initSelection(): void {\n this.events.onClick((e) => {\n if (e !== undefined && e.button === 'left') {\n if (e.target !== null) {\n const multiSelectionKey = navigator.platform === 'MacIntel' ? 'cmd' : 'ctrl';\n if (this.keyboard.isKeyPressed(multiSelectionKey)) {\n if (e.target.isNode && this.getSelectedEdges().size > 0) {\n this.getSelectedEdges().setSelected(false);\n }\n if (!e.target.isNode && this.getSelectedNodes().size > 0) {\n this.getSelectedNodes().setSelected(false);\n }\n if (e.target.isSelected()) {\n e.target.setSelected(false);\n } else {\n e.target.setSelected(true);\n }\n } else {\n this.getSelectedNodes().setSelected(false);\n this.getSelectedEdges().setSelected(false);\n e.target.setSelected(true);\n }\n } else {\n this.getSelectedNodes().setSelected(false);\n this.getSelectedEdges().setSelected(false);\n }\n }\n });\n }\n\n private setStyles(configuration: IOgmaConfig): void {\n this.LKStyles = new StylesViz(this, {\n node: configuration?.options?.styles?.node || {},\n edge: configuration?.options?.styles?.edge || {}\n });\n this.LKStyles.setNodesDefaultStyles();\n this.LKStyles.setEdgesDefaultStyles();\n }\n\n private setCaptions(configuration: IOgmaConfig): void {\n const nodeMaxTextLength = configuration?.options?.styles?.node?.text?.maxTextLength;\n const edgeMaxTextLength = configuration?.options?.styles?.edge?.text?.maxTextLength;\n this.LKCaptions = new CaptionsViz(this, nodeMaxTextLength, edgeMaxTextLength);\n }\n\n /**\n * Returns Ogma Layout parameters according to visualization layout settings\n * */\n public getForceLayoutParams(mode: ForceLayoutMode, duration = 0): ForceLayoutOptions {\n let dynamicSteps = 300 - ((300 - 40) / 5000) * this.getNodes().size;\n if (dynamicSteps < 40) {\n dynamicSteps = 40;\n }\n return {\n steps: mode === ForceLayoutMode.FAST ? dynamicSteps : 300,\n alignSiblings: this.getNodes().size > 3,\n duration: duration,\n charge: 20,\n gravity: 0.08,\n theta: this.getNodes().size > 100 ? 0.8 : 0.34\n };\n }\n\n public getRadialLayoutParams(\n rootNode: string,\n duration = 0\n ): RadialLayoutOptions<unknown, unknown> {\n return {\n centralNode: rootNode,\n radiusDelta: 1,\n nodeGap: 10,\n repulsion: this.getNodes().size > 80 ? 1 : 6,\n duration: duration\n };\n }\n\n public getHierarchicalLayoutParams(\n mode: HierarchicalLayoutMode,\n rootNode: string,\n duration = 0\n ): HierarchicalLayoutOptions {\n return {\n direction: mode,\n roots: [rootNode],\n duration: duration\n };\n }\n\n /**\n * Initialize graph.\n * add nodes and edges to the viz and init the selection.\n */\n public async init(visualization: {nodes: Array<VizNode>; edges: Array<VizEdge>}): Promise<void> {\n this.clearGraph();\n let selectedEntityType: EntityType | undefined = undefined;\n let selectedElements: Array<string> = [];\n // need to remove selected in every items before adding them to Ogma\n const fixedNodes = visualization.nodes.map((node) => {\n if (node.attributes.selected) {\n selectedEntityType = EntityType.NODE;\n selectedElements.push(node.id);\n }\n delete node.attributes.selected;\n return node;\n });\n const fixedEdges = visualization.edges.map((edge) => {\n if (edge.attributes !== undefined) {\n if (edge.attributes.selected) {\n if (selectedEntityType === undefined || selectedEntityType === EntityType.NODE) {\n selectedEntityType = EntityType.EDGE;\n selectedElements = [];\n }\n selectedElements.push(edge.id);\n }\n delete edge.attributes.selected;\n }\n return edge;\n });\n await this.addGraphAfterValidation({\n nodes: fixedNodes as Array<RawNode<LkNodeData>>,\n edges: fixedEdges as Array<RawEdge<LkEdgeData>>\n });\n if (selectedEntityType === EntityType.NODE) {\n this.getNodes(selectedElements).setSelected(true);\n } else if (selectedEntityType === EntityType.EDGE) {\n this.getEdges(selectedElements).setSelected(true);\n }\n }\n\n public async initVisualization(visualization: PopulatedVisualization): Promise<void> {\n await this.init(visualization);\n const styles = StyleRules.sanitizeStylesIndex(visualization.design.styles);\n this.LKStyles.initNodeColors(styles.node);\n this.LKStyles.initNodesIcons(styles.node);\n this.LKStyles.initNodesSizes(styles.node);\n this.LKStyles.initNodesShapes(styles.node);\n this.LKStyles.initEdgesWidth(styles.edge);\n this.LKStyles.initEdgesShape(styles.edge);\n this.LKStyles.initEdgesColor(styles.edge);\n await this.LKCaptions.initVizCaptions({\n node: visualization.nodeFields.captions || {},\n edge: visualization.edgeFields.captions || {}\n });\n this.LKTransformation.groupedEdges = visualization.edgeGrouping;\n await this.LKTransformation.initTransformation();\n this.LKTransformation.initEdgeGroupingStyle();\n }\n\n /**\n * Adding nodes then adding edges to the graph\n */\n public async addGraphAfterValidation(\n graph: RawGraph<LkNodeData, LkEdgeData>\n ): Promise<{\n nodes: NodeList<LkNodeData>;\n edges: EdgeList<LkEdgeData>;\n }> {\n const addedNodes = await this.addNodes(graph.nodes);\n const addedEdges = await this.addEdges(graph.edges);\n return {\n nodes: addedNodes,\n edges: addedEdges\n };\n }\n\n /**\n * Adding edges to the graph after filtering disconnected ones\n */\n public addEdges(edges: Array<RawEdge<LkEdgeData>>, options?: AddItemOptions): Promise<EdgeList> {\n const filteredEdges = edges.filter((edge) => {\n return this.getNode(edge.source) !== undefined && this.getNode(edge.target) !== undefined;\n });\n return super.addEdges(filteredEdges, options);\n }\n\n /**\n * Return the list of non filtered nodes\n */\n public getNonFilteredNodes(items?: Array<any>): NodeList<LkNodeData, LkEdgeData> {\n return Tools.isDefined(items)\n ? this.getNodes(items).filter((i) => !i.hasClass('filtered'))\n : this.getNodes().filter((i) => !i.hasClass('filtered'));\n }\n\n /**\n * Return the list of filtered nodes\n */\n public getFilteredNodes(items?: Array<any>): NodeList<LkNodeData, LkEdgeData> {\n return Tools.isDefined(items)\n ? this.getNodes(items).filter((i) => i.hasClass('filtered'))\n : this.getNodes().filter((i) => i.hasClass('filtered'));\n }\n\n /**\n * Return the list of non filtered edges\n */\n public getNonFilteredEdges(items?: Array<any>): EdgeList<LkEdgeData, LkNodeData> {\n return Tools.isDefined(items)\n ? this.getEdges(items).filter((i) => !i.hasClass('filtered'))\n : this.getEdges('raw').filter((i) => !i.hasClass('filtered'));\n }\n\n /**\n * Return the list of filtered edges\n */\n public getFilteredEdges(\n items?: Array<any>,\n filter: 'visible' | 'raw' | 'all' = 'raw'\n ): EdgeList<LkEdgeData, LkNodeData> {\n return Tools.isDefined(items)\n ? this.getEdges(items).filter((i) => i.hasClass('filtered'))\n : this.getEdges(filter).filter((i) => i.hasClass('filtered'));\n }\n\n /**\n * Do a full reset on ogma and streams of ogma\n */\n public shutDown(): void {\n this.destroy();\n if (this.store) {\n this.store.clear();\n }\n }\n\n /**\n * Reset the Ogma instance so that it can be used fresh in the next visulization\n */\n public clearOgmaState(): void {\n this.reset();\n if (this.store) {\n this.store.clear();\n }\n this.initOgmaLinkuriousParser();\n }\n\n /**\n * Updates the Ogma config when config changes in LKE. If init, options were already set by the Ogma.reset()\n */\n public setConfigOgma(configuration?: IOgmaConfig, init?: boolean): void {\n if (configuration) {\n // here we make sure that the internal config object is updated and we have the correct one when resetting\n this._configuration = configuration;\n }\n if (!init) {\n this.setOptions({\n ...this._configuration.options,\n renderer: this._configuration.renderer\n });\n }\n this.setStyles(this._configuration);\n this.setCaptions(this._configuration);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ogma/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EntityType,\n ForceLayoutMode,\n HierarchicalLayoutMode,\n IOgmaConfig,\n LkEdgeData,\n LkNodeData,\n PopulatedVisualization,\n VizEdge,\n VizNode\n} from '@linkurious/rest-client';\nimport Ogma, {\n EdgeList,\n ForceLayoutOptions,\n HierarchicalLayoutOptions,\n NodeList,\n NonObjectPropertyWatcher,\n RadialLayoutOptions,\n RawEdge,\n RawGraph,\n RawNode\n} from '@linkurious/ogma';\n\nimport {StyleRules} from '..';\nimport {Tools} from '../tools/tools';\n\nimport {StylesViz} from './features/styles';\nimport {TransformationsViz} from './features/transformations';\nimport {CaptionsViz} from './features/captions';\nimport {RxViz} from './features/reactive';\nimport {OgmaStore} from './features/OgmaStore';\n\nexport {default as Ogma} from '@linkurious/ogma';\nexport const ANIMATION_DURATION = 750;\n\ninterface AddItemOptions {\n batchSize?: number;\n virtual?: boolean;\n}\n\nexport class LKOgma extends Ogma<LkNodeData, LkEdgeData> {\n public LKStyles!: StylesViz;\n public LKCaptions!: CaptionsViz;\n public LKTransformation!: TransformationsViz;\n // Trigger an event with node category changes\n public nodeCategoriesWatcher!: NonObjectPropertyWatcher<LkNodeData, LkEdgeData>;\n // Trigger an event with edge type changes\n public edgeTypeWatcher!: NonObjectPropertyWatcher<LkNodeData, LkEdgeData>;\n public store!: OgmaStore;\n private _reactive!: RxViz;\n\n constructor(private _configuration: IOgmaConfig) {\n // set Ogma global configuration\n super(_configuration);\n Object.setPrototypeOf(this, new.target.prototype);\n this.initOgmaLinkuriousParser(true);\n }\n\n private initOgmaLinkuriousParser(init?: boolean): void {\n this.nodeCategoriesWatcher = this.schema.watchNodeNonObjectProperty({\n path: 'categories',\n unwindArrays: true,\n filter: 'all'\n });\n this.edgeTypeWatcher = this.schema.watchEdgeNonObjectProperty({\n path: 'type',\n filter: 'all'\n });\n // set ogma max zoom value and selection with mouse option (false?)\n this.setOptions({\n interactions: {\n zoom: {\n maxValue: (params: any) => {\n return 128 / params.smallestNodeSize;\n }\n },\n selection: {\n enabled: false\n }\n }\n });\n\n // only instantiate the store once when app is starting\n if (this._reactive === undefined) {\n this._reactive = new RxViz(this);\n this.store = this._reactive.store;\n } else {\n // if store already exist, but ogma was reset, create new ogma event listener\n this._reactive.listenToSelectionEvents();\n }\n this.initSelection();\n this.setConfigOgma(this._configuration, init);\n this.LKTransformation = new TransformationsViz(this);\n\n this.LKStyles.setNodesDefaultHalo();\n this.LKStyles.setEdgesDefaultHalo();\n this.LKStyles.setBadgeRule();\n this.LKStyles.setFilterClass();\n }\n\n /**\n * Initialize selection behavior\n */\n public initSelection(): void {\n this.events.onClick((e) => {\n if (e !== undefined && e.button === 'left') {\n if (e.target !== null) {\n const multiSelectionKey = navigator.platform === 'MacIntel' ? 'cmd' : 'ctrl';\n if (this.keyboard.isKeyPressed(multiSelectionKey)) {\n if (e.target.isNode && this.getSelectedEdges().size > 0) {\n this.getSelectedEdges().setSelected(false);\n }\n if (!e.target.isNode && this.getSelectedNodes().size > 0) {\n this.getSelectedNodes().setSelected(false);\n }\n if (e.target.isSelected()) {\n e.target.setSelected(false);\n } else {\n e.target.setSelected(true);\n }\n } else {\n this.getSelectedNodes().setSelected(false);\n this.getSelectedEdges().setSelected(false);\n e.target.setSelected(true);\n }\n } else {\n this.getSelectedNodes().setSelected(false);\n this.getSelectedEdges().setSelected(false);\n }\n }\n });\n }\n\n private setStyles(configuration: IOgmaConfig): void {\n this.LKStyles = new StylesViz(this, {\n node: configuration?.options?.styles?.node || {},\n edge: configuration?.options?.styles?.edge || {}\n });\n this.LKStyles.setNodesDefaultStyles();\n this.LKStyles.setEdgesDefaultStyles();\n }\n\n private setCaptions(configuration: IOgmaConfig): void {\n const nodeMaxTextLength = configuration?.options?.styles?.node?.text?.maxTextLength;\n const edgeMaxTextLength = configuration?.options?.styles?.edge?.text?.maxTextLength;\n this.LKCaptions = new CaptionsViz(this, nodeMaxTextLength, edgeMaxTextLength);\n }\n\n /**\n * Returns Ogma Layout parameters according to visualization layout settings\n * */\n public getForceLayoutParams(mode: ForceLayoutMode, duration = 0): ForceLayoutOptions {\n let dynamicSteps = 300 - ((300 - 40) / 5000) * this.getNodes().size;\n if (dynamicSteps < 40) {\n dynamicSteps = 40;\n }\n return {\n steps: mode === ForceLayoutMode.FAST ? dynamicSteps : 300,\n alignSiblings: this.getNodes().size > 3,\n duration: duration,\n charge: 20,\n gravity: 0.08,\n theta: this.getNodes().size > 100 ? 0.8 : 0.34\n };\n }\n\n public getRadialLayoutParams(\n rootNode: string,\n duration = 0\n ): RadialLayoutOptions<unknown, unknown> {\n return {\n centralNode: rootNode,\n radiusDelta: 1,\n nodeGap: 10,\n repulsion: this.getNodes().size > 80 ? 1 : 6,\n duration: duration\n };\n }\n\n public getHierarchicalLayoutParams(\n mode: HierarchicalLayoutMode,\n rootNode: string,\n duration = 0\n ): HierarchicalLayoutOptions {\n return {\n direction: mode,\n roots: [rootNode],\n duration: duration\n };\n }\n\n /**\n * Initialize graph.\n * add nodes and edges to the viz and init the selection.\n */\n public async init(visualization: {nodes: Array<VizNode>; edges: Array<VizEdge>}): Promise<void> {\n this.clearGraph();\n let selectedEntityType: EntityType | undefined = undefined;\n let selectedElements: Array<string> = [];\n // need to remove selected in every items before adding them to Ogma\n const fixedNodes = visualization.nodes.map((node) => {\n if (node.attributes.selected) {\n selectedEntityType = EntityType.NODE;\n selectedElements.push(node.id);\n }\n delete node.attributes.selected;\n return node;\n });\n const fixedEdges = visualization.edges.map((edge) => {\n if (edge.attributes !== undefined) {\n if (edge.attributes.selected) {\n if (selectedEntityType === undefined || selectedEntityType === EntityType.NODE) {\n selectedEntityType = EntityType.EDGE;\n selectedElements = [];\n }\n selectedElements.push(edge.id);\n }\n delete edge.attributes.selected;\n }\n return edge;\n });\n await this.addGraphAfterValidation({\n nodes: fixedNodes as Array<RawNode<LkNodeData>>,\n edges: fixedEdges as Array<RawEdge<LkEdgeData>>\n });\n if (selectedEntityType === EntityType.NODE) {\n this.getNodes(selectedElements).setSelected(true);\n } else if (selectedEntityType === EntityType.EDGE) {\n this.getEdges(selectedElements).setSelected(true);\n }\n }\n\n public async initVisualization(visualization: PopulatedVisualization): Promise<void> {\n await this.init(visualization);\n const styles = StyleRules.sanitizeStylesIndex(visualization.design.styles);\n this.LKStyles.initNodeColors(styles.node);\n this.LKStyles.initNodesIcons(styles.node);\n this.LKStyles.initNodesSizes(styles.node);\n this.LKStyles.initNodesShapes(styles.node);\n this.LKStyles.initEdgesWidth(styles.edge);\n this.LKStyles.initEdgesShape(styles.edge);\n this.LKStyles.initEdgesColor(styles.edge);\n await this.LKCaptions.initVizCaptions({\n node: visualization.nodeFields.captions || {},\n edge: visualization.edgeFields.captions || {}\n });\n this.LKTransformation.groupedEdges = visualization.edgeGrouping;\n await this.LKTransformation.initTransformation();\n this.LKTransformation.initEdgeGroupingStyle();\n }\n\n /**\n * Adding nodes then adding edges to the graph\n */\n public async addGraphAfterValidation(\n graph: RawGraph<LkNodeData, LkEdgeData>\n ): Promise<{\n nodes: NodeList<LkNodeData>;\n edges: EdgeList<LkEdgeData>;\n }> {\n const addedNodes = await this.addNodes(graph.nodes);\n const addedEdges = await this.addEdges(graph.edges);\n return {\n nodes: addedNodes,\n edges: addedEdges\n };\n }\n\n /**\n * Adding edges to the graph after filtering disconnected ones\n */\n public addEdges(edges: Array<RawEdge<LkEdgeData>>, options?: AddItemOptions): Promise<EdgeList> {\n const filteredEdges = edges.filter((edge) => {\n return this.getNode(edge.source) !== undefined && this.getNode(edge.target) !== undefined;\n });\n return super.addEdges(filteredEdges, options);\n }\n\n /**\n * Return the list of non filtered nodes\n */\n public getNonFilteredNodes(items?: Array<any>): NodeList<LkNodeData, LkEdgeData> {\n return Tools.isDefined(items)\n ? this.getNodes(items).filter((i) => !i.hasClass('filtered'))\n : this.getNodes().filter((i) => !i.hasClass('filtered'));\n }\n\n /**\n * Return the list of filtered nodes\n */\n public getFilteredNodes(items?: Array<any>): NodeList<LkNodeData, LkEdgeData> {\n return Tools.isDefined(items)\n ? this.getNodes(items).filter((i) => i.hasClass('filtered'))\n : this.getNodes().filter((i) => i.hasClass('filtered'));\n }\n\n /**\n * Return the list of non filtered edges\n */\n public getNonFilteredEdges(items?: Array<any>): EdgeList<LkEdgeData, LkNodeData> {\n return Tools.isDefined(items)\n ? this.getEdges(items).filter((i) => !i.hasClass('filtered'))\n : this.getEdges('raw').filter((i) => !i.hasClass('filtered'));\n }\n\n /**\n * Return the list of filtered edges\n */\n public getFilteredEdges(\n items?: Array<any>,\n filter: 'visible' | 'raw' | 'all' = 'raw'\n ): EdgeList<LkEdgeData, LkNodeData> {\n return Tools.isDefined(items)\n ? this.getEdges(items).filter((i) => i.hasClass('filtered'))\n : this.getEdges(filter).filter((i) => i.hasClass('filtered'));\n }\n\n /**\n * Do a full reset on ogma and streams of ogma\n */\n public shutDown(): void {\n this.destroy();\n if (this.store) {\n this.store.clear();\n }\n }\n\n /**\n * Reset the Ogma instance so that it can be used fresh in the next visulization\n */\n public clearOgmaState(): void {\n this.reset();\n if (this.store) {\n this.store.clear();\n }\n this.initOgmaLinkuriousParser();\n }\n\n /**\n * Updates the Ogma config when config changes in LKE. If init, options were already set by the Ogma.reset()\n */\n public setConfigOgma(configuration?: IOgmaConfig, init?: boolean): void {\n if (configuration) {\n // here we make sure that the internal config object is updated and we have the correct one when resetting\n this._configuration = configuration;\n }\n if (!init) {\n this.setOptions({\n ...this._configuration.options,\n renderer: this._configuration.renderer\n });\n }\n this.setStyles(this._configuration);\n this.setCaptions(this._configuration);\n }\n}\n"]}
|