New: Show tags in Applications and Notifications index

pull/1680/head
Bogdan 1 year ago
parent 450c6d7af5
commit cc2f50544b

@ -3,6 +3,7 @@ import React, { Component } from 'react';
import Card from 'Components/Card'; import Card from 'Components/Card';
import Label from 'Components/Label'; import Label from 'Components/Label';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import TagList from 'Components/TagList';
import { kinds } from 'Helpers/Props'; import { kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate'; import translate from 'Utilities/String/translate';
import EditApplicationModalConnector from './EditApplicationModalConnector'; import EditApplicationModalConnector from './EditApplicationModalConnector';
@ -55,7 +56,9 @@ class Application extends Component {
const { const {
id, id,
name, name,
syncLevel syncLevel,
tags,
tagList
} = this.props; } = this.props;
return ( return (
@ -92,6 +95,11 @@ class Application extends Component {
</Label> </Label>
} }
<TagList
tags={tags}
tagList={tagList}
/>
<EditApplicationModalConnector <EditApplicationModalConnector
id={id} id={id}
isOpen={this.state.isEditApplicationModalOpen} isOpen={this.state.isEditApplicationModalOpen}
@ -117,6 +125,8 @@ Application.propTypes = {
id: PropTypes.number.isRequired, id: PropTypes.number.isRequired,
name: PropTypes.string.isRequired, name: PropTypes.string.isRequired,
syncLevel: PropTypes.string.isRequired, syncLevel: PropTypes.string.isRequired,
tags: PropTypes.arrayOf(PropTypes.number).isRequired,
tagList: PropTypes.arrayOf(PropTypes.object).isRequired,
onConfirmDeleteApplication: PropTypes.func onConfirmDeleteApplication: PropTypes.func
}; };

@ -49,6 +49,7 @@ class Applications extends Component {
render() { render() {
const { const {
items, items,
tagList,
onConfirmDeleteApplication, onConfirmDeleteApplication,
...otherProps ...otherProps
} = this.props; } = this.props;
@ -71,6 +72,7 @@ class Applications extends Component {
<Application <Application
key={item.id} key={item.id}
{...item} {...item}
tagList={tagList}
onConfirmDeleteApplication={onConfirmDeleteApplication} onConfirmDeleteApplication={onConfirmDeleteApplication}
/> />
); );
@ -109,6 +111,7 @@ Applications.propTypes = {
isFetching: PropTypes.bool.isRequired, isFetching: PropTypes.bool.isRequired,
error: PropTypes.object, error: PropTypes.object,
items: PropTypes.arrayOf(PropTypes.object).isRequired, items: PropTypes.arrayOf(PropTypes.object).isRequired,
tagList: PropTypes.arrayOf(PropTypes.object).isRequired,
onConfirmDeleteApplication: PropTypes.func.isRequired onConfirmDeleteApplication: PropTypes.func.isRequired
}; };

@ -4,13 +4,20 @@ import { connect } from 'react-redux';
import { createSelector } from 'reselect'; import { createSelector } from 'reselect';
import { deleteApplication, fetchApplications } from 'Store/Actions/settingsActions'; import { deleteApplication, fetchApplications } from 'Store/Actions/settingsActions';
import createSortedSectionSelector from 'Store/Selectors/createSortedSectionSelector'; import createSortedSectionSelector from 'Store/Selectors/createSortedSectionSelector';
import createTagsSelector from 'Store/Selectors/createTagsSelector';
import sortByName from 'Utilities/Array/sortByName'; import sortByName from 'Utilities/Array/sortByName';
import Applications from './Applications'; import Applications from './Applications';
function createMapStateToProps() { function createMapStateToProps() {
return createSelector( return createSelector(
createSortedSectionSelector('settings.applications', sortByName), createSortedSectionSelector('settings.applications', sortByName),
(applications) => applications createTagsSelector(),
(applications, tagList) => {
return {
...applications,
tagList
};
}
); );
} }

@ -3,6 +3,7 @@ import React, { Component } from 'react';
import Card from 'Components/Card'; import Card from 'Components/Card';
import Label from 'Components/Label'; import Label from 'Components/Label';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import TagList from 'Components/TagList';
import { kinds } from 'Helpers/Props'; import { kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate'; import translate from 'Utilities/String/translate';
import EditNotificationModalConnector from './EditNotificationModalConnector'; import EditNotificationModalConnector from './EditNotificationModalConnector';
@ -62,7 +63,9 @@ class Notification extends Component {
supportsOnGrab, supportsOnGrab,
supportsOnHealthIssue, supportsOnHealthIssue,
supportsOnHealthRestored, supportsOnHealthRestored,
supportsOnApplicationUpdate supportsOnApplicationUpdate,
tags,
tagList
} = this.props; } = this.props;
return ( return (
@ -118,6 +121,11 @@ class Notification extends Component {
null null
} }
<TagList
tags={tags}
tagList={tagList}
/>
<EditNotificationModalConnector <EditNotificationModalConnector
id={id} id={id}
isOpen={this.state.isEditNotificationModalOpen} isOpen={this.state.isEditNotificationModalOpen}
@ -150,6 +158,8 @@ Notification.propTypes = {
supportsOnHealthIssue: PropTypes.bool.isRequired, supportsOnHealthIssue: PropTypes.bool.isRequired,
supportsOnHealthRestored: PropTypes.bool.isRequired, supportsOnHealthRestored: PropTypes.bool.isRequired,
supportsOnApplicationUpdate: PropTypes.bool.isRequired, supportsOnApplicationUpdate: PropTypes.bool.isRequired,
tags: PropTypes.arrayOf(PropTypes.number).isRequired,
tagList: PropTypes.arrayOf(PropTypes.object).isRequired,
onConfirmDeleteNotification: PropTypes.func.isRequired onConfirmDeleteNotification: PropTypes.func.isRequired
}; };

@ -49,6 +49,7 @@ class Notifications extends Component {
render() { render() {
const { const {
items, items,
tagList,
onConfirmDeleteNotification, onConfirmDeleteNotification,
...otherProps ...otherProps
} = this.props; } = this.props;
@ -71,6 +72,7 @@ class Notifications extends Component {
<Notification <Notification
key={item.id} key={item.id}
{...item} {...item}
tagList={tagList}
onConfirmDeleteNotification={onConfirmDeleteNotification} onConfirmDeleteNotification={onConfirmDeleteNotification}
/> />
); );
@ -109,6 +111,7 @@ Notifications.propTypes = {
isFetching: PropTypes.bool.isRequired, isFetching: PropTypes.bool.isRequired,
error: PropTypes.object, error: PropTypes.object,
items: PropTypes.arrayOf(PropTypes.object).isRequired, items: PropTypes.arrayOf(PropTypes.object).isRequired,
tagList: PropTypes.arrayOf(PropTypes.object).isRequired,
onConfirmDeleteNotification: PropTypes.func.isRequired onConfirmDeleteNotification: PropTypes.func.isRequired
}; };

@ -4,13 +4,20 @@ import { connect } from 'react-redux';
import { createSelector } from 'reselect'; import { createSelector } from 'reselect';
import { deleteNotification, fetchNotifications } from 'Store/Actions/settingsActions'; import { deleteNotification, fetchNotifications } from 'Store/Actions/settingsActions';
import createSortedSectionSelector from 'Store/Selectors/createSortedSectionSelector'; import createSortedSectionSelector from 'Store/Selectors/createSortedSectionSelector';
import createTagsSelector from 'Store/Selectors/createTagsSelector';
import sortByName from 'Utilities/Array/sortByName'; import sortByName from 'Utilities/Array/sortByName';
import Notifications from './Notifications'; import Notifications from './Notifications';
function createMapStateToProps() { function createMapStateToProps() {
return createSelector( return createSelector(
createSortedSectionSelector('settings.notifications', sortByName), createSortedSectionSelector('settings.notifications', sortByName),
(notifications) => notifications createTagsSelector(),
(notifications, tagList) => {
return {
...notifications,
tagList
};
}
); );
} }

Loading…
Cancel
Save