From 1651dc7fccdd8609cb54495027d47fd0df6d1875 Mon Sep 17 00:00:00 2001 From: Alex Windett Date: Mon, 23 Jan 2017 11:48:20 +0000 Subject: [PATCH] setting up redux store for members and creating selector for members --- frontend/src/containers/org/people.js | 1 - frontend/src/mock-state.json | 7 ++++--- frontend/src/prop-types.js | 7 +------ frontend/src/state/reducers/index.js | 3 ++- frontend/src/state/reducers/members.js | 9 +++++++++ frontend/src/state/selectors.js | 9 ++++++--- 6 files changed, 22 insertions(+), 14 deletions(-) create mode 100644 frontend/src/state/reducers/members.js diff --git a/frontend/src/containers/org/people.js b/frontend/src/containers/org/people.js index 1b3f9bfa..67166758 100644 --- a/frontend/src/containers/org/people.js +++ b/frontend/src/containers/org/people.js @@ -55,7 +55,6 @@ const People = (props) => { People.propTypes = { people: React.PropTypes.arrayOf(PropTypes.person) - // toggleCollapsed: React.PropTypes.func }; const mapStateToProps = (state, { diff --git a/frontend/src/mock-state.json b/frontend/src/mock-state.json index d7cb4fd0..c56e7684 100644 --- a/frontend/src/mock-state.json +++ b/frontend/src/mock-state.json @@ -218,9 +218,10 @@ "uuid": "e12ad7db-91b2-4154-83dd-40dcfc700dcc", "id": "biz-tech", "name": "BizTech", - "members": [{ - "uuid": "fd853d8f-e1dd-49b5-b7b3-ae9adfea1e2f" - }] + "members": [ + "fd853d8f-e1dd-49b5-b7b3-ae9adfea1e2f", + "6deddbaa-3b94-4373-8cf7-97129507a872" + ] }, { "owner": "b94033c1-3665-4c36-afab-d9c3d0b51c01", "uuid": "551f316d-e414-480f-9787-b4c408db3edd", diff --git a/frontend/src/prop-types.js b/frontend/src/prop-types.js index cc1ce973..f7baee89 100644 --- a/frontend/src/prop-types.js +++ b/frontend/src/prop-types.js @@ -61,10 +61,6 @@ const Sections = React.PropTypes.arrayOf( React.PropTypes.string ); -const Person = React.PropTypes.shape({ - ...BaseObject -}); - module.exports = { account: Account, link: Link, @@ -75,6 +71,5 @@ module.exports = { instance: Instance, metric: Metric, metricType: MetricType, - dataset: Dataset, - person: Person + dataset: Dataset }; diff --git a/frontend/src/state/reducers/index.js b/frontend/src/state/reducers/index.js index c87158f0..98e94df2 100644 --- a/frontend/src/state/reducers/index.js +++ b/frontend/src/state/reducers/index.js @@ -14,6 +14,7 @@ module.exports = () => { monitors: require('@state/reducers/monitors'), orgs: require('@state/reducers/orgs'), projects: require('@state/reducers/projects'), - services: require('@state/reducers/services') + services: require('@state/reducers/services'), + members: require('@state/reducers/members'), }); }; diff --git a/frontend/src/state/reducers/members.js b/frontend/src/state/reducers/members.js new file mode 100644 index 00000000..7fec06fb --- /dev/null +++ b/frontend/src/state/reducers/members.js @@ -0,0 +1,9 @@ +const ReduxActions = require('redux-actions'); + +const { + handleActions +} = ReduxActions; + +module.exports = handleActions({ + 'x': (state) => state // somehow handleActions needs at least one reducer +}, {}); diff --git a/frontend/src/state/selectors.js b/frontend/src/state/selectors.js index da58c2ac..06aec62f 100644 --- a/frontend/src/state/selectors.js +++ b/frontend/src/state/selectors.js @@ -112,9 +112,12 @@ const instancesByProjectId = (projectId) => createSelector( ); const peopleByOrgId = (orgId) => createSelector( - // [members, orgById(orgId)], (members, org) => org.members - - [members, orgById(orgId)], (members, org) => org.members + [members, orgById(orgId)], (members, org) => { + const matched = []; + org.members.filter((UUID) => + matched.push(find(members, ['uuid', UUID]))); + return matched; + } ); module.exports = {