foreman-tasks 0.15.1 → 0.15.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.babelrc +9 -1
  3. data/.eslintrc +6 -0
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +6 -0
  6. data/.storybook/webpack.config.js +51 -54
  7. data/app/controllers/foreman_tasks/api/tasks_controller.rb +0 -2
  8. data/app/controllers/foreman_tasks/tasks_controller.rb +6 -1
  9. data/app/helpers/foreman_tasks/foreman_tasks_helper.rb +8 -0
  10. data/app/lib/actions/base.rb +7 -0
  11. data/app/lib/actions/helpers/lifecycle_logging.rb +21 -0
  12. data/app/lib/actions/proxy_action.rb +4 -2
  13. data/app/models/foreman_tasks/task.rb +23 -0
  14. data/app/models/foreman_tasks/task/summarizer.rb +96 -6
  15. data/app/models/foreman_tasks/triggering.rb +2 -2
  16. data/app/models/setting/foreman_tasks.rb +8 -1
  17. data/app/services/foreman_tasks/dashboard_table_filter.rb +47 -0
  18. data/app/services/foreman_tasks/troubleshooting_help_generator.rb +92 -0
  19. data/app/services/ui_notifications/tasks.rb +20 -0
  20. data/app/services/ui_notifications/tasks/task_paused_admin.rb +43 -0
  21. data/app/services/ui_notifications/tasks/task_paused_owner.rb +30 -0
  22. data/app/views/foreman_tasks/tasks/_details.html.erb +5 -3
  23. data/app/views/foreman_tasks/tasks/index.html.erb +13 -0
  24. data/config/routes.rb +1 -0
  25. data/db/migrate/20190318153925_add_task_state_updated_at.foreman_tasks.rb +5 -0
  26. data/db/migrate/20190404132157_add_implicit_varchar_uuid_cast.rb +25 -0
  27. data/db/seeds.d/30-notification_blueprints.rb +33 -0
  28. data/foreman-tasks.gemspec +1 -1
  29. data/lib/foreman_tasks/cleaner.rb +5 -4
  30. data/lib/foreman_tasks/engine.rb +1 -1
  31. data/lib/foreman_tasks/test_helpers.rb +10 -0
  32. data/lib/foreman_tasks/version.rb +1 -1
  33. data/package.json +14 -11
  34. data/test/controllers/tasks_controller_test.rb +10 -0
  35. data/test/foreman_tasks_test_helper.rb +4 -0
  36. data/test/support/dummy_dynflow_action.rb +29 -0
  37. data/test/support/history_tasks_builder.rb +42 -0
  38. data/test/unit/actions/action_with_sub_plans_test.rb +4 -1
  39. data/test/unit/actions/bulk_action_test.rb +2 -0
  40. data/test/unit/cleaner_test.rb +15 -0
  41. data/test/unit/dashboard_table_filter_test.rb +65 -0
  42. data/test/unit/summarizer_test.rb +39 -0
  43. data/test/unit/task_test.rb +14 -0
  44. data/test/unit/troubleshooting_help_generator_test.rb +71 -0
  45. data/test/unit/ui_notifications_test.rb +86 -0
  46. data/webpack/ForemanTasks/Components/Chart/Chart.js +128 -0
  47. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/PausedTasksCard/PausedTasksCard.js +20 -0
  48. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/PausedTasksCard/PausedTasksCard.stories.js +51 -0
  49. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/PausedTasksCard/PausedTasksCard.test.js +11 -0
  50. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/PausedTasksCard/__snapshots__/PausedTasksCard.test.js.snap +36 -0
  51. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/RunningTasksCard/RunningTasksCard.js +20 -0
  52. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/RunningTasksCard/RunningTasksCard.stories.js +51 -0
  53. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/RunningTasksCard/RunningTasksCard.test.js +11 -0
  54. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/RunningTasksCard/__snapshots__/RunningTasksCard.test.js.snap +36 -0
  55. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/ScheduledTasksCard/ScheduledTasksCard.js +64 -0
  56. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/ScheduledTasksCard/ScheduledTasksCard.scss +25 -0
  57. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/ScheduledTasksCard/ScheduledTasksCard.stories.js +28 -0
  58. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/ScheduledTasksCard/ScheduledTasksCard.test.js +18 -0
  59. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/ScheduledTasksCard/__snapshots__/ScheduledTasksCard.test.js.snap +94 -0
  60. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/StoppedTasksCard.js +89 -0
  61. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/StoppedTasksCard.scss +46 -0
  62. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/StoppedTasksCard.stories.js +72 -0
  63. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/StoppedTasksCard.test.js +48 -0
  64. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/StoppedTasksCardHelper.js +63 -0
  65. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/StoppedTasksCard/__snapshots__/StoppedTasksCard.test.js.snap +973 -0
  66. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutCard/TasksDonutCard.js +96 -0
  67. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutCard/TasksDonutCard.scss +17 -0
  68. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutCard/TasksDonutCard.stories.js +46 -0
  69. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutCard/TasksDonutCard.test.js +43 -0
  70. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutCard/__snapshots__/TasksDonutCard.test.js.snap +183 -0
  71. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutChart/TasksDonutChart.js +166 -0
  72. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutChart/TasksDonutChart.scss +24 -0
  73. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutChart/TasksDonutChart.stories.js +25 -0
  74. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutChart/TasksDonutChart.test.js +40 -0
  75. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutChart/TasksDonutChartConstants.js +13 -0
  76. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutChart/TasksDonutChartHelper.js +94 -0
  77. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutChart/TasksDonutChartHelper.test.js +152 -0
  78. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutChart/__snapshots__/TasksDonutChart.test.js.snap +302 -0
  79. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/Components/TasksDonutChart/__snapshots__/TasksDonutChartHelper.test.js.snap +21 -0
  80. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/TasksCardsGrid.fixtures.js +25 -0
  81. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/TasksCardsGrid.js +72 -0
  82. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/TasksCardsGrid.stories.js +52 -0
  83. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/TasksCardsGrid.test.js +21 -0
  84. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksCardsGrid/__snapshots__/TasksCardsGrid.test.js.snap +223 -0
  85. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksLabelsRow/TasksLabelsRow.js +57 -0
  86. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksLabelsRow/TasksLabelsRow.scss +26 -0
  87. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksLabelsRow/TasksLabelsRow.stories.js +22 -0
  88. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksLabelsRow/TasksLabelsRow.test.js +57 -0
  89. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksLabelsRow/__snapshots__/TasksLabelsRow.test.js.snap +47 -0
  90. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksTimeRow/Components/TimeDropDown/TimeDropDown.js +51 -0
  91. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksTimeRow/Components/TimeDropDown/TimeDropDown.stories.js +23 -0
  92. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksTimeRow/Components/TimeDropDown/TimeDropDown.test.js +19 -0
  93. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksTimeRow/Components/TimeDropDown/__snapshots__/TimeDropDown.test.js.snap +85 -0
  94. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksTimeRow/TasksTimeRow.js +33 -0
  95. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksTimeRow/TasksTimeRow.scss +11 -0
  96. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksTimeRow/TasksTimeRow.stories.js +22 -0
  97. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksTimeRow/TasksTimeRow.test.js +15 -0
  98. data/webpack/ForemanTasks/Components/TasksDashboard/Components/TasksTimeRow/__snapshots__/TasksTimeRow.test.js.snap +41 -0
  99. data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboard.js +77 -0
  100. data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboard.scss +6 -0
  101. data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboardActions.js +62 -0
  102. data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboardConstants.js +94 -0
  103. data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboardHelper.js +78 -0
  104. data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboardPropTypes.js +13 -0
  105. data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboardReducer.js +50 -0
  106. data/webpack/ForemanTasks/Components/TasksDashboard/TasksDashboardSelectors.js +44 -0
  107. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/TasksDashboard.test.js +13 -0
  108. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/TasksDashboardActions.test.js +37 -0
  109. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/TasksDashboardHelper.test.js +36 -0
  110. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/TasksDashboardReducer.test.js +58 -0
  111. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/TasksDashboardSelectors.test..js +59 -0
  112. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/__snapshots__/TasksDashboard.test.js.snap +51 -0
  113. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/__snapshots__/TasksDashboardActions.test.js.snap +61 -0
  114. data/webpack/ForemanTasks/Components/TasksDashboard/__tests__/__snapshots__/TasksDashboardReducer.test.js.snap +280 -0
  115. data/webpack/ForemanTasks/Components/TasksDashboard/index.js +25 -0
  116. data/webpack/ForemanTasks/ForemanTasksReducers.js +10 -0
  117. data/webpack/ForemanTasks/ForemanTasksSelectors.js +1 -0
  118. data/webpack/__mocks__/foremanReact/API.js +7 -0
  119. data/webpack/__mocks__/foremanReact/common/I18n.js +5 -0
  120. data/webpack/__mocks__/foremanReact/common/helpers.js +3 -0
  121. data/webpack/index.js +13 -1
  122. data/webpack/stories/decorators/index.js +1 -0
  123. data/webpack/stories/decorators/withCardsDecorator.js +14 -0
  124. data/webpack/stories/index.js +1 -3
  125. data/webpack/stories/index.scss +6 -0
  126. metadata +101 -8
  127. data/webpack/ForemanTasks/components/Hello/Hello.stories.js +0 -5
  128. data/webpack/ForemanTasks/components/Hello/__tests__/Hello.test.js +0 -11
  129. data/webpack/ForemanTasks/components/Hello/__tests__/__snapshots__/Hello.test.js.snap +0 -7
  130. data/webpack/ForemanTasks/components/Hello/index.js +0 -5
@@ -0,0 +1,48 @@
1
+ import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
2
+ import {
3
+ TASKS_DASHBOARD_AVAILABLE_TIMES,
4
+ TASKS_DASHBOARD_AVAILABLE_QUERY_STATES,
5
+ TASKS_DASHBOARD_AVAILABLE_QUERY_MODES,
6
+ TASKS_DASHBOARD_AVAILABLE_QUERY_RESULTS,
7
+ } from '../../../../TasksDashboardConstants';
8
+ import StoppedTasksCard from './StoppedTasksCard';
9
+
10
+ const { STOPPED } = TASKS_DASHBOARD_AVAILABLE_QUERY_STATES;
11
+ const { LAST } = TASKS_DASHBOARD_AVAILABLE_QUERY_MODES;
12
+ const { WEEK } = TASKS_DASHBOARD_AVAILABLE_TIMES;
13
+
14
+ const fixtures = {
15
+ 'render with minimal props': {},
16
+ 'render with props': {
17
+ data: {
18
+ error: { total: 9, last: 1 },
19
+ warning: { total: 8, last: 2 },
20
+ success: { total: 7, last: 3 },
21
+ },
22
+ time: WEEK,
23
+ },
24
+ 'render selected': {
25
+ query: { state: STOPPED },
26
+ },
27
+ };
28
+
29
+ Object.values(TASKS_DASHBOARD_AVAILABLE_QUERY_RESULTS).forEach(result => {
30
+ fixtures[`render ${result}-total selected`] = {
31
+ query: {
32
+ state: STOPPED,
33
+ result,
34
+ },
35
+ };
36
+ fixtures[`render ${result}-last selected`] = {
37
+ time: WEEK,
38
+ query: {
39
+ state: STOPPED,
40
+ result,
41
+ mode: LAST,
42
+ time: WEEK,
43
+ },
44
+ };
45
+ });
46
+
47
+ describe('StoppedTasksCard', () =>
48
+ testComponentSnapshotsWithFixtures(StoppedTasksCard, fixtures));
@@ -0,0 +1,63 @@
1
+ import React from 'react';
2
+ import { capitalize } from 'lodash';
3
+ import classNames from 'classnames';
4
+ import { Icon } from 'patternfly-react';
5
+ import {
6
+ TASKS_DASHBOARD_AVAILABLE_QUERY_STATES,
7
+ TASKS_DASHBOARD_AVAILABLE_QUERY_MODES,
8
+ } from '../../../../TasksDashboardConstants';
9
+
10
+ const resultIcons = {
11
+ error: <Icon type="pf" name="error-circle-o" />,
12
+ warning: <Icon type="pf" name="warning-triangle-o" />,
13
+ success: <Icon type="pf" name="ok" />,
14
+ };
15
+
16
+ export const StoppedTable = (data, query, time, updateQuery) =>
17
+ Object.entries(data).map(([result, { total, last }]) => {
18
+ const { STOPPED } = TASKS_DASHBOARD_AVAILABLE_QUERY_STATES;
19
+ const { LAST } = TASKS_DASHBOARD_AVAILABLE_QUERY_MODES;
20
+ const { state, mode } = query;
21
+
22
+ const active = state === STOPPED && query.result === result;
23
+ const activeTotal = active && mode !== LAST;
24
+ const activeLast = active && mode === LAST && query.time === time;
25
+ const notFocusedTotal =
26
+ state && !(state === STOPPED && !query.result) && !activeTotal;
27
+ const notFocusedLast =
28
+ state && !(state === STOPPED && !query.result) && !activeLast;
29
+
30
+ return (
31
+ <tr key={result}>
32
+ <td>
33
+ {resultIcons[result]}
34
+ {capitalize(result)}
35
+ </td>
36
+ <td
37
+ className={classNames('data-col', {
38
+ active: active && mode !== LAST,
39
+ 'not-focused': notFocusedTotal,
40
+ })}
41
+ onClick={() => updateQuery({ state: STOPPED, result })}
42
+ >
43
+ {total}
44
+ </td>
45
+ <td
46
+ className={classNames('data-col', {
47
+ active: activeLast,
48
+ 'not-focused': notFocusedLast,
49
+ })}
50
+ onClick={() =>
51
+ updateQuery({
52
+ state: STOPPED,
53
+ result,
54
+ mode: LAST,
55
+ time,
56
+ })
57
+ }
58
+ >
59
+ {last}
60
+ </td>
61
+ </tr>
62
+ );
63
+ });
@@ -0,0 +1,973 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`StoppedTasksCard render error-last selected 1`] = `
4
+ <Card
5
+ accented={false}
6
+ aggregated={false}
7
+ aggregatedMini={false}
8
+ cardRef={null}
9
+ className="tasks-donut-card stopped-tasks-card selected-tasks-card"
10
+ matchHeight={false}
11
+ >
12
+ <CardTitle
13
+ className=""
14
+ onClick={[Function]}
15
+ >
16
+ Stopped
17
+ </CardTitle>
18
+ <CardBody
19
+ className=""
20
+ >
21
+ <table
22
+ className="table table-bordered table-striped stopped-table"
23
+ >
24
+ <thead>
25
+ <tr>
26
+ <th />
27
+ <th>
28
+ Total
29
+ </th>
30
+ <th>
31
+ week
32
+ </th>
33
+ </tr>
34
+ </thead>
35
+ <tbody>
36
+ <tr
37
+ key="error"
38
+ >
39
+ <td>
40
+ <Icon
41
+ name="error-circle-o"
42
+ type="pf"
43
+ />
44
+ Error
45
+ </td>
46
+ <td
47
+ className="data-col not-focused"
48
+ onClick={[Function]}
49
+ >
50
+ 0
51
+ </td>
52
+ <td
53
+ className="data-col active"
54
+ onClick={[Function]}
55
+ >
56
+ 0
57
+ </td>
58
+ </tr>
59
+ <tr
60
+ key="warning"
61
+ >
62
+ <td>
63
+ <Icon
64
+ name="warning-triangle-o"
65
+ type="pf"
66
+ />
67
+ Warning
68
+ </td>
69
+ <td
70
+ className="data-col not-focused"
71
+ onClick={[Function]}
72
+ >
73
+ 0
74
+ </td>
75
+ <td
76
+ className="data-col not-focused"
77
+ onClick={[Function]}
78
+ >
79
+ 0
80
+ </td>
81
+ </tr>
82
+ <tr
83
+ key="success"
84
+ >
85
+ <td>
86
+ <Icon
87
+ name="ok"
88
+ type="pf"
89
+ />
90
+ Success
91
+ </td>
92
+ <td
93
+ className="data-col not-focused"
94
+ onClick={[Function]}
95
+ >
96
+ 0
97
+ </td>
98
+ <td
99
+ className="data-col not-focused"
100
+ onClick={[Function]}
101
+ >
102
+ 0
103
+ </td>
104
+ </tr>
105
+ </tbody>
106
+ </table>
107
+ </CardBody>
108
+ </Card>
109
+ `;
110
+
111
+ exports[`StoppedTasksCard render error-total selected 1`] = `
112
+ <Card
113
+ accented={false}
114
+ aggregated={false}
115
+ aggregatedMini={false}
116
+ cardRef={null}
117
+ className="tasks-donut-card stopped-tasks-card selected-tasks-card"
118
+ matchHeight={false}
119
+ >
120
+ <CardTitle
121
+ className=""
122
+ onClick={[Function]}
123
+ >
124
+ Stopped
125
+ </CardTitle>
126
+ <CardBody
127
+ className=""
128
+ >
129
+ <table
130
+ className="table table-bordered table-striped stopped-table"
131
+ >
132
+ <thead>
133
+ <tr>
134
+ <th />
135
+ <th>
136
+ Total
137
+ </th>
138
+ <th>
139
+ 24h
140
+ </th>
141
+ </tr>
142
+ </thead>
143
+ <tbody>
144
+ <tr
145
+ key="error"
146
+ >
147
+ <td>
148
+ <Icon
149
+ name="error-circle-o"
150
+ type="pf"
151
+ />
152
+ Error
153
+ </td>
154
+ <td
155
+ className="data-col active"
156
+ onClick={[Function]}
157
+ >
158
+ 0
159
+ </td>
160
+ <td
161
+ className="data-col not-focused"
162
+ onClick={[Function]}
163
+ >
164
+ 0
165
+ </td>
166
+ </tr>
167
+ <tr
168
+ key="warning"
169
+ >
170
+ <td>
171
+ <Icon
172
+ name="warning-triangle-o"
173
+ type="pf"
174
+ />
175
+ Warning
176
+ </td>
177
+ <td
178
+ className="data-col not-focused"
179
+ onClick={[Function]}
180
+ >
181
+ 0
182
+ </td>
183
+ <td
184
+ className="data-col not-focused"
185
+ onClick={[Function]}
186
+ >
187
+ 0
188
+ </td>
189
+ </tr>
190
+ <tr
191
+ key="success"
192
+ >
193
+ <td>
194
+ <Icon
195
+ name="ok"
196
+ type="pf"
197
+ />
198
+ Success
199
+ </td>
200
+ <td
201
+ className="data-col not-focused"
202
+ onClick={[Function]}
203
+ >
204
+ 0
205
+ </td>
206
+ <td
207
+ className="data-col not-focused"
208
+ onClick={[Function]}
209
+ >
210
+ 0
211
+ </td>
212
+ </tr>
213
+ </tbody>
214
+ </table>
215
+ </CardBody>
216
+ </Card>
217
+ `;
218
+
219
+ exports[`StoppedTasksCard render selected 1`] = `
220
+ <Card
221
+ accented={false}
222
+ aggregated={false}
223
+ aggregatedMini={false}
224
+ cardRef={null}
225
+ className="tasks-donut-card stopped-tasks-card selected-tasks-card"
226
+ matchHeight={false}
227
+ >
228
+ <CardTitle
229
+ className=""
230
+ onClick={[Function]}
231
+ >
232
+ Stopped
233
+ </CardTitle>
234
+ <CardBody
235
+ className=""
236
+ >
237
+ <table
238
+ className="table table-bordered table-striped stopped-table"
239
+ >
240
+ <thead>
241
+ <tr>
242
+ <th />
243
+ <th>
244
+ Total
245
+ </th>
246
+ <th>
247
+ 24h
248
+ </th>
249
+ </tr>
250
+ </thead>
251
+ <tbody>
252
+ <tr
253
+ key="error"
254
+ >
255
+ <td>
256
+ <Icon
257
+ name="error-circle-o"
258
+ type="pf"
259
+ />
260
+ Error
261
+ </td>
262
+ <td
263
+ className="data-col"
264
+ onClick={[Function]}
265
+ >
266
+ 0
267
+ </td>
268
+ <td
269
+ className="data-col"
270
+ onClick={[Function]}
271
+ >
272
+ 0
273
+ </td>
274
+ </tr>
275
+ <tr
276
+ key="warning"
277
+ >
278
+ <td>
279
+ <Icon
280
+ name="warning-triangle-o"
281
+ type="pf"
282
+ />
283
+ Warning
284
+ </td>
285
+ <td
286
+ className="data-col"
287
+ onClick={[Function]}
288
+ >
289
+ 0
290
+ </td>
291
+ <td
292
+ className="data-col"
293
+ onClick={[Function]}
294
+ >
295
+ 0
296
+ </td>
297
+ </tr>
298
+ <tr
299
+ key="success"
300
+ >
301
+ <td>
302
+ <Icon
303
+ name="ok"
304
+ type="pf"
305
+ />
306
+ Success
307
+ </td>
308
+ <td
309
+ className="data-col"
310
+ onClick={[Function]}
311
+ >
312
+ 0
313
+ </td>
314
+ <td
315
+ className="data-col"
316
+ onClick={[Function]}
317
+ >
318
+ 0
319
+ </td>
320
+ </tr>
321
+ </tbody>
322
+ </table>
323
+ </CardBody>
324
+ </Card>
325
+ `;
326
+
327
+ exports[`StoppedTasksCard render success-last selected 1`] = `
328
+ <Card
329
+ accented={false}
330
+ aggregated={false}
331
+ aggregatedMini={false}
332
+ cardRef={null}
333
+ className="tasks-donut-card stopped-tasks-card selected-tasks-card"
334
+ matchHeight={false}
335
+ >
336
+ <CardTitle
337
+ className=""
338
+ onClick={[Function]}
339
+ >
340
+ Stopped
341
+ </CardTitle>
342
+ <CardBody
343
+ className=""
344
+ >
345
+ <table
346
+ className="table table-bordered table-striped stopped-table"
347
+ >
348
+ <thead>
349
+ <tr>
350
+ <th />
351
+ <th>
352
+ Total
353
+ </th>
354
+ <th>
355
+ week
356
+ </th>
357
+ </tr>
358
+ </thead>
359
+ <tbody>
360
+ <tr
361
+ key="error"
362
+ >
363
+ <td>
364
+ <Icon
365
+ name="error-circle-o"
366
+ type="pf"
367
+ />
368
+ Error
369
+ </td>
370
+ <td
371
+ className="data-col not-focused"
372
+ onClick={[Function]}
373
+ >
374
+ 0
375
+ </td>
376
+ <td
377
+ className="data-col not-focused"
378
+ onClick={[Function]}
379
+ >
380
+ 0
381
+ </td>
382
+ </tr>
383
+ <tr
384
+ key="warning"
385
+ >
386
+ <td>
387
+ <Icon
388
+ name="warning-triangle-o"
389
+ type="pf"
390
+ />
391
+ Warning
392
+ </td>
393
+ <td
394
+ className="data-col not-focused"
395
+ onClick={[Function]}
396
+ >
397
+ 0
398
+ </td>
399
+ <td
400
+ className="data-col not-focused"
401
+ onClick={[Function]}
402
+ >
403
+ 0
404
+ </td>
405
+ </tr>
406
+ <tr
407
+ key="success"
408
+ >
409
+ <td>
410
+ <Icon
411
+ name="ok"
412
+ type="pf"
413
+ />
414
+ Success
415
+ </td>
416
+ <td
417
+ className="data-col not-focused"
418
+ onClick={[Function]}
419
+ >
420
+ 0
421
+ </td>
422
+ <td
423
+ className="data-col active"
424
+ onClick={[Function]}
425
+ >
426
+ 0
427
+ </td>
428
+ </tr>
429
+ </tbody>
430
+ </table>
431
+ </CardBody>
432
+ </Card>
433
+ `;
434
+
435
+ exports[`StoppedTasksCard render success-total selected 1`] = `
436
+ <Card
437
+ accented={false}
438
+ aggregated={false}
439
+ aggregatedMini={false}
440
+ cardRef={null}
441
+ className="tasks-donut-card stopped-tasks-card selected-tasks-card"
442
+ matchHeight={false}
443
+ >
444
+ <CardTitle
445
+ className=""
446
+ onClick={[Function]}
447
+ >
448
+ Stopped
449
+ </CardTitle>
450
+ <CardBody
451
+ className=""
452
+ >
453
+ <table
454
+ className="table table-bordered table-striped stopped-table"
455
+ >
456
+ <thead>
457
+ <tr>
458
+ <th />
459
+ <th>
460
+ Total
461
+ </th>
462
+ <th>
463
+ 24h
464
+ </th>
465
+ </tr>
466
+ </thead>
467
+ <tbody>
468
+ <tr
469
+ key="error"
470
+ >
471
+ <td>
472
+ <Icon
473
+ name="error-circle-o"
474
+ type="pf"
475
+ />
476
+ Error
477
+ </td>
478
+ <td
479
+ className="data-col not-focused"
480
+ onClick={[Function]}
481
+ >
482
+ 0
483
+ </td>
484
+ <td
485
+ className="data-col not-focused"
486
+ onClick={[Function]}
487
+ >
488
+ 0
489
+ </td>
490
+ </tr>
491
+ <tr
492
+ key="warning"
493
+ >
494
+ <td>
495
+ <Icon
496
+ name="warning-triangle-o"
497
+ type="pf"
498
+ />
499
+ Warning
500
+ </td>
501
+ <td
502
+ className="data-col not-focused"
503
+ onClick={[Function]}
504
+ >
505
+ 0
506
+ </td>
507
+ <td
508
+ className="data-col not-focused"
509
+ onClick={[Function]}
510
+ >
511
+ 0
512
+ </td>
513
+ </tr>
514
+ <tr
515
+ key="success"
516
+ >
517
+ <td>
518
+ <Icon
519
+ name="ok"
520
+ type="pf"
521
+ />
522
+ Success
523
+ </td>
524
+ <td
525
+ className="data-col active"
526
+ onClick={[Function]}
527
+ >
528
+ 0
529
+ </td>
530
+ <td
531
+ className="data-col not-focused"
532
+ onClick={[Function]}
533
+ >
534
+ 0
535
+ </td>
536
+ </tr>
537
+ </tbody>
538
+ </table>
539
+ </CardBody>
540
+ </Card>
541
+ `;
542
+
543
+ exports[`StoppedTasksCard render warning-last selected 1`] = `
544
+ <Card
545
+ accented={false}
546
+ aggregated={false}
547
+ aggregatedMini={false}
548
+ cardRef={null}
549
+ className="tasks-donut-card stopped-tasks-card selected-tasks-card"
550
+ matchHeight={false}
551
+ >
552
+ <CardTitle
553
+ className=""
554
+ onClick={[Function]}
555
+ >
556
+ Stopped
557
+ </CardTitle>
558
+ <CardBody
559
+ className=""
560
+ >
561
+ <table
562
+ className="table table-bordered table-striped stopped-table"
563
+ >
564
+ <thead>
565
+ <tr>
566
+ <th />
567
+ <th>
568
+ Total
569
+ </th>
570
+ <th>
571
+ week
572
+ </th>
573
+ </tr>
574
+ </thead>
575
+ <tbody>
576
+ <tr
577
+ key="error"
578
+ >
579
+ <td>
580
+ <Icon
581
+ name="error-circle-o"
582
+ type="pf"
583
+ />
584
+ Error
585
+ </td>
586
+ <td
587
+ className="data-col not-focused"
588
+ onClick={[Function]}
589
+ >
590
+ 0
591
+ </td>
592
+ <td
593
+ className="data-col not-focused"
594
+ onClick={[Function]}
595
+ >
596
+ 0
597
+ </td>
598
+ </tr>
599
+ <tr
600
+ key="warning"
601
+ >
602
+ <td>
603
+ <Icon
604
+ name="warning-triangle-o"
605
+ type="pf"
606
+ />
607
+ Warning
608
+ </td>
609
+ <td
610
+ className="data-col not-focused"
611
+ onClick={[Function]}
612
+ >
613
+ 0
614
+ </td>
615
+ <td
616
+ className="data-col active"
617
+ onClick={[Function]}
618
+ >
619
+ 0
620
+ </td>
621
+ </tr>
622
+ <tr
623
+ key="success"
624
+ >
625
+ <td>
626
+ <Icon
627
+ name="ok"
628
+ type="pf"
629
+ />
630
+ Success
631
+ </td>
632
+ <td
633
+ className="data-col not-focused"
634
+ onClick={[Function]}
635
+ >
636
+ 0
637
+ </td>
638
+ <td
639
+ className="data-col not-focused"
640
+ onClick={[Function]}
641
+ >
642
+ 0
643
+ </td>
644
+ </tr>
645
+ </tbody>
646
+ </table>
647
+ </CardBody>
648
+ </Card>
649
+ `;
650
+
651
+ exports[`StoppedTasksCard render warning-total selected 1`] = `
652
+ <Card
653
+ accented={false}
654
+ aggregated={false}
655
+ aggregatedMini={false}
656
+ cardRef={null}
657
+ className="tasks-donut-card stopped-tasks-card selected-tasks-card"
658
+ matchHeight={false}
659
+ >
660
+ <CardTitle
661
+ className=""
662
+ onClick={[Function]}
663
+ >
664
+ Stopped
665
+ </CardTitle>
666
+ <CardBody
667
+ className=""
668
+ >
669
+ <table
670
+ className="table table-bordered table-striped stopped-table"
671
+ >
672
+ <thead>
673
+ <tr>
674
+ <th />
675
+ <th>
676
+ Total
677
+ </th>
678
+ <th>
679
+ 24h
680
+ </th>
681
+ </tr>
682
+ </thead>
683
+ <tbody>
684
+ <tr
685
+ key="error"
686
+ >
687
+ <td>
688
+ <Icon
689
+ name="error-circle-o"
690
+ type="pf"
691
+ />
692
+ Error
693
+ </td>
694
+ <td
695
+ className="data-col not-focused"
696
+ onClick={[Function]}
697
+ >
698
+ 0
699
+ </td>
700
+ <td
701
+ className="data-col not-focused"
702
+ onClick={[Function]}
703
+ >
704
+ 0
705
+ </td>
706
+ </tr>
707
+ <tr
708
+ key="warning"
709
+ >
710
+ <td>
711
+ <Icon
712
+ name="warning-triangle-o"
713
+ type="pf"
714
+ />
715
+ Warning
716
+ </td>
717
+ <td
718
+ className="data-col active"
719
+ onClick={[Function]}
720
+ >
721
+ 0
722
+ </td>
723
+ <td
724
+ className="data-col not-focused"
725
+ onClick={[Function]}
726
+ >
727
+ 0
728
+ </td>
729
+ </tr>
730
+ <tr
731
+ key="success"
732
+ >
733
+ <td>
734
+ <Icon
735
+ name="ok"
736
+ type="pf"
737
+ />
738
+ Success
739
+ </td>
740
+ <td
741
+ className="data-col not-focused"
742
+ onClick={[Function]}
743
+ >
744
+ 0
745
+ </td>
746
+ <td
747
+ className="data-col not-focused"
748
+ onClick={[Function]}
749
+ >
750
+ 0
751
+ </td>
752
+ </tr>
753
+ </tbody>
754
+ </table>
755
+ </CardBody>
756
+ </Card>
757
+ `;
758
+
759
+ exports[`StoppedTasksCard render with minimal props 1`] = `
760
+ <Card
761
+ accented={false}
762
+ aggregated={false}
763
+ aggregatedMini={false}
764
+ cardRef={null}
765
+ className="tasks-donut-card stopped-tasks-card"
766
+ matchHeight={false}
767
+ >
768
+ <CardTitle
769
+ className=""
770
+ onClick={[Function]}
771
+ >
772
+ Stopped
773
+ </CardTitle>
774
+ <CardBody
775
+ className=""
776
+ >
777
+ <table
778
+ className="table table-bordered table-striped stopped-table"
779
+ >
780
+ <thead>
781
+ <tr>
782
+ <th />
783
+ <th>
784
+ Total
785
+ </th>
786
+ <th>
787
+ 24h
788
+ </th>
789
+ </tr>
790
+ </thead>
791
+ <tbody>
792
+ <tr
793
+ key="error"
794
+ >
795
+ <td>
796
+ <Icon
797
+ name="error-circle-o"
798
+ type="pf"
799
+ />
800
+ Error
801
+ </td>
802
+ <td
803
+ className="data-col"
804
+ onClick={[Function]}
805
+ >
806
+ 0
807
+ </td>
808
+ <td
809
+ className="data-col"
810
+ onClick={[Function]}
811
+ >
812
+ 0
813
+ </td>
814
+ </tr>
815
+ <tr
816
+ key="warning"
817
+ >
818
+ <td>
819
+ <Icon
820
+ name="warning-triangle-o"
821
+ type="pf"
822
+ />
823
+ Warning
824
+ </td>
825
+ <td
826
+ className="data-col"
827
+ onClick={[Function]}
828
+ >
829
+ 0
830
+ </td>
831
+ <td
832
+ className="data-col"
833
+ onClick={[Function]}
834
+ >
835
+ 0
836
+ </td>
837
+ </tr>
838
+ <tr
839
+ key="success"
840
+ >
841
+ <td>
842
+ <Icon
843
+ name="ok"
844
+ type="pf"
845
+ />
846
+ Success
847
+ </td>
848
+ <td
849
+ className="data-col"
850
+ onClick={[Function]}
851
+ >
852
+ 0
853
+ </td>
854
+ <td
855
+ className="data-col"
856
+ onClick={[Function]}
857
+ >
858
+ 0
859
+ </td>
860
+ </tr>
861
+ </tbody>
862
+ </table>
863
+ </CardBody>
864
+ </Card>
865
+ `;
866
+
867
+ exports[`StoppedTasksCard render with props 1`] = `
868
+ <Card
869
+ accented={false}
870
+ aggregated={false}
871
+ aggregatedMini={false}
872
+ cardRef={null}
873
+ className="tasks-donut-card stopped-tasks-card"
874
+ matchHeight={false}
875
+ >
876
+ <CardTitle
877
+ className=""
878
+ onClick={[Function]}
879
+ >
880
+ Stopped
881
+ </CardTitle>
882
+ <CardBody
883
+ className=""
884
+ >
885
+ <table
886
+ className="table table-bordered table-striped stopped-table"
887
+ >
888
+ <thead>
889
+ <tr>
890
+ <th />
891
+ <th>
892
+ Total
893
+ </th>
894
+ <th>
895
+ week
896
+ </th>
897
+ </tr>
898
+ </thead>
899
+ <tbody>
900
+ <tr
901
+ key="error"
902
+ >
903
+ <td>
904
+ <Icon
905
+ name="error-circle-o"
906
+ type="pf"
907
+ />
908
+ Error
909
+ </td>
910
+ <td
911
+ className="data-col"
912
+ onClick={[Function]}
913
+ >
914
+ 9
915
+ </td>
916
+ <td
917
+ className="data-col"
918
+ onClick={[Function]}
919
+ >
920
+ 1
921
+ </td>
922
+ </tr>
923
+ <tr
924
+ key="warning"
925
+ >
926
+ <td>
927
+ <Icon
928
+ name="warning-triangle-o"
929
+ type="pf"
930
+ />
931
+ Warning
932
+ </td>
933
+ <td
934
+ className="data-col"
935
+ onClick={[Function]}
936
+ >
937
+ 8
938
+ </td>
939
+ <td
940
+ className="data-col"
941
+ onClick={[Function]}
942
+ >
943
+ 2
944
+ </td>
945
+ </tr>
946
+ <tr
947
+ key="success"
948
+ >
949
+ <td>
950
+ <Icon
951
+ name="ok"
952
+ type="pf"
953
+ />
954
+ Success
955
+ </td>
956
+ <td
957
+ className="data-col"
958
+ onClick={[Function]}
959
+ >
960
+ 7
961
+ </td>
962
+ <td
963
+ className="data-col"
964
+ onClick={[Function]}
965
+ >
966
+ 3
967
+ </td>
968
+ </tr>
969
+ </tbody>
970
+ </table>
971
+ </CardBody>
972
+ </Card>
973
+ `;