@@ -1031,6 +1031,12 @@ export default class DataBrowser extends React.Component {
10311031
10321032 const menuItems = [ ] ;
10331033
1034+ // Add "Get related records from..." menu item
1035+ const relatedRecordsMenuItem = this . getRelatedObjectsMenuItemForPanel ( objectId , className ) ;
1036+ if ( relatedRecordsMenuItem ) {
1037+ menuItems . push ( relatedRecordsMenuItem ) ;
1038+ }
1039+
10341040 // Add Scripts menu if there are valid scripts
10351041 if ( validScripts . length && this . props . onEditSelectedRow ) {
10361042 menuItems . push ( {
@@ -1067,6 +1073,45 @@ export default class DataBrowser extends React.Component {
10671073 }
10681074 }
10691075
1076+ getRelatedObjectsMenuItemForPanel ( objectId , pointerClassName ) {
1077+ const { schema, onPointerClick } = this . props ;
1078+
1079+ if ( ! pointerClassName || ! schema || ! onPointerClick ) {
1080+ return undefined ;
1081+ }
1082+
1083+ const relatedRecordsMenuItem = {
1084+ text : 'Get related records from...' ,
1085+ items : [ ] ,
1086+ } ;
1087+
1088+ schema . data
1089+ . get ( 'classes' )
1090+ . sortBy ( ( v , k ) => k )
1091+ . forEach ( ( cl , className ) => {
1092+ cl . forEach ( ( column , field ) => {
1093+ if ( column . targetClass !== pointerClassName ) {
1094+ return ;
1095+ }
1096+ relatedRecordsMenuItem . items . push ( {
1097+ text : `${ className } ` ,
1098+ subtext : `${ field } ` ,
1099+ callback : ( ) => {
1100+ const relatedObject = new Parse . Object ( pointerClassName ) ;
1101+ relatedObject . id = objectId ;
1102+ onPointerClick ( {
1103+ className,
1104+ id : relatedObject . toPointer ( ) ,
1105+ field,
1106+ } ) ;
1107+ } ,
1108+ } ) ;
1109+ } ) ;
1110+ } ) ;
1111+
1112+ return relatedRecordsMenuItem . items . length ? relatedRecordsMenuItem : undefined ;
1113+ }
1114+
10701115 freezeColumns ( index ) {
10711116 this . setState ( { frozenColumnIndex : index } ) ;
10721117 }
0 commit comments