@@ -112,6 +112,7 @@ ClassView.prototype.renderInfoGraphic = function () {
112
112
classes : {
113
113
"Shared object" : {
114
114
super : "Super object" ,
115
+ classType : "Serial" ,
115
116
parameters : {
116
117
"Also inherit Super object" : { }
117
118
} ,
@@ -189,11 +190,15 @@ ClassView.prototype.renderInfoGraphic = function () {
189
190
}
190
191
} ,
191
192
"Super object" : {
193
+ classType : "Persistent" ,
192
194
methods : { } ,
193
195
properties : { } ,
194
- parameters : { }
196
+ parameters : {
197
+ "(This class is %Persistent)" : { }
198
+ }
195
199
} ,
196
200
"HELP" : {
201
+ classType : "Registered" ,
197
202
parameters : {
198
203
"See the basics here!" : { }
199
204
}
@@ -216,20 +221,73 @@ ClassView.prototype.renderInfoGraphic = function () {
216
221
217
222
} ;
218
223
224
+ /**
225
+ * Filter some inherits.
226
+ *
227
+ * @param data
228
+ */
229
+ ClassView . prototype . filterInherits = function ( data ) {
230
+
231
+ if ( ! data || ! data . inheritance ) return ;
232
+
233
+ var p1 , p2 , filter = {
234
+ "%Library.Persistent" : true ,
235
+ "%Persistent" : true ,
236
+ "%Library.SerialObject" : true ,
237
+ "%SerialObject" : true ,
238
+ "%Library.RegisteredObject" : true ,
239
+ "%RegisteredObject" : true ,
240
+ "%Library.DataType" : true ,
241
+ "%DataType" : true
242
+ } ;
243
+
244
+ for ( p1 in data . inheritance ) { // classes
245
+ for ( p2 in data . inheritance [ p1 ] ) { // inherits
246
+ if ( filter . hasOwnProperty ( p2 ) ) delete data . inheritance [ p1 ] [ p2 ] ;
247
+ }
248
+ }
249
+
250
+ for ( p1 in data . classes ) {
251
+ if ( filter . hasOwnProperty ( p1 ) ) delete data . classes [ p1 ] ;
252
+ }
253
+
254
+ } ;
255
+
219
256
/**
220
257
* Returns array of signs to render or empry array.
221
258
*
222
259
* @param classMetaData
223
260
*/
224
- ClassView . prototype . getClassSigns = function ( classMetaData ) {
261
+ ClassView . prototype . getClassSignsAndType = function ( classMetaData ) {
225
262
226
- var signs = [ ] ;
263
+ var signs = [ ] , sup = lib . obj ( ( classMetaData [ "super" ] || "" ) . split ( "," ) ) , ct , CT = "NORMAL" ;
227
264
228
- if ( classMetaData [ "classType" ] ) signs . push ( {
229
- icon : lib . image . greenPill ,
230
- text : lib . capitalize ( classMetaData [ "classType" ] ) ,
231
- textStyle : "fill:rgb(130,0,255)"
232
- } ) ;
265
+ if ( classMetaData [ "classType" ] || sup ) {
266
+ ct = classMetaData [ "classType" ] ;
267
+ if ( sup . hasOwnProperty ( "%Library.Persistent" ) || sup . hasOwnProperty ( "%Persistent" ) ) {
268
+ ct = "Persistent" ;
269
+ }
270
+ if ( sup . hasOwnProperty ( "%Library.SerialObject" ) || sup . hasOwnProperty ( "%SerialObject" ) ) {
271
+ ct = "Serial" ;
272
+ }
273
+ if (
274
+ sup . hasOwnProperty ( "%Library.RegisteredObject" )
275
+ || sup . hasOwnProperty ( "%RegisteredObject" )
276
+ ) {
277
+ ct = "Registered" ;
278
+ }
279
+ if ( sup . hasOwnProperty ( "%Library.DataType" ) || sup . hasOwnProperty ( "%DataType" ) ) {
280
+ ct = "Datatype" ;
281
+ }
282
+ if ( ct ) {
283
+ CT = ct ;
284
+ signs . push ( {
285
+ icon : lib . image . greenPill ,
286
+ text : lib . capitalize ( ct ) ,
287
+ textStyle : "fill:rgb(130,0,255)"
288
+ } ) ;
289
+ }
290
+ }
233
291
if ( classMetaData [ "ABSTRACT" ] ) signs . push ( {
234
292
icon : lib . image . crystalBall ,
235
293
text : "Abstract" ,
@@ -253,7 +311,7 @@ ClassView.prototype.getClassSigns = function (classMetaData) {
253
311
text : "Hidden"
254
312
} ) ;
255
313
256
- return signs ;
314
+ return { signs : signs , classType : CT } ;
257
315
258
316
} ;
259
317
@@ -291,6 +349,7 @@ ClassView.prototype.createClassInstance = function (name, classMetaData) {
291
349
classProps = classMetaData [ "properties" ] ,
292
350
classMethods = classMetaData [ "methods" ] ,
293
351
keyWordsArray = [ name ] ,
352
+ signsAndType ,
294
353
self = this ;
295
354
296
355
var classInstance = new joint . shapes . uml . Class ( {
@@ -341,7 +400,8 @@ ClassView.prototype.createClassInstance = function (name, classMetaData) {
341
400
}
342
401
return arr ;
343
402
} ) ( classMethods ) ,
344
- classSigns : this . getClassSigns ( classMetaData ) ,
403
+ classSigns : ( signsAndType = this . getClassSignsAndType ( classMetaData ) ) . signs ,
404
+ classType : signsAndType . classType ,
345
405
SYMBOL_12_WIDTH : self . SYMBOL_12_WIDTH
346
406
} ) ;
347
407
@@ -444,6 +504,8 @@ ClassView.prototype.confirmRender = function (data) {
444
504
uml = joint . shapes . uml , relFrom , relTo ,
445
505
classes = { } , connector ;
446
506
507
+ this . filterInherits ( data ) ;
508
+
447
509
// Reset view and zoom again because it may cause visual damage to icons.
448
510
// Don't ask me why. Just believe we need this peace of code.
449
511
this . zoom ( null ) ;
0 commit comments