From 789a48e27bac4f23d850bd05acfe40e5c0c56548 Mon Sep 17 00:00:00 2001 From: uzairr Date: Wed, 19 Jun 2019 12:35:57 +0500 Subject: [PATCH] Update enrollment support view Currently, entitlement view is not displaying any message if there are no records against a query.To improve user experience, changes have been made so that a proper message would be displayed. LEARNER-7155 --- .../jsx/entitlements/components/Main/Main.jsx | 22 ++++++++++++++----- .../entitlements/components/Search/Search.jsx | 10 ++++----- .../entitlements/data/actions/entitlement.js | 12 +++++++++- .../static/course_experience/js/currency.js | 1 - 4 files changed, 33 insertions(+), 12 deletions(-) diff --git a/lms/djangoapps/support/static/support/jsx/entitlements/components/Main/Main.jsx b/lms/djangoapps/support/static/support/jsx/entitlements/components/Main/Main.jsx index 52ed6eca8b..5ada7a97ee 100644 --- a/lms/djangoapps/support/static/support/jsx/entitlements/components/Main/Main.jsx +++ b/lms/djangoapps/support/static/support/jsx/entitlements/components/Main/Main.jsx @@ -1,10 +1,11 @@ import React from 'react'; import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; import { Button, StatusAlert } from '@edx/paragon'; -import SearchContainer from '../Search/SearchContainer.jsx'; -import EntitlementSupportTableContainer from '../Table/EntitlementSupportTableContainer.jsx'; -import EntitlementFormContainer from '../EntitlementForm/container.jsx'; +import SearchContainer from '../Search/SearchContainer'; +import EntitlementSupportTableContainer from '../Table/EntitlementSupportTableContainer'; +import EntitlementFormContainer from '../EntitlementForm/container'; const Main = props => (
@@ -21,6 +22,7 @@ const Main = props => ( isFormOpen={props.isFormOpen} ecommerceUrl={props.ecommerceUrl} openCreationForm={props.openCreationForm} + entitlements={props.entitlements} />
); @@ -29,6 +31,7 @@ const MainContent = (props) => { if (props.isFormOpen) { return ; } + return (
@@ -39,23 +42,32 @@ const MainContent = (props) => { onClick={props.openCreationForm} />
- + { + props.entitlements.length > 0 ? + : null + }
); }; +const mapStateToProps = state => ({ + entitlements: state.entitlements, +}); + Main.propTypes = { errorMessage: PropTypes.string.isRequired, dismissErrorMessage: PropTypes.func.isRequired, openCreationForm: PropTypes.func.isRequired, ecommerceUrl: PropTypes.string.isRequired, isFormOpen: PropTypes.bool.isRequired, + entitlements: PropTypes.arrayOf(PropTypes.string).isRequired, }; MainContent.propTypes = { openCreationForm: PropTypes.func.isRequired, ecommerceUrl: PropTypes.string.isRequired, isFormOpen: PropTypes.bool.isRequired, + entitlements: PropTypes.arrayOf(PropTypes.string).isRequired, }; -export default Main; +export default connect(mapStateToProps, null)(Main); diff --git a/lms/djangoapps/support/static/support/jsx/entitlements/components/Search/Search.jsx b/lms/djangoapps/support/static/support/jsx/entitlements/components/Search/Search.jsx index 053db5b8d3..081cfb3917 100644 --- a/lms/djangoapps/support/static/support/jsx/entitlements/components/Search/Search.jsx +++ b/lms/djangoapps/support/static/support/jsx/entitlements/components/Search/Search.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import { InputText } from '@edx/paragon'; +import { Button, InputText } from '@edx/paragon'; import PropTypes from 'prop-types'; @@ -28,12 +28,12 @@ class Search extends React.Component { - + } /> ); diff --git a/lms/djangoapps/support/static/support/jsx/entitlements/data/actions/entitlement.js b/lms/djangoapps/support/static/support/jsx/entitlements/data/actions/entitlement.js index 3404bc0319..f2f180af4d 100644 --- a/lms/djangoapps/support/static/support/jsx/entitlements/data/actions/entitlement.js +++ b/lms/djangoapps/support/static/support/jsx/entitlements/data/actions/entitlement.js @@ -13,6 +13,10 @@ const fetchEntitlementsFailure = error => dispatch => dispatch(displayError('Error Getting Entitlements', error)); +const emptyEntitlementsFailure = error => + dispatch => + dispatch(displayError('No Entitlements Found', error)); + const fetchEntitlements = username => (dispatch) => { getEntitlements(username) @@ -23,7 +27,13 @@ const fetchEntitlements = username => throw new Error(response); }) .then( - json => dispatch(fetchEntitlementsSuccess(camelize(json.results))), + (json) => { + if (json.count === 0) { + dispatch(emptyEntitlementsFailure('')); + } else { + dispatch(fetchEntitlementsSuccess(camelize(json.results))); + } + }, error => dispatch(fetchEntitlementsFailure(error)), ); }; diff --git a/openedx/features/course_experience/static/course_experience/js/currency.js b/openedx/features/course_experience/static/course_experience/js/currency.js index d9fa2a80ef..aa9f6e5595 100644 --- a/openedx/features/course_experience/static/course_experience/js/currency.js +++ b/openedx/features/course_experience/static/course_experience/js/currency.js @@ -1,4 +1,3 @@ -import whichCountry from 'which-country'; import 'jquery.cookie'; import $ from 'jquery'; // eslint-disable-line import/extensions