Skip to content

Commit

Permalink
Merge pull request #2487 from marmelab/fix-reference-many-field-total
Browse files Browse the repository at this point in the history
[RFR] Pass total to ReferenceManyField
  • Loading branch information
Gildas Garcia authored Oct 30, 2018
2 parents 36766cc + de186c8 commit 7301071
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
import {
getIds,
getReferences,
getTotal,
nameRelatedTo,
} from '../../reducer/admin/references/oneToMany';

Expand Down Expand Up @@ -121,6 +122,7 @@ export class ReferenceManyFieldController extends Component {
ids,
children,
basePath,
total,
} = this.props;

const referenceBasePath = basePath.replace(resource, reference);
Expand All @@ -132,6 +134,7 @@ export class ReferenceManyFieldController extends Component {
isLoading: typeof ids === 'undefined',
referenceBasePath,
setSort: this.setSort,
total,
});
}
}
Expand All @@ -155,6 +158,7 @@ ReferenceManyFieldController.propTypes = {
source: PropTypes.string.isRequired,
target: PropTypes.string.isRequired,
isLoading: PropTypes.bool,
total: PropTypes.number,
};

ReferenceManyFieldController.defaultProps = {
Expand All @@ -175,6 +179,7 @@ function mapStateToProps(state, props) {
return {
data: getReferences(state, props.reference, relatedTo),
ids: getIds(state, relatedTo),
total: getTotal(state, relatedTo),
};
}

Expand Down
12 changes: 10 additions & 2 deletions packages/ra-core/src/reducer/admin/references/oneToMany.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,23 @@ export default (previousState = initialState, { type, payload, meta }) => {
case CRUD_GET_MANY_REFERENCE_SUCCESS:
return {
...previousState,
[meta.relatedTo]: payload.data.map(record => record.id),
[meta.relatedTo]: {
ids: payload.data.map(record => record.id),
total: payload.total,
},
};
default:
return previousState;
}
};

export const getIds = (state, relatedTo) =>
state.admin.references.oneToMany[relatedTo];
state.admin.references.oneToMany[relatedTo] &&
state.admin.references.oneToMany[relatedTo].ids;

export const getTotal = (state, relatedTo) =>
state.admin.references.oneToMany[relatedTo] &&
state.admin.references.oneToMany[relatedTo].total;

export const getReferences = (state, reference, relatedTo) => {
const ids = getIds(state, relatedTo);
Expand Down
2 changes: 2 additions & 0 deletions packages/ra-ui-materialui/src/field/ReferenceManyField.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export const ReferenceManyFieldView = ({
reference,
referenceBasePath,
setSort,
total,
}) => {
if (isLoading) {
return <LinearProgress className={classes.progress} />;
Expand All @@ -32,6 +33,7 @@ export const ReferenceManyFieldView = ({
basePath: referenceBasePath,
currentSort,
setSort,
total,
});
};

Expand Down
2 changes: 1 addition & 1 deletion packages/ra-ui-materialui/src/list/SimpleList.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ SimpleList.propTypes = {
leftIcon: PropTypes.func,
linkType: PropTypes.oneOfType([PropTypes.string, PropTypes.bool])
.isRequired,
onToggleItem: PropTypes.func.isRequired,
onToggleItem: PropTypes.func,
primaryText: PropTypes.func,
rightAvatar: PropTypes.func,
rightIcon: PropTypes.func,
Expand Down

0 comments on commit 7301071

Please sign in to comment.