Demo preparation
This commit is contained in:
1 parent
1669c36b5b
commit
37d4e5e5a5
4 files changed
+38
-112
No files matched your search
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@superalgos/operations-client",
|
||||
"version": "0.0.30",
|
||||
"version": "0.0.31",
|
||||
"description": "Superalgos Operations client-side web app",
|
||||
"main": "src/index.js",
|
||||
"dependencies": {
|
||||
|
||||
@@ -38,7 +38,6 @@ const sensorProcessNames = {
|
||||
}
|
||||
|
||||
const indicatorProcessNames = {
|
||||
Single: 'Single-Period-Daily',
|
||||
Daily: 'Multi-Period-Daily',
|
||||
Market: 'Multi-Period-Market'
|
||||
}
|
||||
|
||||
@@ -28,8 +28,8 @@ class AddClone extends Component {
|
||||
this.state = {
|
||||
user: JSON.parse(user),
|
||||
selectedBot: { 'id': '' },
|
||||
mode: '',
|
||||
resumeExecution: true,
|
||||
mode: "noTime",
|
||||
resumeExecution: false,
|
||||
beginDatetime: DateTime.local().minus({ days: 8 }).startOf('day'),
|
||||
endDatetime: DateTime.local(),
|
||||
waitTime: 1,
|
||||
@@ -41,7 +41,7 @@ class AddClone extends Component {
|
||||
teamId: '',
|
||||
keyId: '',
|
||||
exchangeName: exchanges.Coss,
|
||||
processName: '',
|
||||
processName: indicatorProcessNames.Daily,
|
||||
|
||||
// Indicator Bot
|
||||
startYear: 2019,
|
||||
@@ -267,9 +267,9 @@ class AddClone extends Component {
|
||||
);
|
||||
if (error) return `Error! ${error.message}`;
|
||||
const list = data.keyVault_AvailableKeys.map((key) => (
|
||||
<MenuItem key={key.id} value={key.id}>
|
||||
{key.key.substr(0, 32) + "..." + " - " + key.exchange}
|
||||
</MenuItem>
|
||||
<MenuItem key={key.id} value={key.id}>
|
||||
{key.key.substr(0, 32) + "..." + " - " + key.exchange}
|
||||
</MenuItem>
|
||||
));
|
||||
return (
|
||||
<TextField
|
||||
@@ -359,101 +359,7 @@ class AddClone extends Component {
|
||||
</React.Fragment>
|
||||
}
|
||||
|
||||
{(this.state.selectedBot.kind === botTypes.Indicator
|
||||
|| this.state.selectedBot.kind === botTypes.Sensor) &&
|
||||
<React.Fragment>
|
||||
<TextField label="Running Mode"
|
||||
select
|
||||
className={classNames(classes.margin, classes.textField, classes.form)}
|
||||
value={this.state.mode}
|
||||
onChange={(e) => this.setState({ mode: e.target.value })}
|
||||
onBlur={(e) => this.setState({ modeError: false })}
|
||||
error={this.state.modeError}
|
||||
fullWidth
|
||||
>
|
||||
{Object.keys(indicatorStartModes).map(option => (
|
||||
<MenuItem key={option} value={option}>
|
||||
{indicatorStartModes[option]}
|
||||
</MenuItem>
|
||||
))}
|
||||
</TextField>
|
||||
|
||||
{this.state.mode === "allMonths" &&
|
||||
<React.Fragment>
|
||||
<TextField
|
||||
id="beginYearInput"
|
||||
select
|
||||
label="Start Year"
|
||||
className={classNames(classes.textField, classes.form)}
|
||||
value={this.state.startYear}
|
||||
onChange={(e) => this.setState({ startYear: e.target.value })}
|
||||
fullWidth
|
||||
>
|
||||
{getIndicatorYears().map(option => (
|
||||
<MenuItem key={option} value={option}>
|
||||
{option}
|
||||
</MenuItem>
|
||||
))}
|
||||
</TextField>
|
||||
|
||||
<TextField
|
||||
id="endYearInput"
|
||||
select
|
||||
label="End Year"
|
||||
className={classNames(classes.textField, classes.form)}
|
||||
value={this.state.endYear}
|
||||
onChange={(e) => this.setState({ endYear: e.target.value })}
|
||||
fullWidth
|
||||
>
|
||||
{getIndicatorYears().map(option => (
|
||||
<MenuItem key={option} value={option}>
|
||||
{option}
|
||||
</MenuItem>
|
||||
))}
|
||||
</TextField>
|
||||
</React.Fragment>
|
||||
}
|
||||
|
||||
{this.state.mode === "oneMonth" &&
|
||||
<React.Fragment>
|
||||
<TextField
|
||||
id="beginYearInput"
|
||||
select
|
||||
label="Year"
|
||||
className={classNames(classes.textField, classes.form)}
|
||||
value={this.state.startYear}
|
||||
onChange={(e) => this.setState({ startYear: e.target.value })}
|
||||
fullWidth
|
||||
>
|
||||
{getIndicatorYears().map(option => (
|
||||
<MenuItem key={option} value={option}>
|
||||
{option}
|
||||
</MenuItem>
|
||||
))}
|
||||
</TextField>
|
||||
|
||||
<TextField
|
||||
id="endMonthInput"
|
||||
select
|
||||
label="Month"
|
||||
className={classNames(classes.textField, classes.form)}
|
||||
value={this.state.month}
|
||||
onChange={(e) => this.setState({ month: e.target.value })}
|
||||
fullWidth
|
||||
>
|
||||
{availableMonths.map((option, index) => (
|
||||
<MenuItem key={index} value={index + 1}>
|
||||
{option}
|
||||
</MenuItem>
|
||||
))}
|
||||
</TextField>
|
||||
</React.Fragment>
|
||||
}
|
||||
</React.Fragment>
|
||||
}
|
||||
|
||||
|
||||
{(this.state.mode === "noTime" && this.state.selectedBot.kind !== botTypes.Sensor ) &&
|
||||
{(this.state.mode === "noTime" && this.state.selectedBot.kind !== botTypes.Sensor) &&
|
||||
<React.Fragment>
|
||||
<Typography className={classes.typography} variant='subtitle1' align='justify'>
|
||||
The Resume Execution option let's you pick up the context of
|
||||
@@ -612,8 +518,8 @@ class AddClone extends Component {
|
||||
if (!this.state.serverError)
|
||||
this.setState({
|
||||
selectedBot: { 'id': '' },
|
||||
mode: '',
|
||||
resumeExecution: true,
|
||||
mode: 'noTime',
|
||||
resumeExecution: false,
|
||||
beginDatetime: DateTime.local().minus({ days: 8 }).startOf('day'),
|
||||
endDatetime: DateTime.local(),
|
||||
waitTime: 1,
|
||||
@@ -621,11 +527,20 @@ class AddClone extends Component {
|
||||
stateDatetime: 0,
|
||||
createDatetime: 0,
|
||||
runAsTeam: false,
|
||||
processName: '',
|
||||
exchangeName: exchanges.Coss,
|
||||
processName: indicatorProcessNames.Daily,
|
||||
teams: [],
|
||||
teamId: '',
|
||||
keyId: '',
|
||||
|
||||
// Indicator Bot
|
||||
startYear: 2019,
|
||||
endYear: 2019,
|
||||
month: 1,
|
||||
|
||||
//TradingBot
|
||||
timePeriod: '01-hs',
|
||||
|
||||
//Error handlers
|
||||
nameError: false,
|
||||
teamError: false,
|
||||
|
||||
@@ -40,13 +40,25 @@ const resolve = async (parent, { clone }, context) => {
|
||||
throw new WrongArgumentsError('The key was not provided to run the clone.')
|
||||
}
|
||||
|
||||
try {
|
||||
let allUserBotsResponse = await teamQuery(context.authorization, clone.botId)
|
||||
let bot = allUserBotsResponse.data.data.teams_FbByOwner.edges[0].node
|
||||
clone = cloneDetails(bot, clone)
|
||||
clone.createDatetime = new Date().valueOf() / 1000 | 0
|
||||
clone.active = true
|
||||
let allUserBotsResponse = await teamQuery(context.authorization, clone.botId)
|
||||
let bot = allUserBotsResponse.data.data.teams_FbByOwner.edges[0].node
|
||||
clone = cloneDetails(bot, clone)
|
||||
clone.createDatetime = new Date().valueOf() / 1000 | 0
|
||||
clone.active = true
|
||||
|
||||
// TODO Temporary Limitation on bot creation
|
||||
if (!(clone.teamSlug === "AAMasters" || clone.teamSlug === "AAVikings")) {
|
||||
let clones = await Clone.find({
|
||||
authId: context.userId,
|
||||
active: true
|
||||
})
|
||||
|
||||
if (clones !== undefined && clones.length >= 5) {
|
||||
throw new Error('Currently maximum number of clones per user is 5. You can delete an existing clone and try again.')
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
let newClone = new Clone(clone)
|
||||
newClone.authId = context.userId
|
||||
clone.id = newClone._id
|
||||
|
||||
Reference in new issue
Block a user