2019-08-31 20:51:14 -07:00
|
|
|
import Component from '@ember/component';
|
|
|
|
import { tagName } from '@ember-decorators/component';
|
|
|
|
import { computed } from '@ember/object';
|
|
|
|
import { DataModelEntity } from '@datahub/data-models/constants/entity';
|
2019-09-18 10:07:04 -07:00
|
|
|
import { IDynamicLinkNode } from '@datahub/utils/types/vendor/dynamic-link';
|
2019-08-31 20:51:14 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Indicates the total number of entities within a category and on user interaction
|
|
|
|
* performs an advanced search query for entities within the related category
|
|
|
|
* @export
|
|
|
|
* @class BrowserSearchWithinHierarchy
|
|
|
|
* @extends {Component}
|
|
|
|
*/
|
|
|
|
@tagName('')
|
|
|
|
export default class BrowserSearchWithinHierarchy extends Component {
|
|
|
|
/**
|
|
|
|
* The identifier for a DataModelEntity
|
|
|
|
*/
|
|
|
|
entityType?: DataModelEntity['displayName'];
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Count of entities within the related browse hierarchy
|
|
|
|
*/
|
|
|
|
count: number = 0;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Browse hierarchy currently being viewed, represented by the list of segments
|
|
|
|
*/
|
|
|
|
segments: Array<string> = [];
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Attribute to reference component element
|
|
|
|
*/
|
|
|
|
readonly searchHierarchy = '';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Call To Action for the component element,
|
|
|
|
* e.g. `View 20 features`
|
|
|
|
* @readonly
|
|
|
|
*/
|
|
|
|
@computed('count', 'entityType')
|
|
|
|
get cta(): string {
|
|
|
|
const { count, entityType } = this;
|
|
|
|
return count && entityType ? `View ${count} ${entityType}` : '';
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* get link query params
|
|
|
|
*/
|
|
|
|
@computed('entityType', 'segments', 'cta')
|
|
|
|
get link(): IDynamicLinkNode<Array<string>, 'browsesearch.entity', { page: number; path: string }> {
|
|
|
|
const { entityType = '', segments, cta } = this;
|
|
|
|
return {
|
|
|
|
text: cta,
|
|
|
|
title: cta,
|
|
|
|
model: [entityType],
|
|
|
|
route: 'browsesearch.entity',
|
|
|
|
queryParams: {
|
|
|
|
page: 1,
|
|
|
|
path: segments.join('/')
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|