-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.js
86 lines (81 loc) · 2.42 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import React from 'react';
import ReactSelect from 'react-select';
import { NewTaskWrapper, StyledNewTask } from './StyledAddTask';
import Completed from './components/Completed';
import DrushArchiveDump from './components/DrushArchiveDump';
import DrushCacheClear from './components/DrushCacheClear';
import DrushCron from './components/DrushCron';
import DrushRsyncFiles from './components/DrushRsyncFiles';
import DrushSqlDump from './components/DrushSqlDump';
import DrushSqlSync from './components/DrushSqlSync';
import DrushUserLogin from './components/DrushUserLogin';
import Empty from './components/Empty';
import Error from './components/Error';
import InvokeRegisteredTask from './components/InvokeRegisteredTask';
import withLogic from './logic';
/**
* Perform a task on the CLI environment.
*/
const AddTask = ({
pageEnvironment,
projectEnvironments,
selectedTask,
setSelectedTask,
onCompleted,
onError,
errMessage,
options,
onNewTask,
}) => {
const newTaskComponents = {
DrushArchiveDump,
DrushSqlDump,
DrushCacheClear,
DrushCron,
DrushRsyncFiles,
DrushSqlSync,
DrushUserLogin,
Empty,
Completed,
Error,
InvokeRegisteredTask,
};
const NewTask = selectedTask
? selectedTask.value
? newTaskComponents[selectedTask.value]
: newTaskComponents[selectedTask]
: newTaskComponents[Empty];
return (
<React.Fragment>
<NewTaskWrapper>
<StyledNewTask>
<div className="selectTask" data-cy="select-task">
<ReactSelect
aria-label="Task"
placeholder="Select a task..."
name="task"
value={options.find(o => o.value === selectedTask)}
onChange={selectedOption => setSelectedTask(selectedOption)}
options={options}
required
/>
</div>
{selectedTask && (
<div className="taskForm" data-cy="task-form">
<NewTask
pageEnvironment={pageEnvironment}
projectEnvironments={projectEnvironments}
selectedTask={selectedTask}
onCompleted={onCompleted}
onError={e => onError(e.message)}
errMessage={errMessage}
onNewTask={onNewTask}
/>
</div>
)}
</StyledNewTask>
</NewTaskWrapper>
</React.Fragment>
);
};
export default withLogic(AddTask);