@@ -233,7 +233,7 @@ export function availableFilters(schema, currentFilters, blacklist) {
233
233
return available ;
234
234
}
235
235
236
- export function findRelatedClasses ( referClass , allClasses , blacklist , currentFilters ) {
236
+ export function findRelatedClasses ( referClass , allClasses , blacklist , currentFilters ) {
237
237
const relatedClasses = { } ;
238
238
if ( allClasses [ referClass ] ) {
239
239
const availableForRefer = availableFilters ( allClasses [ referClass ] , currentFilters , blacklist ) ;
@@ -243,31 +243,42 @@ export function findRelatedClasses(referClass , allClasses, blacklist, currentFi
243
243
}
244
244
245
245
for ( const className in allClasses ) {
246
- if ( className === referClass ) {
246
+ if ( className === referClass ) {
247
247
continue ;
248
248
}
249
249
250
- if ( ! checkRelation ( referClass , allClasses [ className ] ) ) {
250
+ if ( ! checkRelation ( referClass , allClasses , className ) ) {
251
251
continue ;
252
252
}
253
+
253
254
const schema = allClasses [ className ] ;
254
255
const available = availableFilters ( schema , currentFilters , blacklist ) ;
255
256
if ( Object . keys ( available ) . length > 0 ) {
256
257
relatedClasses [ className ] = available ;
257
258
}
258
259
}
259
-
260
260
return relatedClasses ;
261
261
}
262
262
263
- function checkRelation ( classname , schema ) {
264
- for ( const col in schema ) {
265
- if ( schema [ col ] . type === 'Pointer' && schema [ col ] . targetClass === classname ) {
266
- return true ;
263
+ const checkRelationHelper = ( schema , col , className ) =>
264
+ schema [ col ] . type === 'Pointer' && schema [ col ] . targetClass === className ;
265
+
266
+ function checkRelation ( currentClassname , schemas , classToReferName ) {
267
+ const currentClassSchema = schemas [ currentClassname ] ;
268
+ const classSchemaBeingCheckedToRefer = schemas [ classToReferName ] ;
269
+ let flag = false ;
270
+
271
+ for ( const col in currentClassSchema ) {
272
+ if ( checkRelationHelper ( currentClassSchema , col , classToReferName ) ) {
273
+ flag = true ;
267
274
}
268
275
}
269
- return false ;
270
-
276
+ for ( const col in classSchemaBeingCheckedToRefer ) {
277
+ if ( checkRelationHelper ( classSchemaBeingCheckedToRefer , col , currentClassname ) ) {
278
+ flag = true ;
279
+ }
280
+ }
281
+ return flag ;
271
282
}
272
283
273
284
export const BLACKLISTED_FILTERS = [ 'containsAny' , 'doesNotContainAny' ] ;
0 commit comments