@@ -49,9 +49,9 @@ export class DgmlParser {
49
49
directedGraph . styles = this . convertXmlToStyles ( xmlNode . children ) ;
50
50
}
51
51
} ) ;
52
+ this . addStylingToCategories ( directedGraph ) ;
52
53
this . addCategoryStylingToNodes ( directedGraph ) ;
53
54
this . addCategoryStylingToLinks ( directedGraph ) ;
54
- this . addStylingToCategories ( directedGraph ) ;
55
55
}
56
56
return directedGraph ;
57
57
}
@@ -331,56 +331,58 @@ export class DgmlParser {
331
331
style . condition . expression !== undefined &&
332
332
style . setters !== undefined &&
333
333
style . setters . length > 0 ) {
334
- const regex = / H a s C a t e g o r y \( [ ' " ] ( \w + ) [ ' " ] \) + / ig;
334
+ const regex = / H a s C a t e g o r y \( [ ' " ] ( . + ) [ ' " ] \) + / ig;
335
335
const match = regex . exec ( style . condition . expression ) ;
336
336
if ( match ) {
337
337
const categoryName = match [ 1 ] ;
338
- const category = directedGraph . categories . find ( category => category . id . toLowerCase ( ) === categoryName . toLowerCase ( ) ) ;
339
- if ( category ) {
340
- style . setters . forEach ( setter => {
341
- if ( setter . property !== undefined ) {
342
- if ( setter . property . toLowerCase ( ) === 'stroke' ) {
343
- category . stroke = setter . value ;
344
- }
345
- if ( setter . property . toLowerCase ( ) === 'strokethickness' ) {
346
- category . strokeThickness = setter . value ;
347
- }
348
- if ( setter . property . toLowerCase ( ) === 'strokedasharray' ) {
349
- category . strokeDashArray = setter . value ;
350
- }
351
- if ( setter . property . toLowerCase ( ) === 'strokedasharray' ) {
352
- category . strokeDashArray = setter . value ;
353
- }
354
- if ( setter . property . toLowerCase ( ) === 'fontfamily' ) {
355
- category . fontFamily = setter . value ;
356
- }
357
- if ( setter . property . toLowerCase ( ) === 'fontsize' ) {
358
- category . fontSize = + setter . value ;
359
- }
360
- if ( setter . property . toLowerCase ( ) === 'fontstyle' ) {
361
- category . fontStyle = setter . value ;
362
- }
363
- if ( setter . property . toLowerCase ( ) === 'fontweight' ) {
364
- category . fontWeight = setter . value ;
365
- }
366
- if ( setter . property . toLowerCase ( ) === 'background' ) {
367
- category . background = setter . value ;
368
- }
369
- if ( setter . property . toLowerCase ( ) === 'horizontalalignment' ) {
370
- category . horizontalAlignment = setter . value ;
371
- }
372
- if ( setter . property . toLowerCase ( ) === 'verticalalignment' ) {
373
- category . verticalAlignment = setter . value ;
374
- }
375
- if ( setter . property . toLowerCase ( ) === 'minwidth' ) {
376
- category . minWidth = + setter . value ;
377
- }
378
- if ( setter . property . toLowerCase ( ) === 'maxwidth' ) {
379
- category . maxWidth = + setter . value ;
380
- }
381
- }
382
- } ) ;
338
+ let category = directedGraph . categories . find ( category => category . id . toLowerCase ( ) === categoryName . toLowerCase ( ) ) ;
339
+ if ( ! category ) {
340
+ category = { id : categoryName } ;
341
+ directedGraph . categories . push ( category ) ;
383
342
}
343
+ style . setters . forEach ( setter => {
344
+ if ( category && setter . property !== undefined ) {
345
+ if ( setter . property . toLowerCase ( ) === 'stroke' ) {
346
+ category . stroke = setter . value ;
347
+ }
348
+ if ( setter . property . toLowerCase ( ) === 'strokethickness' ) {
349
+ category . strokeThickness = setter . value ;
350
+ }
351
+ if ( setter . property . toLowerCase ( ) === 'strokedasharray' ) {
352
+ category . strokeDashArray = setter . value ;
353
+ }
354
+ if ( setter . property . toLowerCase ( ) === 'strokedasharray' ) {
355
+ category . strokeDashArray = setter . value ;
356
+ }
357
+ if ( setter . property . toLowerCase ( ) === 'fontfamily' ) {
358
+ category . fontFamily = setter . value ;
359
+ }
360
+ if ( setter . property . toLowerCase ( ) === 'fontsize' ) {
361
+ category . fontSize = + setter . value ;
362
+ }
363
+ if ( setter . property . toLowerCase ( ) === 'fontstyle' ) {
364
+ category . fontStyle = setter . value ;
365
+ }
366
+ if ( setter . property . toLowerCase ( ) === 'fontweight' ) {
367
+ category . fontWeight = setter . value ;
368
+ }
369
+ if ( setter . property . toLowerCase ( ) === 'background' ) {
370
+ category . background = setter . value ;
371
+ }
372
+ if ( setter . property . toLowerCase ( ) === 'horizontalalignment' ) {
373
+ category . horizontalAlignment = setter . value ;
374
+ }
375
+ if ( setter . property . toLowerCase ( ) === 'verticalalignment' ) {
376
+ category . verticalAlignment = setter . value ;
377
+ }
378
+ if ( setter . property . toLowerCase ( ) === 'minwidth' ) {
379
+ category . minWidth = + setter . value ;
380
+ }
381
+ if ( setter . property . toLowerCase ( ) === 'maxwidth' ) {
382
+ category . maxWidth = + setter . value ;
383
+ }
384
+ }
385
+ } ) ;
384
386
}
385
387
}
386
388
} ) ;
0 commit comments