Skip to content

Commit 2057c00

Browse files
authored
Merge pull request #56 from openimis/feature/OSB-11
OSB-11: added new way of rendering main menu component
2 parents 3924ef8 + d731083 commit 2057c00

File tree

3 files changed

+33
-6
lines changed

3 files changed

+33
-6
lines changed

src/contributions/AdminMainMenuContributions.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ function getAdminMainMenuContributions() {
1515
icon: <People />,
1616
route: '/tasks/groups',
1717
filter: (rights) => rights.includes(RIGHT_TASK_EXECUTIONER_GROUPS),
18+
id: 'admin.taskExecutionerGroups',
1819
}];
1920
}
2021

src/index.js

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
// Disable due to core architecture
22
/* eslint-disable camelcase */
33
/* eslint-disable import/prefer-default-export */
4-
4+
import React from 'react';
5+
import { FormattedMessage } from '@openimis/fe-core';
6+
import AssignmentIcon from '@material-ui/icons/Assignment';
57
import messages_en from './translations/en.json';
68
import reducer from './reducer';
79
import TasksMainMenu from './menus/TasksMainMenu';
@@ -14,7 +16,7 @@ import TaskPreviewCell from './components/TaskPreviewCell';
1416
import TaskGroupPicker from './pickers/TaskGroupPicker';
1517
import TaskSearcher from './components/TaskSearcher';
1618
import getAdminMainMenuContributions from './contributions/AdminMainMenuContributions';
17-
import { TASK_ROUTE } from './constants';
19+
import { TASK_ROUTE, RIGHT_TASKS_MANAGEMENT_SEARCH_ALL } from './constants';
1820
import { fetchTask, resolveTask } from './actions';
1921
import TasksAllPage from './pages/TasksAllPage';
2022
import TaskTypesPicker from './pickers/TaskTypesPicker';
@@ -30,7 +32,7 @@ const ROUTE_GROUP_MANAGEMENT = 'tasks/groups/group';
3032
const DEFAULT_CONFIG = {
3133
translations: [{ key: 'en', messages: messages_en }],
3234
reducers: [{ key: 'tasksManagement', reducer }],
33-
'core.MainMenu': [TasksMainMenu],
35+
'core.MainMenu': [{ name: 'TasksMainMenu', component: TasksMainMenu }],
3436
'admin.MainMenu': [...getAdminMainMenuContributions()],
3537
'core.Router': [
3638
{ path: ROUTE_TASKS_MANAGEMENT, component: TasksManagementPage },
@@ -51,6 +53,23 @@ const DEFAULT_CONFIG = {
5153
{ key: 'tasksManagement.taskDetailsPage', ref: TaskDetailsPage },
5254
{ key: 'tasksManagement.fetchTask', ref: fetchTask },
5355
],
56+
'Tasks.MainMenu': [
57+
{
58+
text: <FormattedMessage module="tasksManagement" id="entries.tasksManagementView" />,
59+
icon: <AssignmentIcon />,
60+
route: '/tasks',
61+
id: 'task.tasks',
62+
filter: (rights) => rights.includes(RIGHT_TASKS_MANAGEMENT_SEARCH_ALL),
63+
},
64+
{
65+
text: <FormattedMessage module="tasksManagement" id="entries.tasksManagementAllView" />,
66+
icon: <AssignmentIcon />,
67+
route: '/AllTasks',
68+
id: 'task.allTasks',
69+
filter: (rights) => rights.includes(RIGHT_TASKS_MANAGEMENT_SEARCH_ALL),
70+
},
71+
],
72+
5473
};
5574

5675
export const TasksManagementModule = (cfg) => ({ ...DEFAULT_CONFIG, ...cfg });

src/menus/TasksMainMenu.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/* eslint-disable react/jsx-props-no-spreading */
44

55
import React from 'react';
6-
import { useSelector } from 'react-redux';
6+
import { connect } from 'react-redux';
77
import { injectIntl } from 'react-intl';
88
import AssignmentIcon from '@material-ui/icons/Assignment';
99
import { formatMessage, MainMenuContribution, withModulesManager } from '@openimis/fe-core';
@@ -13,18 +13,20 @@ import {
1313
} from '../constants';
1414

1515
function TasksMainMenu(props) {
16-
const rights = useSelector((store) => store.core?.user?.i_user?.rights ?? []);
16+
const { rights } = props;
1717
const entries = [
1818
{
1919
text: formatMessage(props.intl, 'tasksManagement', 'entries.tasksManagementView'),
2020
icon: <AssignmentIcon />,
2121
route: '/tasks',
22+
id: 'task.tasks',
2223
},
2324
{
2425
text: formatMessage(props.intl, 'tasksManagement', 'entries.tasksManagementAllView'),
2526
icon: <AssignmentIcon />,
2627
route: '/AllTasks',
2728
filter: (rights) => rights.includes(RIGHT_TASKS_MANAGEMENT_SEARCH_ALL),
29+
id: 'task.allTasks',
2830
},
2931
];
3032
entries.push(
@@ -38,8 +40,13 @@ function TasksMainMenu(props) {
3840
{...props}
3941
header={formatMessage(props.intl, 'tasksManagement', 'tasksMainMenu')}
4042
entries={entries}
43+
menuId="TasksMainMenu"
4144
/>
4245
);
4346
}
4447

45-
export default withModulesManager(injectIntl(TasksMainMenu));
48+
const mapStateToProps = (state) => ({
49+
rights: !!state.core && !!state.core.user && !!state.core.user.i_user ? state.core.user.i_user.rights : [],
50+
});
51+
52+
export default withModulesManager(injectIntl(connect(mapStateToProps)(TasksMainMenu)));

0 commit comments

Comments
 (0)