mirror of
https://github.com/opensupports/opensupports.git
synced 2025-07-31 01:35:15 +02:00
Ivan - Add error messages for admin tickets view [skip ci]
This commit is contained in:
parent
d2c2327a60
commit
6351666258
@ -4,9 +4,11 @@ import {connect} from 'react-redux';
|
|||||||
import i18n from 'lib-app/i18n';
|
import i18n from 'lib-app/i18n';
|
||||||
|
|
||||||
import AdminDataAction from 'actions/admin-data-actions';
|
import AdminDataAction from 'actions/admin-data-actions';
|
||||||
import Header from 'core-components/header';
|
|
||||||
import TicketList from 'app-components/ticket-list';
|
import TicketList from 'app-components/ticket-list';
|
||||||
|
|
||||||
|
import Header from 'core-components/header';
|
||||||
import SearchBox from 'core-components/search-box';
|
import SearchBox from 'core-components/search-box';
|
||||||
|
import Message from 'core-components/message';
|
||||||
|
|
||||||
class AdminPanelAllTickets extends React.Component {
|
class AdminPanelAllTickets extends React.Component {
|
||||||
|
|
||||||
@ -31,7 +33,7 @@ class AdminPanelAllTickets extends React.Component {
|
|||||||
<div className="admin-panel-my-tickets__search-box">
|
<div className="admin-panel-my-tickets__search-box">
|
||||||
<SearchBox onSearch={this.onSearch.bind(this)} />
|
<SearchBox onSearch={this.onSearch.bind(this)} />
|
||||||
</div>
|
</div>
|
||||||
<TicketList {...this.getTicketListProps()}/>
|
{(this.props.error) ? <Message type="error">{i18n('ERROR_RETRIEVING_TICKETS')}</Message> : <TicketList {...this.getTicketListProps()}/>}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -52,7 +54,8 @@ class AdminPanelAllTickets extends React.Component {
|
|||||||
|
|
||||||
onSearch(query) {
|
onSearch(query) {
|
||||||
this.setState({query, page: 1});
|
this.setState({query, page: 1});
|
||||||
if (query) {
|
|
||||||
|
if(query) {
|
||||||
this.props.dispatch(AdminDataAction.searchTickets(query));
|
this.props.dispatch(AdminDataAction.searchTickets(query));
|
||||||
} else {
|
} else {
|
||||||
this.props.dispatch(AdminDataAction.retrieveAllTickets());
|
this.props.dispatch(AdminDataAction.retrieveAllTickets());
|
||||||
@ -60,9 +63,7 @@ class AdminPanelAllTickets extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onPageChange(event) {
|
onPageChange(event) {
|
||||||
this.setState({
|
this.setState({page: event.target.value});
|
||||||
page: event.target.value
|
|
||||||
});
|
|
||||||
|
|
||||||
if(this.state.query) {
|
if(this.state.query) {
|
||||||
this.props.dispatch(AdminDataAction.searchTickets(this.state.query, event.target.value));
|
this.props.dispatch(AdminDataAction.searchTickets(this.state.query, event.target.value));
|
||||||
@ -77,6 +78,7 @@ export default connect((store) => {
|
|||||||
departments: store.session.userDepartments,
|
departments: store.session.userDepartments,
|
||||||
tickets: store.adminData.allTickets,
|
tickets: store.adminData.allTickets,
|
||||||
pages: store.adminData.allTicketsPages,
|
pages: store.adminData.allTicketsPages,
|
||||||
loading: !store.adminData.allTicketsLoaded
|
loading: !store.adminData.allTicketsLoaded,
|
||||||
|
error: store.adminData.allTicketsError
|
||||||
};
|
};
|
||||||
})(AdminPanelAllTickets);
|
})(AdminPanelAllTickets);
|
||||||
|
@ -4,9 +4,11 @@ import {connect} from 'react-redux';
|
|||||||
import i18n from 'lib-app/i18n';
|
import i18n from 'lib-app/i18n';
|
||||||
|
|
||||||
import AdminDataAction from 'actions/admin-data-actions';
|
import AdminDataAction from 'actions/admin-data-actions';
|
||||||
import Header from 'core-components/header';
|
|
||||||
import TicketList from 'app-components/ticket-list';
|
import TicketList from 'app-components/ticket-list';
|
||||||
|
|
||||||
|
import Header from 'core-components/header';
|
||||||
|
import Message from 'core-components/message';
|
||||||
|
|
||||||
class AdminPanelMyTickets extends React.Component {
|
class AdminPanelMyTickets extends React.Component {
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
@ -22,7 +24,7 @@ class AdminPanelMyTickets extends React.Component {
|
|||||||
return (
|
return (
|
||||||
<div className="admin-panel-my-tickets">
|
<div className="admin-panel-my-tickets">
|
||||||
<Header title={i18n('MY_TICKETS')} description={i18n('MY_TICKETS_DESCRIPTION')} />
|
<Header title={i18n('MY_TICKETS')} description={i18n('MY_TICKETS_DESCRIPTION')} />
|
||||||
<TicketList {...this.getProps()}/>
|
{(this.props.error) ? <Message type="error">{i18n('ERROR_RETRIEVING_TICKETS')}</Message> : <TicketList {...this.getProps()}/>}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -42,6 +44,7 @@ export default connect((store) => {
|
|||||||
return {
|
return {
|
||||||
departments: store.session.userDepartments,
|
departments: store.session.userDepartments,
|
||||||
tickets: store.adminData.myTickets,
|
tickets: store.adminData.myTickets,
|
||||||
loading: !store.adminData.myTicketsLoaded
|
loading: !store.adminData.myTicketsLoaded,
|
||||||
|
error: store.adminData.myTicketsError
|
||||||
};
|
};
|
||||||
})(AdminPanelMyTickets);
|
})(AdminPanelMyTickets);
|
||||||
|
@ -4,9 +4,11 @@ import {connect} from 'react-redux';
|
|||||||
import i18n from 'lib-app/i18n';
|
import i18n from 'lib-app/i18n';
|
||||||
|
|
||||||
import AdminDataAction from 'actions/admin-data-actions';
|
import AdminDataAction from 'actions/admin-data-actions';
|
||||||
import Header from 'core-components/header';
|
|
||||||
import TicketList from 'app-components/ticket-list';
|
import TicketList from 'app-components/ticket-list';
|
||||||
|
|
||||||
|
import Header from 'core-components/header';
|
||||||
|
import Message from 'core-components/message';
|
||||||
|
|
||||||
class AdminPanelNewTickets extends React.Component {
|
class AdminPanelNewTickets extends React.Component {
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
@ -22,7 +24,7 @@ class AdminPanelNewTickets extends React.Component {
|
|||||||
return (
|
return (
|
||||||
<div className="admin-panel-my-tickets">
|
<div className="admin-panel-my-tickets">
|
||||||
<Header title={i18n('NEW_TICKETS')} description={i18n('NEW_TICKETS_DESCRIPTION')} />
|
<Header title={i18n('NEW_TICKETS')} description={i18n('NEW_TICKETS_DESCRIPTION')} />
|
||||||
<TicketList {...this.getProps()}/>
|
{(this.props.error) ? <Message type="error">{i18n('ERROR_RETRIEVING_TICKETS')}</Message> : <TicketList {...this.getProps()}/>}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -42,6 +44,7 @@ export default connect((store) => {
|
|||||||
return {
|
return {
|
||||||
departments: store.session.userDepartments,
|
departments: store.session.userDepartments,
|
||||||
tickets: store.adminData.newTickets,
|
tickets: store.adminData.newTickets,
|
||||||
loading: !store.adminData.newTicketsLoaded
|
loading: !store.adminData.newTicketsLoaded,
|
||||||
|
error: store.adminData.newTicketsError
|
||||||
};
|
};
|
||||||
})(AdminPanelNewTickets);
|
})(AdminPanelNewTickets);
|
||||||
|
@ -160,6 +160,7 @@ export default {
|
|||||||
'TICKET_COMMENT_ERROR': 'An error occurred while trying to add the comment.',
|
'TICKET_COMMENT_ERROR': 'An error occurred while trying to add the comment.',
|
||||||
'NO_PERMISSION': 'You\'ve no permission to access to this page.',
|
'NO_PERMISSION': 'You\'ve no permission to access to this page.',
|
||||||
'INVALID_USER': 'User id is invalid',
|
'INVALID_USER': 'User id is invalid',
|
||||||
|
'ERROR_RETRIEVING_TICKETS': 'An error occurred while trying to retrieve tickets.',
|
||||||
|
|
||||||
//MESSAGES
|
//MESSAGES
|
||||||
'SIGNUP_SUCCESS': 'You have registered successfully in our support system.',
|
'SIGNUP_SUCCESS': 'You have registered successfully in our support system.',
|
||||||
|
@ -11,10 +11,15 @@ class AdminDataReducer extends Reducer {
|
|||||||
customResponsesLoaded: false,
|
customResponsesLoaded: false,
|
||||||
myTickets: [],
|
myTickets: [],
|
||||||
myTicketsLoaded: false,
|
myTicketsLoaded: false,
|
||||||
|
myTicketsError: false,
|
||||||
|
|
||||||
newTickets: [],
|
newTickets: [],
|
||||||
newTicketsLoaded: false,
|
newTicketsLoaded: false,
|
||||||
|
newTicketsError: false,
|
||||||
|
|
||||||
allTickets: [],
|
allTickets: [],
|
||||||
allTicketsLoaded: false
|
allTicketsLoaded: false,
|
||||||
|
allTicketsError: false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22,11 +27,17 @@ class AdminDataReducer extends Reducer {
|
|||||||
return {
|
return {
|
||||||
'CUSTOM_RESPONSES_FULFILLED': this.onCustomResponses,
|
'CUSTOM_RESPONSES_FULFILLED': this.onCustomResponses,
|
||||||
'SESSION_CHECKED': this.onSessionChecked,
|
'SESSION_CHECKED': this.onSessionChecked,
|
||||||
|
|
||||||
'MY_TICKETS_FULFILLED': this.onMyTicketsRetrieved,
|
'MY_TICKETS_FULFILLED': this.onMyTicketsRetrieved,
|
||||||
|
'MY_TICKETS_REJECTED': this.onMyTicketsRejected,
|
||||||
'MY_TICKETS_PENDING': this.onMyTicketsPending,
|
'MY_TICKETS_PENDING': this.onMyTicketsPending,
|
||||||
|
|
||||||
'NEW_TICKETS_FULFILLED': this.onNewTicketsRetrieved,
|
'NEW_TICKETS_FULFILLED': this.onNewTicketsRetrieved,
|
||||||
|
'NEW_TICKETS_REJECTED': this.onNewTicketsRejected,
|
||||||
'NEW_TICKETS_PENDING': this.onNewTicketsPending,
|
'NEW_TICKETS_PENDING': this.onNewTicketsPending,
|
||||||
|
|
||||||
'ALL_TICKETS_FULFILLED': this.onAllTicketsRetrieved,
|
'ALL_TICKETS_FULFILLED': this.onAllTicketsRetrieved,
|
||||||
|
'ALL_TICKETS_REJECTED': this.onAllTicketsRejected,
|
||||||
'ALL_TICKETS_PENDING': this.onAllTicketsPending
|
'ALL_TICKETS_PENDING': this.onAllTicketsPending
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -53,26 +64,42 @@ class AdminDataReducer extends Reducer {
|
|||||||
return _.extend({}, state, {
|
return _.extend({}, state, {
|
||||||
myTickets: payload.data,
|
myTickets: payload.data,
|
||||||
myTicketsLoaded: true
|
myTicketsLoaded: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
onMyTicketsRejected(state) {
|
||||||
|
return _.extend({}, state, {
|
||||||
|
myTicketsError: true,
|
||||||
|
myTicketsLoaded: true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
onMyTicketsPending(state) {
|
onMyTicketsPending(state) {
|
||||||
return _.extend({}, state, {
|
return _.extend({}, state, {
|
||||||
|
myTicketsError: false,
|
||||||
myTicketsLoaded: false
|
myTicketsLoaded: false
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onNewTicketsRetrieved(state, payload) {
|
onNewTicketsRetrieved(state, payload) {
|
||||||
return _.extend({}, state, {
|
return _.extend({}, state, {
|
||||||
newTickets: payload.data,
|
newTickets: payload.data,
|
||||||
newTicketsLoaded: true
|
newTicketsLoaded: true
|
||||||
})
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
onNewTicketsRejected(state) {
|
||||||
|
return _.extend({}, state, {
|
||||||
|
newTicketsError: true,
|
||||||
|
newTicketsLoaded: false
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onNewTicketsPending(state) {
|
onNewTicketsPending(state) {
|
||||||
return _.extend({}, state, {
|
return _.extend({}, state, {
|
||||||
|
newTicketsError: false,
|
||||||
newTicketsLoaded: false
|
newTicketsLoaded: false
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onAllTicketsRetrieved(state, payload) {
|
onAllTicketsRetrieved(state, payload) {
|
||||||
@ -80,13 +107,21 @@ class AdminDataReducer extends Reducer {
|
|||||||
allTickets: payload.data.tickets,
|
allTickets: payload.data.tickets,
|
||||||
allTicketsPages: payload.data.pages,
|
allTicketsPages: payload.data.pages,
|
||||||
allTicketsLoaded: true
|
allTicketsLoaded: true
|
||||||
})
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
onAllTicketsRejected(state) {
|
||||||
|
return _.extend({}, state, {
|
||||||
|
allTicketsError: false,
|
||||||
|
allTicketsLoaded: false
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onAllTicketsPending(state) {
|
onAllTicketsPending(state) {
|
||||||
return _.extend({}, state, {
|
return _.extend({}, state, {
|
||||||
|
allTicketsError: false,
|
||||||
allTicketsLoaded: false
|
allTicketsLoaded: false
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user