Merge upstream

This commit is contained in:
Vladimir Jovanovic committed 2018-11-18 15:58:05 +01:00
commit 2a75a29a57
19 files changed
+5208 -5350

No files matched your search

-7
View File
@@ -12,10 +12,3 @@ npm-debug.log*
#Mac specific files
.DS_Store
client/package-lock.json
client/package-lock.json
server/package-lock.json
server/package-lock.json
client/package-lock.json
server/package-lock.json
client/package-lock.json
+3 -3
View File
@@ -13,8 +13,8 @@
<link rel="shortcut icon" type="image/png/ico" href="/favicon.ico" />
<script src="https://unpkg.com/apollo-client-browser@1.7.0"></script>
<script type="text/javascript" src="https://develop.advancedalgos.net/Scripts/Require.js"></script>
<script type="text/javascript" src="https://develop.advancedalgos.net/Scripts/AppPreLoader.js"></script>
<script type="text/javascript" src="https://charts-dev.advancedalgos.net/Scripts/require.js"></script>
<script type="text/javascript" src="https://charts-dev.advancedalgos.net/Scripts/AppPreLoader.js"></script>
<script type="text/javascript">
function loadCanvas(){
@@ -25,7 +25,7 @@
executingAt: 'Master App',
visible: false,
topMargin: 130,
urlPrefix: 'https://develop.advancedalgos.net/' , /* 'http://localhost:1337/' */ /* 'https://develop.advancedalgos.net/' */
urlPrefix: 'https://charts-dev.advancedalgos.net/' , /* 'http://localhost:1337/' */ /* 'https://charts-dev.advancedalgos.net/' */
graphQL: {
masterAppApiUrl: 'https://app-api.advancedalgos.net/graphql'
},
+4918 -4862
View File
File diff suppressed because it is too large. Load diff
+5 -5
View File
@@ -25,11 +25,11 @@
},
"homepage": "https://github.com/Algoteers/MasterApp#readme",
"devDependencies": {
"@advancedalgos/events-client": "^0.0.4",
"@advancedalgos/key-vault-client": "^0.0.21",
"@advancedalgos/teams-client": "^0.0.27",
"@advancedalgos/users-client": "^0.0.21",
"@advancedalgos/web-components": "0.0.13",
"@advancedalgos/events-client": "0.0.4",
"@advancedalgos/key-vault-client": "0.0.24",
"@advancedalgos/teams-client": "0.0.29",
"@advancedalgos/users-client": "0.0.24",
"@advancedalgos/web-components": "0.0.15",
"@babel/core": "^7.1.2",
"@babel/plugin-proposal-class-properties": "^7.1.0",
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
+9
View File
@@ -1,6 +1,15 @@
import { createMuiTheme } from '@material-ui/core/styles'
export const theme = createMuiTheme({
breakpoints: {
values: {
xs: 0,
sm: 768,
md: 992,
lg: 1200,
xl: 1920
}
},
palette: {
primary: {
main: '#303036',
+78 -57
View File
@@ -1,10 +1,9 @@
$break-big: 1280px;
$break-middle: 992px;
$break-small: 768px;
$break-extra-small: 532px;
$break-lg: 1200px;
$break-md: 992px;
$break-sm: 768px;
$break-xs: 540px;
$height-large-device: 131px;
$height-small-device: 220px;
$height-nav-bar: 131px;
$height-not-top: 87px;
@@ -45,7 +44,8 @@ $advanced-algos-red: rgb(245,88,88);
}
body{
overflow-y:scroll;
padding-right: 0 !important;
overflow-y: scroll;
&::-webkit-scrollbar-track {
border: 1px solid #000;
@@ -65,6 +65,23 @@ body{
}
}
.container{
padding: 15px 15px 15px 15px;
margin-left: auto;
margin-right: auto;
width: 100%;
@media screen and (min-width: $break-sm) {
width: 768px;
}
@media screen and (min-width: $break-md) {
width: 970px;
}
@media screen and (min-width: $break-lg) {
width: 1170px;
}
}
header.menu{
transition: $transition-time;
&.notOnTop{
@@ -82,7 +99,7 @@ header.menu{
margin-bottom: ( $height-not-top - $mobile-handle-height ) / 2 ;
}
nav.links{
@media screen and (min-width: $break-big) {
@media screen and (min-width: $break-lg) {
ul.primaryMenu{
li.primaryLink{
padding-top: ( $height-not-top - $text-height ) / 2;
@@ -94,36 +111,23 @@ header.menu{
}
}
position: fixed;
height: $height-large-device;
height: $height-nav-bar;
width: 100vw;
z-index: 125;
@media screen and (max-width: $break-extra-small) {
height: $height-small-device;
}
.container{
padding-top: 0px;
padding-bottom: 0px;
height: 100%;
border-bottom: 1px solid rgba(142, 144, 146, 0.3);
width: 100%;
@media screen and (min-width: $break-small) {
width: 750px;
}
@media screen and (min-width: $break-middle) {
width: 970px;
}
@media screen and (min-width: $break-big) {
width: 1270px;
}
padding-left: 15px;
padding-right: 15px;
margin-left: auto;
margin-right: auto;
img.logo{
transition: $transition-time;
margin-top: ( $height-large-device - $image-height-big ) / 2 ;
margin-top: ( $height-nav-bar - $image-height-big ) / 2 ;
height: $image-height-big;
@media screen and (max-width: $break-xs) {
height: $image-height-small;
margin-top: ( $height-nav-bar - $image-height-small ) / 2 ;
}
}
.mobileHandle.openedMobile{
&:before{
@@ -169,21 +173,21 @@ header.menu{
float: right;
width: auto;
clear: none;
margin-top: ( $height-large-device - $mobile-handle-height ) / 2 ;
margin-bottom: ( $height-large-device - $mobile-handle-height ) / 2 ;
margin-left: 0;
margin-top: ( $height-nav-bar - $mobile-handle-height ) / 2 ;
margin-bottom: ( $height-nav-bar - $mobile-handle-height ) / 2 ;
margin-left: 0 !important;
margin-right: 20px;
margin: 41px 0 42px 20px;
padding: 0 18px 0 40px;
position: relative;
text-decoration: none;
border-radius: 31px;
@media screen and (min-width: $break-big) {
@media screen and (min-width: $break-lg) {
display: none;
}
}
nav.links{
@media screen and (max-width: $break-big - 1) {
@media screen and (max-width: $break-lg - 1) {
display: none;
&.openedMobile{
display: block;
@@ -209,7 +213,7 @@ header.menu{
border: solid white;
border-width: 0 2px 2px 0;
padding: 3px;
margin-top: 18px;
margin-top: -32px;
margin-right: 7px;
transform: rotate(45deg);
-webkit-transform: rotate(45deg);
@@ -232,6 +236,9 @@ header.menu{
&:hover{
color: $advanced-algos-red;
}
svg{
padding-top: 10px;
}
}
ul.subMenu{
display: none;
@@ -245,7 +252,7 @@ header.menu{
}
}
}
@media screen and (min-width: $break-big) {
@media screen and (min-width: $break-lg) {
display: block;
float: right;
ul.primaryMenu{
@@ -262,10 +269,10 @@ header.menu{
display: block;
float: left;
position: relative;
padding-top: ( $height-large-device - $text-height ) / 2;
padding-bottom: ( $height-large-device - $text-height ) / 2;
padding-right: 21px;
padding-left: 21px;
padding-top: ( $height-nav-bar - $text-height ) / 2;
padding-bottom: ( $height-nav-bar - $text-height ) / 2;
padding-right: 14px;
padding-left: 14px;
&.hasChildren{
&:after{
content: '';
@@ -290,6 +297,9 @@ header.menu{
&.selected{
color: $advanced-algos-red;
}
svg{
padding-top: 10px;
}
}
ul.subMenu{
display: none;
@@ -327,6 +337,7 @@ header.menu{
.bannerTopBar{
background-position: center center;
background-size: cover;
background-image: url(https://advancedalgos.net/img/photos/teams.jpg);
width: 100%;
height: 220px;
@@ -354,42 +365,31 @@ header.menu{
font-size: 64px;
line-height: 78px;
font-weight: 100;
@include fluid-type($break-extra-small, $break-big, 26px, 64px);
@include fluid-type($break-xs, $break-lg, 26px, 64px);
}
.text{
color: white;
line-height: 30px;
font-weight: 600;
padding: 20px 0 0.5em 0;
@include fluid-type($break-extra-small, $break-big, 18px, 20px);
@include fluid-type($break-xs, $break-lg, 18px, 20px);
}
}
}
.homePage{
.homePage.container{
padding-top: 70px;
padding-bottom: 70px;
margin-right: auto;
margin-left: auto;
@media screen and (min-width: $break-small) {
width: 750px;
}
@media screen and (min-width: $break-middle) {
width: 970px;
}
@media screen and (min-width: 1200px) {
width: 1170px;
}
.title{
padding: 0 0 10px 0;
font-size: 45px;
@include fluid-type($break-xs, $break-lg, 24px, 45px);
line-height: 55px;
padding: 40px 0 0.5em 0;
font-weight: 100;
}
.subtitle{
padding-bottom: 5px;
font-size: 20px;
@include fluid-type($break-xs, $break-lg, 18px, 20px);
line-height: 19px;
font-weight: 100;
text-transform: uppercase;
@@ -402,7 +402,7 @@ header.menu{
display: inline-block;
width: 100%;
padding: 10px;
@media screen and (min-width: $break-small) {
@media screen and (min-width: $break-sm) {
width: 50%;
}
p{
@@ -421,5 +421,26 @@ header.menu{
}
}
}
}
.toTop{
position: fixed;
height: 40px;
width: 40px;
bottom: 20px;
right: 20px;
z-index: 1;
background-color: #1a1a1a;
border-radius: 100%;
&:after{
content: '';
float: right;
border: solid white;
border-width: 0 3px 3px 0;
padding: 3px;
margin-top: 18px;
margin-right: 15px;
transform: rotate(-135deg);
-webkit-transform: rotate(-135deg);
}
}
+6 -8
View File
@@ -2,13 +2,11 @@ import React from 'react'
import { BannerTopBar } from '../common'
const Callback = () => (
<BannerTopBar
size='big'
title=''
text='Authenticating...'
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
/>
)
const Callback = () => <BannerTopBar
size='big'
title=''
text='Authenticating...'
backgroundUrl='https://advancedalgos.net/img/photos/superalgos-platform.jpg'
/>
export default Callback
+1 -1
View File
@@ -44,7 +44,7 @@ class Charts extends Component {
size='medium'
title=''
text='Charts loading...'
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
backgroundUrl='https://advancedalgos.net/img/photos/superalgos-platform.jpg'
/>
)
}
@@ -1,5 +1,6 @@
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import classNames from 'classnames'
import { withStyles } from '@material-ui/core/styles'
import withWidth from '@material-ui/core/withWidth'
import { Mutation } from 'react-apollo'
@@ -39,40 +40,15 @@ export class SignupForm extends Component {
displayIntro
} = this.props
return (
<Mutation mutation={NEWSLETTER_SIGNUP}>
<Mutation
mutation={NEWSLETTER_SIGNUP}
>
{(NewsletterSignup, { loading, error, data }) => {
return (
<Grid
container
className={classes.signupRight}
direction='column'
justify={alignCenter ? 'center' : 'flex-start'}
>
{displayTitle && (
<Typography
variant='h4'
className={classes.textWhite}
gutterBottom
>
Stay in touch!
</Typography>
)}
{displayIntro && (
<Typography
variant='subtitle1'
className={classes.textWhite}
gutterBottom
>
Opt-in our mailing list to stay up to date with the Advanced
Algos Project.
</Typography>
)}
<form
id='email-signup'
action='#'
className='form-inline'
autoComplete='off'
>
<Grid container className={classes.signupRight} direction='column' justify={alignCenter ? 'center' : 'flex-start'}>
{displayTitle && <Typography variant='h4' className={classNames(classes.textWhite, classes.signupTitle)} gutterBottom>Stay in touch!</Typography>}
{displayIntro && <Typography variant='subtitle1' className={classNames(classes.textWhite, classes.signupText)} gutterBottom>Opt-in our mailing list to stay up to date with the Advanced Algos Project.</Typography>}
<form id='email-signup' action='#' className='form-inline' autoComplete='off'>
<Typography
variant='subtitle1'
className={classes.textSuccess}
@@ -82,16 +58,9 @@ export class SignupForm extends Component {
textAlign: alignCenter ? 'center' : 'inherit'
}}
>
Thank you for signing up! Please check your email and click on
the confirmation link to complete the signup process.
Thank you for signing up! Please check your email and click on the confirmation link to complete the signup process.
</Typography>
<Grid
container
className={classes.signupContainer}
justify={
width === 'xs' || alignCenter ? 'center' : 'flex-start'
}
>
<Grid container className={classes.signupContainer} justify={(width === 'xs' || alignCenter) ? 'center' : 'flex-start'}>
<InputBase
id='email'
placeholder='Enter your email'
@@ -151,11 +120,9 @@ export class SignupForm extends Component {
async handleSubmit (e, NewsletterSignup) {
e.preventDefault()
console.log('NewsletterSignup handleSubmit: ', this.state.email)
const signupResponse = await NewsletterSignup({
variables: { email: this.state.email }
})
const signupResponse = await NewsletterSignup({ variables: { email: this.state.email } })
console.log('NewsletterSignup: ', signupResponse)
if (signupResponse.data.master_NewsletterSignup === 'SUCCESS') { this.setState({ email: '', success: true }) }
if (signupResponse.data.master_NewsletterSignup === 'SUCCESS') this.setState({ email: '', success: true })
}
}
@@ -43,7 +43,7 @@ export class SignupVerifyResponse extends React.Component {
size='big'
title={BannerTitle}
text={BannerText}
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
backgroundUrl='https://advancedalgos.net/img/photos/superalgos-platform.jpg'
/>
)
}
@@ -63,7 +63,7 @@ export class SignupVerifyResponse extends React.Component {
size='big'
title='Mailing Sign-Up Complete!'
text='We look forward to keeping you up-to-date on the Advanced Algos project.'
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
backgroundUrl='https://advancedalgos.net/img/photos/superalgos-platform.jpg'
>
{displayForm && <SignupForm alignCenter />}
</BannerTopBar>
@@ -74,9 +74,9 @@ export class SignupVerifyResponse extends React.Component {
return (
<BannerTopBar
size='big'
title=''
text='Newsletter Signup Error'
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
title='Processing...'
text=''
backgroundUrl='https://advancedalgos.net/img/photos/superalgos-platform.jpg'
/>
)
}
@@ -29,11 +29,18 @@ const styles = theme => ({
textAlign: 'center'
}
},
signupTitle: {
fontSize: '25px',
marginBottom: theme.spacing.unit * 5
},
signupText: {
fontSize: '16px'
},
signupInput: {
borderRadius: 4,
backgroundColor: theme.palette.common.white,
border: '1px solid #ced4da',
fontSize: 16,
fontSize: 20,
padding: '10px 12px',
transition: theme.transitions.create(['border-color', 'box-shadow']),
marginRight: theme.spacing.unit * 1
@@ -41,7 +48,7 @@ const styles = theme => ({
signupInputSubmit: {
boxShadow: 'none',
textTransform: 'none',
fontSize: 16,
fontSize: 20,
lineHeight: '1.1875em',
color: theme.palette.common.white,
padding: '10px 12px',
+1 -1
View File
@@ -27,7 +27,7 @@ export const EmailSignupConfirm = ({ tokenParam }) => {
size='big'
title=''
text={BannerText}
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
backgroundUrl='https://advancedalgos.net/img/photos/superalgos-platform.jpg'
/>
)
}
+14 -47
View File
@@ -9,64 +9,31 @@ class Home extends Component {
<BannerTopBar
size='big'
title='Advanced Algos Platform'
text='Enabling the evolutionary race towards the emergence of superalgos'
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
text='People and machines working together to create Superalgos'
backgroundUrl='https://advancedalgos.net/img/photos/superalgos-platform.jpg'
/>
<div className='homePage'>
<Typography variant='h1' align='center' className='title'>
Welcome to the Advanced Algos Platform!
</Typography>
<Typography variant='h2' align='center' className='subtitle'>
CO-CREATE >> COMPETE >> EVOLVE
</Typography>
<div className='homePage container'>
<Typography variant='h1' align='center' className='title'>Welcome to the Advanced Algos Platform!</Typography>
<Typography variant='h2' align='center' className='subtitle'>Enabling the evolutionary race towards the emergence of superalgos</Typography>
<div className='column'>
<Typography align='justify'>
Before you begin, please be aware{' '}
<strong>
this is a development environment in pre-alpha stage
</strong>
. The features available as of today are limited but already
functional. However, you may encounter occasional instability and
errors.
Before you begin, please be aware <strong>this is a development environment in pre-alpha stage</strong>.
The features available as of today are limited but already functional.
However, you may encounter occasional instability and errors.
</Typography>
<Typography align='justify'>
The Superalgos Platform is the place is which we meet to
collaborate in the quest to make trading algorithms evolve. You
will be able to register, create or join a team, fork a functional
trading bot and eventually put it to compete with other people's
forks.
The Superalgos Platform is the place is which we meet to collaborate in the quest to make trading algorithms evolve.
You will be able to register, create or join a team, fork a functional trading bot and eventually put it to compete with other people's forks.
</Typography>
</div>
<div className='column'>
<Typography align='justify'>
Feel free to explore the menu in the top-right corner or visit the{' '}
<a
href='https://www.advancedalgos.net/documentation-quick-start.shtml'
target='_blank'
>
Quick Start Guide
</a>
. Reporting of bugs at the corresponding{' '}
<a
href='https://github.com/AdvancedAlgos'
target='_blank'
rel='nofollow'
>
Advanced Algos Github repository
</a>{' '}
is highly appreciated.
Feel free to explore the menu in the top-right corner or visit the <a href='https://www.advancedalgos.net/documentation-quick-start.shtml' target='_blank'>Quick Start Guide</a>.
Reporting of bugs at the corresponding <a href='https://github.com/AdvancedAlgos' target='_blank' rel='nofollow'>Advanced Algos Github repository</a> is highly appreciated.
</Typography>
<Typography align='justify'>
Get in touch with the rest of the community and get answers to
your questions in our{' '}
<a
href='https://t.me/advancedalgoscommunity'
target='_blank'
rel='nofollow'
>
Telegram Group
</a>
. Have fun!
Get in touch with the rest of the community and get answers to your questions in our <a href='https://t.me/advancedalgoscommunity' target='_blank' rel='nofollow'>Telegram Group</a>.
Have fun!
</Typography>
</div>
</div>
+15 -72
View File
@@ -10,11 +10,7 @@ import { connect } from 'react-redux'
import Typography from '@material-ui/core/Typography'
import Grid from '@material-ui/core/Grid'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import {
faFacebookF,
faTelegramPlane,
faTwitter
} from '@fortawesome/free-brands-svg-icons'
import { faFacebookF, faTelegramPlane, faTwitter } from '@fortawesome/free-brands-svg-icons'
import styles from './styles'
import SignupForm from '../../email-verification/components/SignupForm'
@@ -27,7 +23,7 @@ class Footer extends Component {
const masterApp = this.props.context.masterApp
if (masterApp.footer.visible === false) {
return <div />
return (<div />)
} else {
return (
<footer className={classNames(classes.darkSection, classes.footer)}>
@@ -39,88 +35,35 @@ class Footer extends Component {
>
<Grid item xs={12} sm={4} md={4}>
<NavLink to='/'>
<img alt='' src={aalogo} width={'100%'} height={'auto'} />
<img alt='' src={aalogo} width={'100%'} height={'auto'} className={classes.footerLogo} />
</NavLink>
<Grid
container
className={classes.descriptionLeft}
direction='column'
>
<Typography variant='subtitle2' className={classes.textLight}>
<strong>Advanced Algos Ltd.</strong>
</Typography>
<Typography
variant='subtitle1'
className={classes.textLight}
gutterBottom
>
Ground Floor, Palace Court, Church Street,
<br />
St. Julians&nbsp;STJ3049, Malta
</Typography>
<Typography variant='subtitle1' className={classes.textLight}>
<Link
to='legal-privacy-statement.shtml'
className={classes.linkLight}
>
Privacy Statement
</Link>{' '}
|{' '}
<a
href='legal-terms-of-service.shtml'
className={classes.linkLight}
>
Terms of Service
</a>
</Typography>
<Typography
variant='body2'
className={classNames(classes.textLight, classes.copyright)}
gutterBottom
>
&copy; Advanced Algos, Ltd. 2018 | All Rights Reserved.
<Grid container className={classes.descriptionLeft} direction='column'>
<Typography className={classNames(classes.textLight, classes.descriptionText)} ><strong>Advanced Algos Ltd.</strong></Typography>
<Typography className={classNames(classes.textLight, classes.descriptionText)} gutterBottom>Ground Floor, Palace Court, Church Street,<br />St. Julians&nbsp;STJ3049, Malta</Typography>
<Typography className={classNames(classes.textLight, classes.descriptionText)}>
<a href='legal-privacy-statement.shtml' className={classes.linkLight}>Privacy Statement</a> | <a href='legal-terms-of-service.shtml' className={classes.linkLight}>Terms of Service</a>
</Typography>
<Typography variant='body2' className={classNames(classes.textLight, classes.copyright)} gutterBottom>&copy; Advanced Algos, Ltd. 2018 | All Rights Reserved.</Typography>
</Grid>
</Grid>
<Grid item xs={12} sm={1} md={1} />
<Grid item xs={12} sm={7} md={6}>
<SignupForm displayTitle displayIntro />
<Typography
variant='subtitle1'
className={classes.textWhite}
style={{ textAlign: width === 'xs' ? 'center' : '' }}
>
Meet us on Social Networks:
</Typography>
<Grid
container
justify={width === 'xs' ? 'center' : 'flex-start'}
>
<Link
to='https://t.me/advancedalgoscommunity'
title='Join us on Telgram'
className={classes.linkLight}
>
<Typography variant='subtitle1' className={classes.textWhite} style={{ textAlign: width === 'xs' ? 'center' : '' }}>Meet us on Social Networks:</Typography>
<Grid container justify={width === 'xs' ? 'center' : 'flex-start'}>
<Link to='https://t.me/advancedalgoscommunity' title='Join us on Telgram' className={classes.linkLight}>
<FontAwesomeIcon
icon={faTelegramPlane}
className={classNames(classes.icon, classes.iconHover)}
/>
</Link>
<Link
to='https://twitter.com/advancedalgos'
title='Follow us on Twitter'
className={classes.linkLight}
>
<Link to='https://twitter.com/advancedalgos' title='Follow us on Twitter' className={classes.linkLight}>
<FontAwesomeIcon
icon={faTwitter}
className={classNames(classes.icon, classes.iconHover)}
/>
</Link>
<Link
to='https://www.facebook.com/Advanced-Algos-173249670001615/'
title='Meet us on Facebook'
className={classes.linkLight}
>
<Link to='https://www.facebook.com/Advanced-Algos-173249670001615/' title='Meet us on Facebook' className={classes.linkLight}>
<FontAwesomeIcon
icon={faFacebookF}
className={classNames(classes.icon, classes.iconHover)}
@@ -140,7 +83,7 @@ Footer.propTypes = {
width: PropTypes.string
}
const mapStateToProps = state => {
const mapStateToProps = (state) => {
return {
context: state.context
}
+10 -8
View File
@@ -11,21 +11,22 @@ const styles = theme => ({
color: lightGreen[400]
},
copyright: {
paddingTop: theme.spacing.unit * 3
paddingTop: theme.spacing.unit * 9,
fontSize: '16px'
},
linkLight: {
color: theme.palette.secondary.main,
textDecoration: 'none'
},
descriptionLeft: {
marginLeft: theme.spacing.unit * 8,
[theme.breakpoints.down('sm')]: {
marginLeft: 0
},
marginLeft: 0,
[theme.breakpoints.down('xs')]: {
textAlign: 'center'
}
},
descriptionText: {
fontSize: '16px'
},
signupRight: {
marginTop: theme.spacing.unit * 2,
[theme.breakpoints.down('xs')]: {
@@ -46,14 +47,15 @@ const styles = theme => ({
},
footerContainer: {
width: 'auto',
marginLeft: theme.spacing.unit * 3,
marginRight: theme.spacing.unit * 3,
[theme.breakpoints.up(1200 + theme.spacing.unit * 3 * 2)]: {
width: 1200,
marginLeft: 'auto',
marginRight: 'auto'
}
},
footerLogo: {
marginBottom: theme.spacing.unit * 2
},
footerLink: {
textDecoration: 'none',
'&:hover': {
@@ -101,7 +103,7 @@ const styles = theme => ({
},
icon: {
margin: theme.spacing.unit * 1,
fontSize: 24
fontSize: 30
},
iconHover: {
margin: theme.spacing.unit * 1,
+11 -33
View File
@@ -4,15 +4,7 @@ import { Link } from 'react-router-dom'
import { isDefined } from '../../../utils/js-helpers'
export const LoggedIn = props => {
let {
user,
auth,
openedMenu,
toggleMenuOpen,
closeAll,
bigScreen,
mouseLeave
} = props
let { user, auth, openedMenu, toggleMenuOpen, closeAll, bigScreen, mouseLeave } = props
let displayName = 'No Display Name'
if (isDefined(user.alias)) {
@@ -27,37 +19,23 @@ export const LoggedIn = props => {
displayName = user.firstName
}
if (isDefined(user.firstName) && isDefined(user.lastName)) {
displayName = user.firstName + ' ' + user.lastName
}
displayName = displayName.split('-')[0]
displayName = displayName.split('.')[0]
displayName = displayName.split('_')[0]
displayName = displayName.split(' ')[0]
return (
<li
onMouseEnter={() => toggleMenuOpen(42, bigScreen)}
onMouseLeave={() => mouseLeave(bigScreen)}
className={
openedMenu === 42
? 'selected primaryLink hasChildren'
: 'primaryLink hasChildren'
}
className={openedMenu === 42 ? 'selected primaryLink hasChildren' : 'primaryLink hasChildren'}
>
<Link to='/users/user' onClick={() => toggleMenuOpen(42, true)}>
{' '}
{displayName}{' '}
</Link>
<Link to='/users/user' onClick={() => toggleMenuOpen(42, true)}> {displayName} </Link>
<ul className='subMenu'>
<li>
<Link to='/users/user' onClick={() => closeAll()}>
{' '}
Profile{' '}
</Link>
</li>
<li>
<a href='#' onClick={() => auth.logout()}>
{' '}
Logout{' '}
</a>
</li>
<li><Link to='/users/user' onClick={() => closeAll()}> Your Profile </Link></li>
<li><a href='#' onClick={() => auth.logout()}> Logout </a></li>
<li><a href='https://www.advancedalgos.net'> Exit Platform </a></li>
</ul>
</li>
)
+16 -67
View File
@@ -9,6 +9,7 @@ import {
Group,
Adb,
VpnKey,
Home,
AddCircleOutline
} from '@material-ui/icons'
@@ -17,101 +18,49 @@ import { FINANCIAL_BEINGS } from '../../../constants/routes'
const usersMenus = {
title: 'Users',
to: '/users',
icon: Home,
submenus: [
{ title: 'Your Profile', to: '/users/user', icon: People, authenticated: true },
{ title: 'Directory', to: '/users/browse', icon: ImportContacts },
{ title: 'Search', to: '/users/search', icon: Search },
{
title: 'Report',
to: 'https://github.com/AdvancedAlgos/UsersModule/issues/new',
icon: BugReport,
externalLink: true
},
{
title: 'Your Profile',
to: '/users/user',
icon: People,
authenticated: true
}
{ title: 'Report a Bug', to: 'https://github.com/AdvancedAlgos/UsersModule/issues/new', icon: BugReport, externalLink: true }
]
}
const teamsMenus = {
title: 'Teams',
to: '/teams',
icon: Home,
submenus: [
{ title: 'Explore teams', to: '/teams/explore', icon: Search },
{
title: 'Your teams',
to: '/teams/manage-teams',
icon: Group,
authenticated: true
},
{
title: 'Team members',
to: '/teams/team-members',
icon: People,
authenticated: true
},
{
title: 'Financial beings',
to: '/teams/financial-beings',
icon: Adb,
authenticated: true
},
{
title: 'Report',
to: 'https://github.com/AdvancedAlgos/TeamsModule/issues/new',
icon: BugReport,
externalLink: true
}
{ title: 'Your teams', to: '/teams/manage-teams', icon: Group, authenticated: true },
{ title: 'Team members', to: '/teams/team-members', icon: People, authenticated: true },
{ title: 'Report a Bug', to: 'https://github.com/AdvancedAlgos/TeamsModule/issues/new', icon: BugReport, externalLink: true }
]
}
const eventsMenus = {
title: 'Events',
to: '/events',
icon: Home,
submenus: [
{ title: 'All events', to: '/events', icon: Search },
{
title: 'Your events',
to: '/events/my',
icon: GamepadRounded,
authenticated: true
},
{
title: 'Your hosted events',
to: '/events/host',
icon: AccessibilityNew,
authenticated: true
},
{
title: 'Host an event',
to: '/events/create',
icon: LibraryAdd,
authenticated: true
},
{
title: 'Report',
to: 'https://github.com/AdvancedAlgos/UsersModule/issues/new',
icon: BugReport,
externalLink: true
}
{ title: 'Your events', to: '/events/my', icon: GamepadRounded, authenticated: true },
{ title: 'Your hosted events', to: '/events/host', icon: AccessibilityNew, authenticated: true },
{ title: 'Host an event', to: '/events/create', icon: LibraryAdd, authenticated: true },
{ title: 'Report a Bug', to: 'https://github.com/AdvancedAlgos/UsersModule/issues/new', icon: BugReport, externalLink: true }
]
}
const keyvaultMenus = {
title: 'Key Vault',
to: '/key-vault',
icon: Home,
authenticated: true,
submenus: [
{ title: 'Manage keys', to: '/key-vault/browse', icon: VpnKey },
{ title: 'Your keys', to: '/key-vault/browse', icon: VpnKey },
{ title: 'Add key', to: '/key-vault/addKey', icon: AddCircleOutline },
{
title: 'Report',
to: 'https://github.com/AdvancedAlgos/KeyVaultModule/issues/new',
icon: BugReport,
externalLink: true
}
{ title: 'Report a Bug', to: 'https://github.com/AdvancedAlgos/KeyVaultModule/issues/new', icon: BugReport, externalLink: true }
]
}
+77 -115
View File
@@ -29,6 +29,11 @@ class Header extends Component {
}
}
scrollToTop () {
document.body.scrollTop = 0 // For Safari
document.documentElement.scrollTop = 0 // For Chrome, Firefox, IE and Opera
}
toggleMobileOpen () {
this.setState({ mobileOpen: !this.state.mobileOpen })
}
@@ -64,138 +69,95 @@ class Header extends Component {
}
render () {
const bigScreen = this.props.width === 'lg' || this.props.width === 'xl'
const bigScreen = (this.props.width === 'lg' || this.props.width === 'xl')
let { auth } = this.props
let { onTop, mobileOpen, openedMenu } = this.state
if (window.localStorage.getItem('access_token')) {
if (
jwtDecode(window.localStorage.getItem('access_token')).exp <
new Date().getTime() / 1000
) {
if (jwtDecode(window.localStorage.getItem('access_token')).exp < new Date().getTime() / 1000) {
window.localStorage.clear()
window.location.reload()
}
}
let user = JSON.parse(this.state.user)
const menus = allMenus.map(
({ to, title, submenus, authenticated }, index) => {
if (
authenticated &&
!(this.state.user !== undefined && this.state.user !== null)
) {
return
}
return (
<li
onMouseEnter={() => this.toggleMenuOpen(index, bigScreen)}
onMouseLeave={() => this.mouseLeave(bigScreen)}
key={index}
className={
openedMenu === index
? 'primaryLink hasChildren selected'
: 'primaryLink hasChildren'
const menus = allMenus.map(({ icon: Icon, to, title, submenus, authenticated }, index) => {
if (authenticated && !(this.state.user !== undefined && this.state.user !== null)) {
return
}
return (
<li
onMouseEnter={() => this.toggleMenuOpen(index, bigScreen)}
onMouseLeave={() => this.mouseLeave(bigScreen)}
key={index}
className={openedMenu === index ? 'primaryLink hasChildren selected' : 'primaryLink hasChildren'}
>
{ bigScreen
? <Link to={to} onClick={() => this.toggleMenuOpen(index, true)}> {title} </Link>
: <a onClick={() => this.toggleMenuOpen(index, true)}> {title} </a>
}
<ul className='subMenu'>
{ bigScreen
? ''
: <li key={index + 'home'}><Link to={to}> <Icon /> Module Home Page </Link></li>
}
>
<Link to={to} onClick={() => this.toggleMenuOpen(index, true)}>
{' '}
{title}{' '}
</Link>
<ul className='subMenu'>
{submenus.map(
(
{
icon: Icon,
to: subTo,
title: subTitle,
externalLink,
authenticated: subAuthenticated
},
subindex
) => {
if (
subAuthenticated &&
!(this.state.user !== undefined && this.state.user !== null)
) {
return
}
if (externalLink) {
return (
<li key={subindex}>
<a href={subTo}>
{' '}
<Icon /> {subTitle}{' '}
</a>
</li>
)
}
{
submenus.map(({ icon: SubIcon, to: subTo, title: subTitle, externalLink, authenticated: subAuthenticated }, subindex) => {
if (subAuthenticated && !(this.state.user !== undefined && this.state.user !== null)) {
return
}
if (externalLink) {
return (
<li key={subindex}>
<Link to={subTo} onClick={() => this.closeAll(index)}>
{' '}
<Icon /> {subTitle}{' '}
</Link>
</li>
<li key={subindex}><a href={subTo} target='_blank'> <SubIcon /> {subTitle} </a></li>
)
}
)}
</ul>
</li>
)
}
)
return (
<li key={subindex}><Link to={subTo} onClick={() => this.closeAll(index)}> <SubIcon /> {subTitle} </Link></li>
)
})}
</ul>
</li>
)
})
return (
<header className={onTop ? 'menu' : 'menu notOnTop'}>
<div className='container'>
<Link to='/'>
{' '}
<img className='logo' src={AALogo} alt='Advanced Algos' />{' '}
</Link>
<div
className={
mobileOpen ? 'mobileHandle openedMobile' : 'mobileHandle'
}
onClick={() => this.toggleMobileOpen()}
>
Menu
</div>
<nav className={mobileOpen ? 'links openedMobile' : 'links'}>
<ul className='primaryMenu'>
<li className='primaryLink'>
<Link to='/charts'> Charts </Link>
</li>
{menus}
<li className='primaryLink'>
<a href='https://www.advancedalgos.net/documentation-quick-start.shtml'>
{' '}
Docs{' '}
</a>
</li>
{this.state.user !== undefined && this.state.user !== null ? (
<LoggedIn
user={user}
auth={auth}
bigScreen={bigScreen}
openedMenu={openedMenu}
toggleMenuOpen={(keyValue, allowedValue) =>
this.toggleMenuOpen(keyValue, allowedValue)
}
mouseLeave={allowedValue => this.mouseLeave(allowedValue)}
closeAll={() => this.closeAll()}
/>
) : (
<React.Fragment>
<header className={onTop ? 'menu' : 'menu notOnTop'}>
<div className='container'>
<Link to='/'> <img className='logo' src={AALogo} alt='Advanced Algos' /> </Link>
<div className={mobileOpen ? 'mobileHandle openedMobile' : 'mobileHandle'} onClick={() => this.toggleMobileOpen()}>
Menu
</div>
<nav className={mobileOpen ? 'links openedMobile' : 'links'}>
<ul className='primaryMenu'>
<li className='primaryLink'>
<a href='#' onClick={() => auth.login()}>
{' '}
Login / Sign Up{' '}
</a>
<Link to='/charts'> Charts </Link>
</li>
)}
</ul>
</nav>
</div>
</header>
{menus}
<li className='primaryLink'>
<a href='https://www.advancedalgos.net/documentation-quick-start.shtml'> Docs </a>
</li>
{this.state.user !== undefined && this.state.user !== null ? (
<LoggedIn
user={user}
auth={auth}
bigScreen={bigScreen}
openedMenu={openedMenu}
toggleMenuOpen={(keyValue, allowedValue) => this.toggleMenuOpen(keyValue, allowedValue)}
mouseLeave={(allowedValue) => this.mouseLeave(allowedValue)}
closeAll={() => this.closeAll()}
/>
) : (
<li className='primaryLink'>
<a href='#' onClick={() => auth.login()}> Login / Sign Up </a>
</li>
)}
</ul>
</nav>
</div>
</header>
{onTop ? '' : <div className='toTop' onClick={() => { this.scrollToTop() }} />}
</React.Fragment>
)
}
}
+18 -12
View File
@@ -43,22 +43,27 @@ async function getUserId (authId) {
}
async function run () {
const transformedTeamsSchema = await createTransformedRemoteSchema(
'teams_',
process.env.TEAMS_API_URL,
process.env.TEAMS_API_PRESHARED)
const transformedUsersSchema = await createTransformedRemoteSchema(
'users_',
process.env.USERS_API_URL,
process.env.USERS_API_PRESHARED)
const transformedEventsSchema = await createTransformedRemoteSchema(
'events_',
process.env.EVENTS_API_URL,
process.env.EVENTS_API_PRESHARED)
logger.info('About to create schemas')
const transformedKeyVaultSchema = await createTransformedRemoteSchema(
'keyVault_',
process.env.KEYVAULT_API_URL,
process.env.KEYVAULT_API_PRESHARED)
logger.info('KeyVault schema created')
const transformedTeamsSchema = await createTransformedRemoteSchema(
'teams_',
process.env.TEAMS_API_URL,
process.env.TEAMS_API_PRESHARED)
logger.info('Teams schema created')
const transformedUsersSchema = await createTransformedRemoteSchema(
'users_',
process.env.USERS_API_URL,
process.env.USERS_API_PRESHARED)
logger.info('Users schema created')
const transformedEventsSchema = await createTransformedRemoteSchema(
'events_',
process.env.EVENTS_API_URL,
process.env.EVENTS_API_PRESHARED)
logger.info('Events schema created')
var schemas = [masterSchema]
var resolvers = {}
@@ -171,6 +176,7 @@ async function run () {
}
try {
logger.info('About to run main run method')
run()
} catch (e) {
logger.error(`An general error occured while running the app: ${e}, details: ${e.message}, stack: ${e.stack}`)