mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-08 09:41:19 +00:00
38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
import Ember from 'ember';
|
|
import connect from 'ember-redux/components/connect';
|
|
|
|
const { Component } = Ember;
|
|
|
|
/**
|
|
* Selector function that takes a Redux Store to extract
|
|
* state props for the browser-rail
|
|
* @return {Object} mapping of computed props to state
|
|
*/
|
|
const stateToComputed = state => {
|
|
// Extracts the current entity active in the browse view
|
|
const { browseEntity: { currentEntity = '' } = {} } = state;
|
|
// Retrieves properties for the current entity from the state tree
|
|
let { browseEntity: { [currentEntity]: { query: { urn } } } } = state;
|
|
// Default urn to null, which represents the top-level parent
|
|
urn = urn || null;
|
|
|
|
// Read the list of ids child entity ids associated with the urn
|
|
const { [currentEntity]: { byUrn: { [urn]: childIds = [] } } } = state;
|
|
// Read the list of entities, stored in the byId property
|
|
const { [currentEntity]: { byId: entities } } = state;
|
|
/**
|
|
* Takes the currentEntity which is plural and strips the trailing `s` and appends
|
|
* the entity sub route
|
|
* @type {string}
|
|
*/
|
|
const entityRoute = `${currentEntity}.${currentEntity.slice(0, -1)}`;
|
|
|
|
return {
|
|
currentEntity,
|
|
entityRoute,
|
|
entities: childIds.map(id => entities[id]) // Extract out the intersection of childIds from the entity map
|
|
};
|
|
};
|
|
|
|
export default connect(stateToComputed)(Component.extend({}));
|