foreman-tasks 11.0.5 → 11.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/foreman-tasks/locale/de/foreman_tasks.js +5 -2
  3. data/app/assets/javascripts/foreman-tasks/locale/en/foreman_tasks.js +4 -1
  4. data/app/assets/javascripts/foreman-tasks/locale/es/foreman_tasks.js +5 -2
  5. data/app/assets/javascripts/foreman-tasks/locale/fr/foreman_tasks.js +11 -8
  6. data/app/assets/javascripts/foreman-tasks/locale/ja/foreman_tasks.js +12 -9
  7. data/app/assets/javascripts/foreman-tasks/locale/ka/foreman_tasks.js +5 -2
  8. data/app/assets/javascripts/foreman-tasks/locale/ko/foreman_tasks.js +167 -165
  9. data/app/assets/javascripts/foreman-tasks/locale/pt_BR/foreman_tasks.js +5 -2
  10. data/app/assets/javascripts/foreman-tasks/locale/ru/foreman_tasks.js +5 -2
  11. data/app/assets/javascripts/foreman-tasks/locale/zh_CN/foreman_tasks.js +11 -8
  12. data/app/assets/javascripts/foreman-tasks/locale/zh_TW/foreman_tasks.js +5 -2
  13. data/lib/foreman_tasks/dynflow/console_authorizer.rb +1 -3
  14. data/lib/foreman_tasks/version.rb +1 -1
  15. data/locale/Makefile +18 -7
  16. data/locale/de/LC_MESSAGES/foreman_tasks.mo +0 -0
  17. data/locale/de/foreman_tasks.po +5 -2
  18. data/locale/en/LC_MESSAGES/foreman_tasks.mo +0 -0
  19. data/locale/en/foreman_tasks.po +4 -1
  20. data/locale/es/LC_MESSAGES/foreman_tasks.mo +0 -0
  21. data/locale/es/foreman_tasks.po +5 -2
  22. data/locale/foreman_tasks.pot +10 -6
  23. data/locale/fr/LC_MESSAGES/foreman_tasks.mo +0 -0
  24. data/locale/fr/foreman_tasks.po +11 -8
  25. data/locale/ja/LC_MESSAGES/foreman_tasks.mo +0 -0
  26. data/locale/ja/foreman_tasks.po +12 -9
  27. data/locale/ka/LC_MESSAGES/foreman_tasks.mo +0 -0
  28. data/locale/ka/foreman_tasks.po +5 -2
  29. data/locale/ko/LC_MESSAGES/foreman_tasks.mo +0 -0
  30. data/locale/ko/foreman_tasks.po +167 -165
  31. data/locale/pt_BR/LC_MESSAGES/foreman_tasks.mo +0 -0
  32. data/locale/pt_BR/foreman_tasks.po +5 -2
  33. data/locale/ru/LC_MESSAGES/foreman_tasks.mo +0 -0
  34. data/locale/ru/foreman_tasks.po +5 -2
  35. data/locale/zh_CN/LC_MESSAGES/foreman_tasks.mo +0 -0
  36. data/locale/zh_CN/foreman_tasks.po +11 -8
  37. data/locale/zh_TW/LC_MESSAGES/foreman_tasks.mo +0 -0
  38. data/locale/zh_TW/foreman_tasks.po +5 -2
  39. data/webpack/ForemanTasks/Components/TaskDetails/Components/Task.js +37 -9
  40. data/webpack/ForemanTasks/Components/TaskDetails/Components/TaskButtons.js +19 -16
  41. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/TaskButtons.test.js +197 -71
  42. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/Task.test.js.snap +24 -40
  43. data/webpack/ForemanTasks/Components/TaskDetails/__tests__/__snapshots__/TaskDetails.test.js.snap +2 -16
  44. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalSelectors.js +0 -16
  45. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/GenericConfirmModal.js +70 -0
  46. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalSelectors.test.js +25 -14
  47. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModalSelectors.test.js.snap +8 -7
  48. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/index.test.js +409 -0
  49. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/createBulkTaskModal.js +67 -0
  50. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/createTaskModal.js +51 -0
  51. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/index.js +73 -23
  52. data/webpack/ForemanTasks/Components/TasksTable/TasksTable.js +5 -2
  53. data/webpack/ForemanTasks/Components/TasksTable/TasksTableConstants.js +1 -1
  54. data/webpack/ForemanTasks/Components/TasksTable/TasksTablePage.js +67 -11
  55. data/webpack/ForemanTasks/Components/TasksTable/__tests__/__snapshots__/TasksTablePage.test.js.snap +86 -6
  56. data/webpack/ForemanTasks/Components/common/ClickConfirmation/ClickConfirmation.test.js +225 -39
  57. data/webpack/ForemanTasks/Components/common/ClickConfirmation/index.js +136 -37
  58. metadata +6 -19
  59. data/webpack/ForemanTasks/Components/TaskActions/UnlockModals.js +0 -60
  60. data/webpack/ForemanTasks/Components/TaskActions/UnlockModals.test.js +0 -14
  61. data/webpack/ForemanTasks/Components/TaskActions/__snapshots__/UnlockModals.test.js.snap +0 -25
  62. data/webpack/ForemanTasks/Components/TaskDetails/Components/__tests__/__snapshots__/TaskButtons.test.js.snap +0 -212
  63. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModal.js +0 -83
  64. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalActions.js +0 -106
  65. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/ConfirmModalReducer.js +0 -38
  66. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModal.test.js +0 -36
  67. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalActions.test.js +0 -205
  68. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/ConfirmModalReducer.test.js +0 -27
  69. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModal.test.js.snap +0 -41
  70. data/webpack/ForemanTasks/Components/TasksTable/Components/ConfirmModal/__test__/__snapshots__/ConfirmModalReducer.test.js.snap +0 -19
  71. data/webpack/ForemanTasks/Components/common/ClickConfirmation/ClickConfirmation.scss +0 -9
  72. data/webpack/ForemanTasks/Components/common/ClickConfirmation/__snapshots__/ClickConfirmation.test.js.snap +0 -52
  73. data/webpack/__mocks__/foremanReact/components/ForemanModal/ForemanModalActions.js +0 -2
  74. data/webpack/__mocks__/foremanReact/components/ForemanModal/ForemanModalHooks.js +0 -10
  75. data/webpack/__mocks__/foremanReact/components/ForemanModal/index.js +0 -18
@@ -2,14 +2,18 @@
2
2
 
3
3
  exports[`Task rendering render with minimal Props 1`] = `
4
4
  <Fragment>
5
- <UnlockModal
5
+ <UnlockConfirmationModal
6
6
  id="unlockModal"
7
+ isOpen={false}
7
8
  onClick={[Function]}
9
+ setModalClosed={[Function]}
8
10
  />
9
- <ForceUnlockModal
11
+ <ForceUnlockConfirmationModal
10
12
  id="forceUnlockModal"
13
+ isOpen={false}
11
14
  onClick={[Function]}
12
15
  selectedRowsLen={1}
16
+ setModalClosed={[Function]}
13
17
  />
14
18
  <Grid
15
19
  bsClass="container"
@@ -26,47 +30,32 @@ exports[`Task rendering render with minimal Props 1`] = `
26
30
  cancelTaskRequest={[Function]}
27
31
  cancellable={false}
28
32
  dynflowEnableConsole={false}
29
- endedAt=""
30
- errors={Array []}
31
33
  externalId=""
34
+ forceCancelTaskRequest={[Function]}
32
35
  hasSubTasks={false}
33
- help=""
34
36
  id="test"
35
- output=""
36
37
  parentTask=""
37
- progress={0}
38
- result="error"
39
38
  resumable={false}
40
39
  resumeTaskRequest={[Function]}
41
- startAt=""
42
- startBefore=""
43
- startedAt=""
40
+ setForceUnlockModalOpen={[Function]}
41
+ setUnlockModalOpen={[Function]}
44
42
  state=""
45
43
  taskProgressToggle={[MockFunction]}
46
44
  taskReload={false}
47
45
  taskReloadStart={[MockFunction]}
48
- username=""
49
- usernamePath=""
46
+ unlockTaskRequest={[Function]}
50
47
  />
51
48
  </Row>
52
49
  <TaskInfo
53
50
  action=""
54
- canEdit={false}
55
- cancelTaskRequest={[Function]}
56
- cancellable={false}
57
- dynflowEnableConsole={false}
58
51
  endedAt=""
59
52
  errors={Array []}
60
- externalId=""
61
- hasSubTasks={false}
53
+ forceCancelTaskRequest={[Function]}
62
54
  help=""
63
55
  id="test"
64
56
  output=""
65
- parentTask=""
66
57
  progress={0}
67
58
  result="error"
68
- resumable={false}
69
- resumeTaskRequest={[Function]}
70
59
  startAt=""
71
60
  startBefore=""
72
61
  startedAt=""
@@ -74,6 +63,7 @@ exports[`Task rendering render with minimal Props 1`] = `
74
63
  taskProgressToggle={[MockFunction]}
75
64
  taskReload={false}
76
65
  taskReloadStart={[MockFunction]}
66
+ unlockTaskRequest={[Function]}
77
67
  username=""
78
68
  usernamePath=""
79
69
  />
@@ -83,14 +73,18 @@ exports[`Task rendering render with minimal Props 1`] = `
83
73
 
84
74
  exports[`Task rendering render with some Props 1`] = `
85
75
  <Fragment>
86
- <UnlockModal
76
+ <UnlockConfirmationModal
87
77
  id="unlockModal"
78
+ isOpen={false}
88
79
  onClick={[Function]}
80
+ setModalClosed={[Function]}
89
81
  />
90
- <ForceUnlockModal
82
+ <ForceUnlockConfirmationModal
91
83
  id="forceUnlockModal"
84
+ isOpen={false}
92
85
  onClick={[Function]}
93
86
  selectedRowsLen={1}
87
+ setModalClosed={[Function]}
94
88
  />
95
89
  <Grid
96
90
  bsClass="container"
@@ -107,39 +101,30 @@ exports[`Task rendering render with some Props 1`] = `
107
101
  cancelTaskRequest={[Function]}
108
102
  cancellable={false}
109
103
  dynflowEnableConsole={true}
110
- endedAt=""
111
- errors={Array []}
112
104
  externalId=""
105
+ forceCancelTaskRequest={[Function]}
113
106
  hasSubTasks={true}
114
- help=""
115
107
  id="test"
116
- output=""
117
108
  parentTask="parent-id"
118
- progress={0}
119
- result="error"
120
109
  resumable={false}
121
110
  resumeTaskRequest={[Function]}
122
- startAt=""
123
- startBefore=""
124
- startedAt=""
111
+ setForceUnlockModalOpen={[Function]}
112
+ setUnlockModalOpen={[Function]}
125
113
  state="paused"
126
114
  status="RESOLVED"
127
115
  taskProgressToggle={[MockFunction]}
128
116
  taskReload={true}
129
117
  taskReloadStart={[MockFunction]}
130
- username=""
131
- usernamePath=""
118
+ unlockTaskRequest={[Function]}
132
119
  />
133
120
  </Row>
134
121
  <TaskInfo
135
122
  action=""
136
123
  canEdit={true}
137
- cancelTaskRequest={[Function]}
138
- cancellable={false}
139
124
  dynflowEnableConsole={true}
140
125
  endedAt=""
141
126
  errors={Array []}
142
- externalId=""
127
+ forceCancelTaskRequest={[Function]}
143
128
  hasSubTasks={true}
144
129
  help=""
145
130
  id="test"
@@ -147,8 +132,6 @@ exports[`Task rendering render with some Props 1`] = `
147
132
  parentTask="parent-id"
148
133
  progress={0}
149
134
  result="error"
150
- resumable={false}
151
- resumeTaskRequest={[Function]}
152
135
  startAt=""
153
136
  startBefore=""
154
137
  startedAt=""
@@ -157,6 +140,7 @@ exports[`Task rendering render with some Props 1`] = `
157
140
  taskProgressToggle={[MockFunction]}
158
141
  taskReload={true}
159
142
  taskReloadStart={[MockFunction]}
143
+ unlockTaskRequest={[Function]}
160
144
  username=""
161
145
  usernamePath=""
162
146
  />
@@ -89,34 +89,20 @@ exports[`TaskDetails rendering render with min Props 1`] = `
89
89
  >
90
90
  <Task
91
91
  action=""
92
- canEdit={false}
93
- cancelTaskRequest={[Function]}
94
- cancellable={false}
95
- dynflowEnableConsole={false}
96
92
  endedAt=""
97
- errors={Array []}
98
93
  externalId=""
99
- hasSubTasks={false}
100
- help=""
94
+ forceCancelTaskRequest={[Function]}
101
95
  id="a15dd820-32f1-4ced-9ab7-c0fab8234c47"
102
96
  input={Array []}
103
97
  label=""
104
98
  output={Object {}}
105
- parentTask=""
106
- progress={0}
107
- result="error"
108
99
  resumable={false}
109
- resumeTaskRequest={[Function]}
110
- startAt=""
111
- startBefore=""
112
100
  startedAt=""
113
- state=""
114
101
  status="RESOLVED"
115
102
  taskProgressToggle={[Function]}
116
103
  taskReload={false}
117
104
  taskReloadStart={[MockFunction]}
118
- username=""
119
- usernamePath=""
105
+ unlockTaskRequest={[Function]}
120
106
  />
121
107
  </Tab>
122
108
  <Tab
@@ -1,4 +1,3 @@
1
- import { selectForemanTasks } from '../../../../ForemanTasksSelectors';
2
1
  import {
3
2
  selectTasksTableQuery,
4
3
  selectResults,
@@ -6,15 +5,7 @@ import {
6
5
  selectItemCount,
7
6
  selectAllRowsSelected,
8
7
  } from '../../TasksTableSelectors';
9
- import { RESUME_MODAL, CANCEL_MODAL } from '../../TasksTableConstants';
10
- import { FORCE_UNLOCK_MODAL } from '../../../TaskActions/TaskActionsConstants';
11
8
 
12
- export const selectCofirmModal = state =>
13
- selectForemanTasks(state).confirmModal || {};
14
-
15
- export const selectActionType = state => selectCofirmModal(state).actionType;
16
- export const selectActionText = state => selectCofirmModal(state).actionText;
17
- export const selectActionState = state => selectCofirmModal(state).actionState;
18
9
  export const selectClicked = state =>
19
10
  selectTasksTableQuery(state).clicked || {};
20
11
 
@@ -32,13 +23,6 @@ export const selectSelectedTasks = state => {
32
23
  };
33
24
 
34
25
  export const selectSelectedRowsLen = state => {
35
- if (
36
- [CANCEL_MODAL, RESUME_MODAL, FORCE_UNLOCK_MODAL].includes(
37
- selectActionType(state)
38
- )
39
- ) {
40
- return 1;
41
- }
42
26
  if (selectAllRowsSelected(state)) {
43
27
  return selectItemCount(state);
44
28
  }
@@ -0,0 +1,70 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { useDispatch } from 'react-redux';
4
+ import { translate as __ } from 'foremanReact/common/I18n';
5
+ import { Button, Modal, ModalVariant } from '@patternfly/react-core';
6
+
7
+ export const GenericConfirmModal = ({
8
+ isModalOpen,
9
+ setIsModalOpen,
10
+ title,
11
+ message,
12
+ onConfirm,
13
+ confirmButtonVariant,
14
+ ouiaIdPrefix,
15
+ }) => {
16
+ const dispatch = useDispatch();
17
+
18
+ const handleConfirm = () => {
19
+ const action = onConfirm();
20
+ if (action) {
21
+ dispatch(action);
22
+ }
23
+ setIsModalOpen(false);
24
+ };
25
+
26
+ return (
27
+ <Modal
28
+ title={title}
29
+ variant={ModalVariant.small}
30
+ isOpen={isModalOpen}
31
+ onClose={() => setIsModalOpen(false)}
32
+ ouiaId={`${ouiaIdPrefix}-modal`}
33
+ actions={[
34
+ <Button
35
+ ouiaId={`${ouiaIdPrefix}-modal-confirm-button`}
36
+ key="confirm"
37
+ className="confirm-button"
38
+ variant={confirmButtonVariant}
39
+ onClick={handleConfirm}
40
+ >
41
+ {__('Yes')}
42
+ </Button>,
43
+ <Button
44
+ ouiaId={`${ouiaIdPrefix}-modal-cancel-button`}
45
+ key="cancel"
46
+ variant="secondary"
47
+ onClick={() => setIsModalOpen(false)}
48
+ >
49
+ {__('No')}
50
+ </Button>,
51
+ ]}
52
+ >
53
+ {message}
54
+ </Modal>
55
+ );
56
+ };
57
+
58
+ GenericConfirmModal.propTypes = {
59
+ isModalOpen: PropTypes.bool.isRequired,
60
+ setIsModalOpen: PropTypes.func.isRequired,
61
+ title: PropTypes.string.isRequired,
62
+ message: PropTypes.string.isRequired,
63
+ onConfirm: PropTypes.func.isRequired,
64
+ confirmButtonVariant: PropTypes.string,
65
+ ouiaIdPrefix: PropTypes.string.isRequired,
66
+ };
67
+
68
+ GenericConfirmModal.defaultProps = {
69
+ confirmButtonVariant: 'primary',
70
+ };
@@ -1,8 +1,6 @@
1
1
  import { testSelectorsSnapshotWithFixtures } from '@theforeman/test';
2
2
  import {
3
- selectActionText,
4
- selectActionState,
5
- selectActionType,
3
+ selectClicked,
6
4
  selectSelectedTasks,
7
5
  selectSelectedRowsLen,
8
6
  } from '../ConfirmModalSelectors';
@@ -10,11 +8,6 @@ import { CANCEL_MODAL } from '../../../TasksTableConstants';
10
8
 
11
9
  const state = {
12
10
  foremanTasks: {
13
- confirmModal: {
14
- actionText: 'some-text',
15
- actionState: 'some-state',
16
- actionType: 'some-type',
17
- },
18
11
  tasksTable: {
19
12
  tasksTableContent: {
20
13
  results: [
@@ -28,26 +21,44 @@ const state = {
28
21
  ],
29
22
  itemCount: 10,
30
23
  },
31
- tasksTableQuery: { selectedRows: [1, 2, 3] },
24
+ tasksTableQuery: {
25
+ selectedRows: [1, 2, 3],
26
+ clicked: { taskId: '1', taskName: 'test-task' },
27
+ allRowsSelected: false,
28
+ },
32
29
  },
33
30
  },
34
31
  };
35
32
 
36
33
  const fixtures = {
37
- 'should select actionText': () => selectActionText(state),
38
- 'should select actionState': () => selectActionState(state),
39
- 'should select actionType': () => selectActionType(state),
34
+ 'should select clicked': () => selectClicked(state),
40
35
  'should select selectedTasks': () => selectSelectedTasks(state),
41
36
  'should select selectedRowsLen 1': () =>
42
37
  selectSelectedRowsLen({
43
38
  ...state,
44
- foremanTasks: { confirmModal: { actionType: CANCEL_MODAL } },
39
+ foremanTasks: {
40
+ tasksTable: {
41
+ ...state.foremanTasks.tasksTable,
42
+ tasksTableQuery: {
43
+ ...state.foremanTasks.tasksTable.tasksTableQuery,
44
+ clicked: { modalType: CANCEL_MODAL },
45
+ },
46
+ },
47
+ },
45
48
  }),
46
49
  'should select selectedRowsLen all': () => selectSelectedRowsLen(state),
47
50
  'should select selectedRowsLen some': () =>
48
51
  selectSelectedRowsLen({
49
52
  ...state,
50
- tasksTable: { tasksTableQuery: { allRowsSelected: true } },
53
+ foremanTasks: {
54
+ tasksTable: {
55
+ ...state.foremanTasks.tasksTable,
56
+ tasksTableQuery: {
57
+ ...state.foremanTasks.tasksTable.tasksTableQuery,
58
+ allRowsSelected: true,
59
+ },
60
+ },
61
+ },
51
62
  }),
52
63
  };
53
64
 
@@ -1,16 +1,17 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`TasksDashboard - Selectors should select actionState 1`] = `"some-state"`;
4
-
5
- exports[`TasksDashboard - Selectors should select actionText 1`] = `"some-text"`;
6
-
7
- exports[`TasksDashboard - Selectors should select actionType 1`] = `"some-type"`;
3
+ exports[`TasksDashboard - Selectors should select clicked 1`] = `
4
+ Object {
5
+ "taskId": "1",
6
+ "taskName": "test-task",
7
+ }
8
+ `;
8
9
 
9
- exports[`TasksDashboard - Selectors should select selectedRowsLen 1 1`] = `1`;
10
+ exports[`TasksDashboard - Selectors should select selectedRowsLen 1 1`] = `3`;
10
11
 
11
12
  exports[`TasksDashboard - Selectors should select selectedRowsLen all 1`] = `3`;
12
13
 
13
- exports[`TasksDashboard - Selectors should select selectedRowsLen some 1`] = `3`;
14
+ exports[`TasksDashboard - Selectors should select selectedRowsLen some 1`] = `0`;
14
15
 
15
16
  exports[`TasksDashboard - Selectors should select selectedTasks 1`] = `
16
17
  Array [