foreman-tasks 4.1.3 → 4.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba89e76b07357c27678169c5350b13a80ea346896e681e7061da8c9ff5c6d2ce
4
- data.tar.gz: c0a597c5a7db439fcd6627460b0fa91ed9e5bf0ef2d5308f356d35582c141b9d
3
+ metadata.gz: 3152af7ac771946d9090d5a1b867c6843ff6657ab2434c4daba986c60c83579e
4
+ data.tar.gz: 4d3cd7b0d58af7f59a5d7745e1b75444dc43066089c60854344c49dc1d58ed43
5
5
  SHA512:
6
- metadata.gz: 3f873f26387eb89860543bca5f888b017c2ac692c986873b97b48506f30429172d49e926450937262a9dcb06c26c45d7eefabdb7f3cce0b8c70ce6786ea7e4ad
7
- data.tar.gz: b021241e11f9db347960eb55e2497112cf996f1e77e48d92f593fa47b735c0268532ec61e2779bd35fc01768178037eaedf8248b59dfc178031dd56fb1340b6f
6
+ metadata.gz: 528a33eb7ef2128cdc476411c705762b3b63ba22d8a3ff3ca70755a42247c5a538494b1b248eee547a2a7ffa49821612f05f0f53e42ef026a70e107e064246f1
7
+ data.tar.gz: 85033e3dd3c84eb6aa8dd99e837ad024acd42639c1351f518883ef431b9b95c9ddb833f11e6708bda488113c1a33faf7959ac4a11bbeb4ea16e29a32c955e670
@@ -1,3 +1,3 @@
1
1
  module ForemanTasks
2
- VERSION = '4.1.3'.freeze
2
+ VERSION = '4.1.4'.freeze
3
3
  end
@@ -27,6 +27,7 @@ const TasksTable = ({
27
27
  openClickedModal,
28
28
  openModal,
29
29
  allRowsSelected,
30
+ permissions,
30
31
  }) => {
31
32
  const { search, pathname } = history.location;
32
33
  const url = pathname + search;
@@ -59,6 +60,7 @@ const TasksTable = ({
59
60
  },
60
61
  isSelected: ({ rowData }) =>
61
62
  allRowsSelected || selectedRows.includes(rowData.id),
63
+ permissions,
62
64
  };
63
65
  };
64
66
 
@@ -162,6 +164,9 @@ TasksTable.propTypes = {
162
164
  unselectRow: PropTypes.func.isRequired,
163
165
  openModal: PropTypes.func.isRequired,
164
166
  allRowsSelected: PropTypes.bool,
167
+ permissions: PropTypes.shape({
168
+ edit: PropTypes.bool,
169
+ }),
165
170
  };
166
171
 
167
172
  TasksTable.defaultProps = {
@@ -173,6 +178,9 @@ TasksTable.defaultProps = {
173
178
  },
174
179
  selectedRows: [],
175
180
  allRowsSelected: false,
181
+ permissions: {
182
+ edit: false,
183
+ },
176
184
  };
177
185
 
178
186
  export default TasksTable;
@@ -81,7 +81,10 @@ const TasksTablePage = ({
81
81
  title={__('Export All')}
82
82
  />
83
83
  <ActionSelectButton
84
- disabled={!(props.selectedRows.length || props.allRowsSelected)}
84
+ disabled={
85
+ !props.permissions.edit ||
86
+ !(props.selectedRows.length || props.allRowsSelected)
87
+ }
85
88
  onCancel={() => openModal(CANCEL_SELECTED_MODAL)}
86
89
  onResume={() => openModal(RESUME_SELECTED_MODAL)}
87
90
  onForceCancel={() => openModal(FORCE_UNLOCK_SELECTED_MODAL)}
@@ -94,15 +97,17 @@ const TasksTablePage = ({
94
97
  }
95
98
  >
96
99
  <React.Fragment>
97
- {showSelectAll && props.itemCount >= props.pagination.perPage && (
98
- <SelectAllAlert
99
- itemCount={props.itemCount}
100
- perPage={props.pagination.perPage}
101
- selectAllRows={selectAllRows}
102
- unselectAllRows={props.unselectAllRows}
103
- allRowsSelected={props.allRowsSelected}
104
- />
105
- )}
100
+ {props.permissions.edit &&
101
+ showSelectAll &&
102
+ props.itemCount >= props.pagination.perPage && (
103
+ <SelectAllAlert
104
+ itemCount={props.itemCount}
105
+ perPage={props.pagination.perPage}
106
+ selectAllRows={selectAllRows}
107
+ unselectAllRows={props.unselectAllRows}
108
+ allRowsSelected={props.allRowsSelected}
109
+ />
110
+ )}
106
111
  <TasksTable history={history} {...props} openModal={openModal} />
107
112
  </React.Fragment>
108
113
  </PageLayout>
@@ -131,6 +136,9 @@ TasksTablePage.propTypes = {
131
136
  showSelectAll: PropTypes.bool,
132
137
  unselectAllRows: PropTypes.func.isRequired,
133
138
  reloadPage: PropTypes.func.isRequired,
139
+ permissions: PropTypes.shape({
140
+ edit: PropTypes.bool,
141
+ }),
134
142
  };
135
143
 
136
144
  TasksTablePage.defaultProps = {
@@ -146,6 +154,9 @@ TasksTablePage.defaultProps = {
146
154
  createHeader: () => __('Tasks'),
147
155
  showSelectAll: false,
148
156
  modalID: '',
157
+ permissions: {
158
+ edit: false,
159
+ },
149
160
  };
150
161
 
151
162
  export default TasksTablePage;
@@ -19,8 +19,13 @@ const initialState = Immutable({
19
19
 
20
20
  export const TasksTableQueryReducer = (state = initialState, action) => {
21
21
  const { type, payload, response } = action;
22
- const { subtotal, page, per_page: perPageString, action_name: actionName } =
23
- response || {};
22
+ const {
23
+ subtotal,
24
+ page,
25
+ per_page: perPageString,
26
+ action_name: actionName,
27
+ can_edit: canEdit,
28
+ } = response || {};
24
29
  const ACTION_TYPES = createTableActionTypes(TASKS_TABLE_ID);
25
30
  switch (type) {
26
31
  case SELECT_ALL_ROWS:
@@ -34,6 +39,9 @@ export const TasksTableQueryReducer = (state = initialState, action) => {
34
39
  perPage: Number(perPageString),
35
40
  },
36
41
  selectedRows: [],
42
+ permissions: {
43
+ edit: canEdit,
44
+ },
37
45
  });
38
46
  case SELECT_ROWS:
39
47
  return state.set('selectedRows', union(payload, state.selectedRows));
@@ -24,6 +24,9 @@ export const selectActionName = state =>
24
24
  export const selectSelectedRows = state =>
25
25
  selectTasksTableQuery(state).selectedRows || [];
26
26
 
27
+ export const selectPermissions = state =>
28
+ selectTasksTableQuery(state).permissions || { edit: false };
29
+
27
30
  export const selectResults = createSelector(
28
31
  selectTasksTableContent,
29
32
  ({ results }) =>
@@ -126,6 +126,11 @@ exports[`TasksTablePage rendering render with Breadcrubs and edit permissions 1`
126
126
  }
127
127
  }
128
128
  parentTaskID={null}
129
+ permissions={
130
+ Object {
131
+ "edit": false,
132
+ }
133
+ }
129
134
  reloadPage={[MockFunction]}
130
135
  results={
131
136
  Array [
@@ -261,6 +266,11 @@ exports[`TasksTablePage rendering render with minimal props 1`] = `
261
266
  }
262
267
  }
263
268
  parentTaskID={null}
269
+ permissions={
270
+ Object {
271
+ "edit": false,
272
+ }
273
+ }
264
274
  reloadPage={[MockFunction]}
265
275
  results={
266
276
  Array [
@@ -59,6 +59,9 @@ Object {
59
59
  "page": 3,
60
60
  "perPage": 12,
61
61
  },
62
+ "permissions": Object {
63
+ "edit": undefined,
64
+ },
62
65
  "selectedRows": Array [],
63
66
  },
64
67
  }
@@ -3,6 +3,7 @@
3
3
  exports[`selectionHeaderCellFormatter render 1`] = `
4
4
  <TableSelectionHeaderCell
5
5
  checked={true}
6
+ disabled={false}
6
7
  id="selectAll"
7
8
  label="some-label"
8
9
  onChange={[Function]}
@@ -4,7 +4,7 @@ describe('selectionHeaderCellFormatter', () => {
4
4
  it('render', () => {
5
5
  expect(
6
6
  selectionHeaderCellFormatter(
7
- { allPageSelected: () => true },
7
+ { allPageSelected: () => true, permissions: { edit: true } },
8
8
  'some-label'
9
9
  )
10
10
  ).toMatchSnapshot();
@@ -5,6 +5,7 @@ export default (selectionController, label) => (
5
5
  <TableSelectionHeaderCell
6
6
  label={label}
7
7
  checked={selectionController.allPageSelected()}
8
+ disabled={!selectionController.permissions.edit}
8
9
  onChange={selectionController.selectPage}
9
10
  />
10
11
  );
@@ -16,6 +16,7 @@ import {
16
16
  selectAllRowsSelected,
17
17
  selectShowSelectAll,
18
18
  selectModalID,
19
+ selectPermissions,
19
20
  } from './TasksTableSelectors';
20
21
 
21
22
  const mapStateToProps = state => ({
@@ -30,6 +31,7 @@ const mapStateToProps = state => ({
30
31
  allRowsSelected: selectAllRowsSelected(state),
31
32
  showSelectAll: selectShowSelectAll(state),
32
33
  modalID: selectModalID(state),
34
+ permissions: selectPermissions(state),
33
35
  });
34
36
 
35
37
  const mapDispatchToProps = dispatch =>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman-tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.3
4
+ version: 4.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Nečas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-10 00:00:00.000000000 Z
11
+ date: 2021-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dynflow