mirror of
				https://github.com/datahub-project/datahub.git
				synced 2025-10-31 10:49:00 +00:00 
			
		
		
		
	 843a6c5bbb
			
		
	
	
		843a6c5bbb
		
			
		
	
	
	
	
		
			
			* Releases updated version of datahub-web client UI code * Fix typo in yarn lock * Change yarn lock to match yarn registry directories * Previous commit missed some paths * Even more changes to yarnlock missing in previous commit * Include codegen file for typings * Add files to get parity for datahub-web and current OS datahub-midtier * Add in typo fix from previous commit - change to proper license * Implement proper OS fix for person entity picture url * Workarounds for open source DH issues * Fixes institutional memory api and removes unopensourced tabs for datasets * Fixes search dataset deprecation and user search issue as a result of changes * Remove internal only options in the avatar menu
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import Component from '@glimmer/component';
 | |
| import { IDynamicComponent } from '@datahub/shared/types/dynamic-component';
 | |
| import { get } from '@ember/object';
 | |
| import { IEntityDiscriminator } from '@datahub/data-models/types/entity/rendering/page-components';
 | |
| 
 | |
| /**
 | |
|  * Arguments for this component
 | |
|  */
 | |
| interface IEntityPageContentEntityDiscriminatorArgs<T> {
 | |
|   // options for this component
 | |
|   options: IEntityDiscriminator<T>['options'];
 | |
|   // urn of dataset to extract platform
 | |
|   entity: T;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * This component will render a component based on the value of a property in an entity.
 | |
|  *
 | |
|  * for example:
 | |
|  *
 | |
|  * entity1 = {
 | |
|  *   type: 'GRAPHQL'
 | |
|  * };
 | |
|  *
 | |
|  * entity2 = {
 | |
|  *  type = 'PEGASUS'
 | |
|  * };
 | |
|  *
 | |
|  * {
 | |
|  *   discriminator: {
 | |
|  *     GRAPHQL: ifGraphQLRenderThisComponent
 | |
|  *   },
 | |
|  *   default: forOtherCasesLikePEGASUSRenderThisComponent,
 | |
|  *   propertyName: 'type'
 | |
|  * }
 | |
|  *
 | |
|  */
 | |
| export default class EntityPageContentEntityDiscriminator<T> extends Component<
 | |
|   IEntityPageContentEntityDiscriminatorArgs<T>
 | |
| > {
 | |
|   /**
 | |
|    * Selected component base on the value of a property. If the value is undefined or not mapped,
 | |
|    * we will use default.
 | |
|    *
 | |
|    * @readonly
 | |
|    */
 | |
|   get component(): IDynamicComponent {
 | |
|     const { entity, options } = this.args;
 | |
|     const { discriminator, default: defaultComponent, propertyName } = options;
 | |
|     const propertyValue = (get(entity, propertyName) as unknown) as Extract<T[keyof T], string>;
 | |
|     const discriminatedComponent: IDynamicComponent | undefined = propertyValue && discriminator[propertyValue];
 | |
|     return discriminatedComponent || defaultComponent;
 | |
|   }
 | |
| }
 |