Merge pull request #1 from nikolabjelo/Header

Functioning system
This commit is contained in:
nikolabjelo authored and GitHub committed 2018-11-08 11:48:09 +01:00
commit c907083829
33 files changed
+7089 -6146

No files matched your search

+20 -14
View File
@@ -1,16 +1,14 @@
# Contributing
We are thrilled you are interested in contributing to this repository. Your help may be essential to the project's success and we want you in!
We are thrilled you are interested in contributing to the this module. Your help may be essential to the project's success and we want you in!
Advanced Algos LTD is a startup, currently at a very early stage. Although this repository is not open source software yet, we do welcome contributions from the community.
Advanced Algos LTD is a startup, currently at a very early stage. Although this module is not open source software yet, we do welcome contributions from the community.
Contributions are deemed _voluntary work_. There might be incentives in place for certain kinds of contributions. Contact us for more information in this regards.
In any case, contributors agree to provide an express grant of patent rights for their contributions. Submitting Pull Requests to this repository represents an express agreement with the terms of our Balanced Contributor Intellectual Property Agreement. This agreement is a direct implementation of GitHub's [Balanced Employee Intellectual Property Agreement 1.0.1](https://github.com/github/balanced-employee-ip-agreement/blob/master/Balanced_Employee_IP_Agreement.md).
Contributions are deemed _work for hire_ and --as such-- are compensated on a case by case basis, with ALGO tokens. Contributors agree to provide an express grant of patent rights for their contributions. Our Balanced Contributor Intellectual Property Agreement is a direct implementation of GitHub's [Balanced Employee Intellectual Property Agreement 1.0.1](https://github.com/github/balanced-employee-ip-agreement/blob/master/Balanced_Employee_IP_Agreement.md).
# Balanced Contributor Intellectual Property Agreement 1.0.1
This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person or team submitting Pull Requests to this repository and Advanced Algos LTD ("Company").
This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person named below and Advanced Algos ("Company").
**What is this?** This is the Company's Intellectual Property Agreement ("Agreement"). If you've worked in the technology space before, there's a good chance that you've run across one or more of these in the past. This document is the official, entire and exclusive agreement on what intellectual property ("IP") is yours, and what belongs to the Company.
@@ -18,28 +16,36 @@ This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person or t
The Company also believes that it's important to be clear on what it doesn't own. The Company doesn't want you looking over your shoulder every time you work on something personal or worrying that the Company will someday seize your open source non-lethal mousetrap simulation software. In other words, the Company isn't interested in appropriating your personal projects.
**Read this.** Please read this document and be sure you understand it before you submit any Pull Requests. Due to legal risk and corporate obligations, the Company cannot, by and large, negotiate its terms. If you feel you have a particular circumstance that keeps you from signing, please let the Company's legal department ("Legal") know. And, of course, you're always free and encouraged to get your own legal counsel to explain anything you're not clear on.
**Read this.** Please read this document and be sure you understand it before you sign it. Due to legal risk and corporate obligations, the Company cannot, by and large, negotiate its terms. If you feel you have a particular circumstance that keeps you from signing, please let the Company's legal department ("Legal") know. And, of course, you're always free and encouraged to get your own legal counsel to explain anything you're not clear on.
Cool? Then, by submitting your first Pull Request, and as a condition of your contribution, you agree to the following:
Cool? Then, by signing this Agreement, and as a condition of your contribution, you agree to the following:
1. **What the Company owns.** The Company owns any IP ("Company IP") that you create, or help create _as its contributor_, but only if it meets one or more of these additional conditions: The IP was (i) related to an existing or prospective Company product or service at the time you developed, invented, or created it, (ii) developed for use by the Company, or (iii) developed or promoted with existing Company IP or with the Company's endorsement. You hereby grant and assign, and will grant and assign, to the Company all rights and interests in all Company IP.
1. **What the Company owns.** The Company owns any IP ("Company IP") that you create, or help create _as its contributor or contractor_, but only if it meets one or more of these additional conditions: The IP was (i) related to an existing or prospective Company product or service at the time you developed, invented, or created it, (ii) developed for use by the Company, or (iii) developed or promoted with existing Company IP or with the Company's endorsement. You hereby grant and assign, and will grant and assign, to the Company all rights and interests in all Company IP.
"Company IP" includes concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, and works of authorship.
2. **What the Company doesn't own.** If you create IP that doesn't fit into one of the categories listed above, the Company doesn't own it. In other words, the Company doesn't own concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, or works of authorship that you develop, invent, or create that do not meet any of the conditions in Section 1.
2. **What the Company doesn't own.** If you create IP that doesn't fit into one of the categories listed above, the Company doesn't own it. In other words, the Company doesn't own concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, or works of authorship that you develop, invent, or create that do not meet any of the conditions in Section 1. This is true regardless of the computer you use to develop your IP, including the one furnished to you by the Company.
3. **Contribution of your IP to Company projects.** If you include your own IP – such as IP you created prior to working for the Company – into a Company product or service, it's still yours, of course, but you grant the Company a non-exclusive, irrevocable, fully paid-up, royalty-free, perpetual, sublicensable, transferable, worldwide license to use it without restriction in any way or implementation, in modified form, or as is, by itself, or incorporated into another product or service ("License"). If you include your name in any project over which the Company would have rights under this Agreement, such as in a copyright notice or a comment in code or documentation, then the License covers the rights associated with that use of your name as well.
3. **Contribution of your IP to Company projects.** If you include your own IP – such as IP you created prior to working for the Company – into a Company product or service, it's still yours, of course, but you grant the Company a non-exclusive, irrevocable, fully paid-up, royalty-free, perpetual, sublicensable, transferable, worldwide license to use it without restriction in any way or implementation, in modified form, or as is, by itself, or incorporated into another product or service ("License"). If you include your name in any project over which the Company would have rights under this Agreement, such as in a copyright notice or a comment in code or documentation, then the License covers the rights associated with that use of your name as well.
4. **Your contributions to non-Company projects.** The Company recognizes that you may be engaged in work that requires you to submit IP to entities other than the Company, such as open source projects used by the Company. Please make sure that Legal is aware of what you're working on so that Legal can help with any licensing issues. If any project asks you to sign a contribution agreement, you should check with Legal before doing so. These agreements may be legally binding on the Company and so should be run through Legal first.
5. **Voluntary Works** All Company IP that you are involved with or create as part of your work for the Company is voluntary work which does not require compensation. There might be incentives in place for certain kinds of contributions. Feel free to contact the Company to learn more.
5. **Works made for hire.** All Company IP that you are involved with or create as part of your work for the Company is [work made for hire](http://www.copyright.gov/circs/circ09.pdf) under copyright law and compensated by your regular salary or pay.
6. **No conflicts.** You agree that you don't have any outstanding agreements or obligations that conflict with those in this Agreement, and that you won't enter into conflicting agreements in the future.
7. **IP protection.** The Company might someday need to show the work that went into the development of IP that it uses or has used, or to make government filings to establish that it owns the IP or has rights over it. To help in those situations, you agree not to destroy any records you maintain relating to the development of any Company IP or IP under License (together, "All IP"), and, if the Company asks, to provide those records to the Company. You agree to help the Company secure and defend its rights in All IP. For your help the Company will compensate you at a reasonable rate. If the Company is unable to secure your help, you authorize the Company to act on your behalf (as your agent and attorney-in-fact) in securing all rights related to All IP.
7. **IP protection.** The Company might someday need to show the work that went into the development of IP that it uses or has used, or to make government filings to establish that it owns the IP or has rights over it. To help in those situations, you agree not to destroy any records you maintain relating to the development of any Company IP or IP under License (together, "All IP"), and, if the Company asks, to provide those records to the Company. You agree to help the Company secure and defend its rights in All IP, including after you leave the Company. For your help the Company will compensate you at a reasonable rate. If the Company is unable to secure your help, you authorize the Company to act on your behalf (as your agent and attorney-in-fact) in securing all rights related to All IP.
8. **Confidentiality.** As an contributor or contractor of the Company, you will have access to sensitive confidential information that is important to the Company's business. You are responsible for keeping this information confidential, including after you end your work for the Company.
"Confidential Information" includes non-public technical details about our products or services, financial information, business strategies and forecasts, customer data, or any other information, data or know-how that is valuable to the Company because it is not publicly known.
The Company's Confidential Information is sensitive and we expect that you'll treat it as such. You agree to only use the Company's Confidential Information for the purpose of performing your contribution and for the benefit of the Company. You will do your best to keep Confidential Information secret. If you are not sure if something is Confidential Information, you should assume that it is, until you can confirm otherwise.
The Company's Confidential Information is sensitive and we expect that you'll treat it as such. You agree to only use the Company's Confidential Information for the purpose of performing your job and for the benefit of the Company. You will do your best to keep Confidential Information secret. If you are not sure if something is Confidential Information, you should assume that it is, until you can confirm otherwise.
Print Name: _____________
Sign: ________________
Date: ________________
+8 -7
View File
@@ -1,4 +1,4 @@
COPYRIGHT NOTICE
COPYRIGHT NOTICE
© Copyright 2018 Advanced Algos LTD.
@@ -7,7 +7,7 @@ LICENSE NOTICE
Advanced Algos LTD. is a startup, currently at a very early stage. Because certain aspects of
the business are still not clearly defined, we have chosen to --temporarily-- grant a
restrictive license for the use of this repository, until those business aspects are clarified
restrictive license for the use of this module, until those business aspects are clarified
and a proper open source license can be granted.
Advanced Algos LTD. is publishing the code of this software for several reasons. However,
@@ -20,9 +20,9 @@ The reasons for opening up the code of this module at this stage are the followi
to be able to understand what this module does and how. Opening up the code of this module
allows anyone to take a close look.
* We welcome contributions from the community. Contributions are regarded as voluntary work.
There may be incentives in place for certain kinds of contributions. Contact us to learn more.
Contributors agree to provide an express grant of patent rights for their contributions.
* We welcome contributions from the community. Contributions may be compensated on a case
by case basis with ALGO tokens. Contributors agree to provide an express grant of patent
rights for their contributions.
LICENSE WORDING
@@ -32,11 +32,12 @@ Advanced Algos LTD. grants a limited license for the following uses:
1. CODE REVIEW AND AUDITS. You are granted permission to clone this repository to analyze,
review or audit the code.
2. COLLABORATING WITH ADVANCED ALGOS LTD. You are granted permission to fork this repository
2. COLLABORATING WITH ADVANCED ALGOS LTD. You are granted permission to fork the this repository
with the sole purpose of correcting bugs and developing functionality in agreement with
Advanced Algos LTD. By contributing to this repository you explicitely agree to the terms
detailed in CONTRIBUTING.MD.
PLEASE SEE CONTRIBUTING.MD FOR MORE DETAILS ON THE IMPLICATIONS SURROUNDING YOUR CONTRIBUTIONS TO THIS REPOSITORY.
PLEASE SEE CONTRIBUTING.MD FOR MORE DETAILS ON THE IMPLICATIONS SURROUNDING YOUR CONTRIBUTIONS
TO THIS REPOSITORY.
+7 -1
View File
@@ -5,5 +5,11 @@
"version": "16.0"
}
},
"extends": ["standard", "standard-react"]
"extends": ["standard", "standard-react"],
"rules":{
"react/prop-types": 0
},
"env": {
"browser": true
}
}
+5082 -4445
View File
File diff suppressed because it is too large. Load diff
+12 -1
View File
@@ -21,12 +21,17 @@
},
"homepage": "https://github.com/Algoteers/MasterApp#readme",
"devDependencies": {
"@advancedalgos/events-client": "^0.0.1",
"@advancedalgos/key-vault-client": "^0.0.20",
"@advancedalgos/teams-client": "0.0.24",
"@advancedalgos/users-client": "^0.0.15",
"@advancedalgos/events-client": "^0.0.1",
"@advancedalgos/web-components": "0.0.13",
"@babel/core": "^7.1.2",
"@babel/plugin-proposal-class-properties": "^7.1.0",
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
"@babel/plugin-transform-runtime": "^7.1.0",
"@babel/preset-env": "^7.1.0",
"@babel/preset-react": "^7.0.0",
"autoprefixer": "^9.2.0",
"babel-loader": "^8.0.4",
"connect-history-api-fallback": "^1.5.0",
@@ -45,6 +50,7 @@
"html-webpack-harddisk-plugin": "^0.2.0",
"html-webpack-plugin": "^3.2.0",
"koa-connect": "^2.0.1",
"node-sass": "^4.10.0",
"postcss-loader": "^3.0.0",
"prettier-standard": "^8.0.1",
"react-hot-loader": "^4.3.11",
@@ -62,6 +68,10 @@
]
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.8",
"@fortawesome/free-brands-svg-icons": "^5.5.0",
"@fortawesome/free-solid-svg-icons": "^5.5.0",
"@fortawesome/react-fontawesome": "^0.1.3",
"@material-ui/core": "^3.2.2",
"@material-ui/icons": "^3.0.1",
"apollo-cache-inmemory": "^1.3.5",
@@ -75,6 +85,7 @@
"classnames": "^2.2.6",
"graphql": "^14.0.2",
"graphql-tag": "^2.10.0",
"jwt-decode": "^2.2.0",
"mini-css-extract-plugin": "^0.4.4",
"npm": "^6.4.1",
"optimize-css-assets-webpack-plugin": "^5.0.1",
+28 -28
View File
@@ -11,7 +11,7 @@ import { theme, globalStyles } from './styles'
import { client } from './graphql/apollo'
import Auth from './auth'
import { Header, Footer, Home, Charts, Callback } from './views'
import { Layout, Home, Charts, Callback } from './views'
import Users from '@advancedalgos/users-client'
import Teams from '@advancedalgos/teams-client'
@@ -23,43 +23,43 @@ export const auth = new Auth(
client
)
export const MasterApp = () => (
export const MasterApp = (props) => (
<BrowserRouter>
<ApolloProvider client={client}>
<MuiThemeProvider theme={theme}>
<CssBaseline />
<Header auth={auth} />
<Switch>
<Route exact path='/' component={Home} />
<Route
path='/callback'
render={props => {
auth.handleAuthentication(props)
return <Callback {...props} />
}}
<Layout auth={auth}>
<Switch>
<Route exact path='/' component={Home} />
<Route
path='/callback'
render={props => {
auth.handleAuthentication(props)
return <Callback {...props} />
}}
/>
<Route
path='/charts'
render={props => <Charts {...props} auth={auth} />}
<Route
path='/charts'
render={props => <Charts {...props} auth={auth} />}
/>
<Route
path='/users'
render={props => <Users {...props} auth={auth} />}
<Route
path='/users'
render={props => <Users {...props} auth={auth} />}
/>
<Route
path='/teams'
render={props => <Teams {...props} auth={auth} />}
<Route
path='/teams'
render={props => <Teams {...props} auth={auth} />}
/>
<Route
path='/events'
render={props => <Events {...props} auth={auth} />}
<Route
path='/events'
render={props => <Events {...props} auth={auth} />}
/>
<Route
path='/key-vault'
render={props => <KeyVault {...props} auth={auth} />}
<Route
path='/key-vault'
render={props => <KeyVault {...props} auth={auth} />}
/>
</Switch>
<Footer />
</Switch>
</Layout>
</MuiThemeProvider>
</ApolloProvider>
</BrowserRouter>
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 120 24"><defs><style>.cls-1,.cls-3{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{stroke:#2a96ff;stroke-miterlimit:10;stroke-width:0.5px;}.cls-4{fill:#fff;}.cls-5{fill:#e3493c;}</style><clipPath id="clip-path"><rect class="cls-1" x="272.54" y="79.59" width="600" height="600"/></clipPath></defs><title>aa-logo-horiz-dark</title><g id="Layer_1" data-name="Layer 1"><g class="cls-2"><circle class="cls-3" cx="338.14" cy="263.28" r="277.97"/></g></g><g id="Layer_4" data-name="Layer 4"><path class="cls-4" d="M27.67,15.74l-.19-1.58H26.29l-.2,1.58H24.51L25.7,7.79h2.39l1.19,8Zm-.75-6.39h-.08l-.4,3.41h.89Z"/><path class="cls-4" d="M32.15,7.79h1.93a2.39,2.39,0,0,1,1.46.35,1.68,1.68,0,0,1,.54,1.11,21,21,0,0,1,.1,2.52,20.93,20.93,0,0,1-.1,2.51,1.68,1.68,0,0,1-.54,1.11,2.39,2.39,0,0,1-1.46.35H32.15Zm1.93,6.51a.46.46,0,0,0,.37-.12,1.19,1.19,0,0,0,.13-.6c0-.32,0-.93,0-1.81s0-1.5,0-1.82a1.19,1.19,0,0,0-.13-.6.46.46,0,0,0-.37-.12h-.36V14.3Z"/><path class="cls-4" d="M39.94,15.74,38.87,7.79h1.59l.66,6.31h.12l.61-6.31h1.57l-1.07,8Z"/><path class="cls-4" d="M48.8,15.74l-.19-1.58H47.42l-.2,1.58H45.64l1.19-7.95h2.39l1.19,8Zm-.75-6.39H48l-.4,3.41h.89Z"/><path class="cls-4" d="M56.06,15.74l-1.23-4h0v4h-1.5V7.79h1.47l1.13,3.61h.06V7.79h1.51v8Z"/><path class="cls-4" d="M63.14,15.77a3.11,3.11,0,0,1-.59.06,2.06,2.06,0,0,1-1.36-.37,1.94,1.94,0,0,1-.58-1.19,17.1,17.1,0,0,1-.13-2.5,14.22,14.22,0,0,1,.15-2.5,1.94,1.94,0,0,1,.58-1.2,2,2,0,0,1,1.34-.37,4.21,4.21,0,0,1,.62,0,1.86,1.86,0,0,1,.45.12V9.2a5.77,5.77,0,0,0-.78-.06.77.77,0,0,0-.55.15,1.22,1.22,0,0,0-.18.64c0,.33,0,.94,0,1.84s0,1.5,0,1.83a1.22,1.22,0,0,0,.18.64.77.77,0,0,0,.55.15,4.74,4.74,0,0,0,.8-.06v1.29A1.56,1.56,0,0,1,63.14,15.77Z"/><path class="cls-4" d="M66.59,15.74V7.79h3.19V9.23h-1.6V11h1.41v1.45H68.18V14.3h1.6v1.44Z"/><path class="cls-4" d="M72.79,7.79h1.92a2.4,2.4,0,0,1,1.47.35,1.67,1.67,0,0,1,.53,1.11,20.46,20.46,0,0,1,.11,2.52,20.38,20.38,0,0,1-.11,2.51,1.67,1.67,0,0,1-.53,1.11,2.4,2.4,0,0,1-1.47.35H72.79Zm1.92,6.51a.48.48,0,0,0,.38-.12,1.19,1.19,0,0,0,.13-.6c0-.32,0-.93,0-1.81s0-1.5,0-1.82a1.19,1.19,0,0,0-.13-.6.48.48,0,0,0-.38-.12h-.35V14.3Z"/><path class="cls-5" d="M85.6,15.74l-.91-2.31H80.93L80,15.74h-.76l3.11-7.95h.89l3.12,8ZM82.84,8.66h-.06l-1.61,4.08h3.27Z"/><path class="cls-5" d="M88.44,15.74V7.79h.74V15H93v.72Z"/><path class="cls-5" d="M97.86,12.24v-.68h2.7v4c-.37.06-.8.12-1.26.16s-.87.06-1.22.06a5.68,5.68,0,0,1-2.14-.3A1.71,1.71,0,0,1,95,14.4a9.76,9.76,0,0,1-.26-2.63A9.85,9.85,0,0,1,95,9.13,1.71,1.71,0,0,1,96,8a5.91,5.91,0,0,1,2.13-.29c.38,0,.81,0,1.27.06s.86.1,1.18.16v.66a13.61,13.61,0,0,0-2-.19,8.76,8.76,0,0,0-2,.16,1.21,1.21,0,0,0-.79.85,8.45,8.45,0,0,0-.23,2.37A10.48,10.48,0,0,0,95.66,14a1.27,1.27,0,0,0,.7.91,4.41,4.41,0,0,0,1.72.24l.9,0c.35,0,.64,0,.87-.09V12.24Z"/><path class="cls-5" d="M103.84,15.54a1.48,1.48,0,0,1-.83-1.08,13.91,13.91,0,0,1-.17-2.69,14,14,0,0,1,.17-2.7A1.48,1.48,0,0,1,103.84,8a6,6,0,0,1,2.21-.29,5.94,5.94,0,0,1,2.2.29,1.46,1.46,0,0,1,.83,1.08,13.75,13.75,0,0,1,.18,2.7,13.7,13.7,0,0,1-.18,2.69,1.46,1.46,0,0,1-.83,1.08,5.94,5.94,0,0,1-2.2.29A6,6,0,0,1,103.84,15.54Zm3.93-.57a1,1,0,0,0,.61-.81,13.62,13.62,0,0,0,.14-2.39,13.68,13.68,0,0,0-.14-2.4,1,1,0,0,0-.61-.81,8.84,8.84,0,0,0-3.45,0,1,1,0,0,0-.6.81,12.47,12.47,0,0,0-.15,2.4,12.42,12.42,0,0,0,.15,2.39,1,1,0,0,0,.6.81,8.84,8.84,0,0,0,3.45,0Z"/><path class="cls-5" d="M112.94,15.79c-.5,0-.94-.06-1.31-.11V15l1.33.1c.48,0,.88.05,1.2.05a8.75,8.75,0,0,0,1-.05,1.78,1.78,0,0,0,.65-.22.68.68,0,0,0,.35-.47,3.13,3.13,0,0,0,.09-.83,4.54,4.54,0,0,0-.06-.9.57.57,0,0,0-.31-.37,3.72,3.72,0,0,0-.88-.18l-2-.22a2.08,2.08,0,0,1-1.06-.32,1.18,1.18,0,0,1-.44-.64,5,5,0,0,1-.09-1.07,2.57,2.57,0,0,1,.3-1.38,1.56,1.56,0,0,1,.9-.63,6.12,6.12,0,0,1,1.59-.16c.45,0,.9,0,1.35,0s.81.08,1.07.13v.66c-.31,0-.68-.07-1.11-.1s-.83,0-1.19,0a6.52,6.52,0,0,0-1.1.07,1.88,1.88,0,0,0-.66.22.73.73,0,0,0-.33.44,2.52,2.52,0,0,0-.08.75,2.94,2.94,0,0,0,.07.77.61.61,0,0,0,.29.36,2.05,2.05,0,0,0,.69.16l2,.21a4.86,4.86,0,0,1,1.17.24,1,1,0,0,1,.55.63,4.24,4.24,0,0,1,.13,1.27,3,3,0,0,1-.31,1.54,1.36,1.36,0,0,1-.85.64,5.78,5.78,0,0,1-1.47.14C113.93,15.83,113.45,15.82,112.94,15.79Z"/><path class="cls-5" d="M11.36,13.89a7.43,7.43,0,0,1,2.52.4c.82.58,2,.89,2.5.3s0-1.61-.79-2.38a7.64,7.64,0,0,1-.93-2.35c.11-1-.23-2.23-1-2.35s-1.47,1-1.65,1.88a7.38,7.38,0,0,1-1.61,2c-.9.42-1.77,1.3-1.49,2S10.48,14.16,11.36,13.89Z"/><path class="cls-5" d="M14.75,3.42C16,3.47,16.49,6,16.29,7.91a26.16,26.16,0,0,0,1.64,4.69,1.88,1.88,0,0,0,.79.79,10.55,10.55,0,0,1-.84-5c.79-2.19.44-5.15-.75-5.84a2.71,2.71,0,0,0-3.68,1.2A1.8,1.8,0,0,1,14.75,3.42Z"/><path class="cls-5" d="M5,14C4.4,13,6.3,11.26,8.09,10.45,8.66,10.2,11,7.2,11.33,6.7a2,2,0,0,0,.29-1.09A10.62,10.62,0,0,1,7.68,8.86C5.38,9.27,3,11.05,3,12.42A2.71,2.71,0,0,0,5.87,15,1.88,1.88,0,0,1,5,14Z"/><path class="cls-5" d="M19.12,17.42c-.66,1-3.07.23-4.67-.92a25.88,25.88,0,0,0-4.87-.92,1.79,1.79,0,0,0-1.08.29,10.37,10.37,0,Line truncated

After

Width:  |  Height:  |  Size: 5.0 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 98 140"><defs><style>.cls-1,.cls-3{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{stroke:#2a96ff;stroke-miterlimit:10;stroke-width:0.5px;}.cls-4{fill:#fff;}.cls-5{fill:#e3493c;}</style><clipPath id="clip-path"><rect class="cls-1" x="144.54" y="59.59" width="600" height="600"/></clipPath></defs><title>aa-logo-vert-dark</title><g id="Layer_1" data-name="Layer 1"><g class="cls-2"><circle class="cls-3" cx="210.14" cy="243.28" r="277.97"/></g></g><g id="Layer_4" data-name="Layer 4"><path class="cls-4" d="M11.27,108.29l-.38-3H8.62l-.38,3h-3L7.49,93.1h4.57l2.28,15.19ZM9.83,96.08H9.68L8.9,102.6h1.71Z"/><path class="cls-4" d="M18,93.1h3.69a4.53,4.53,0,0,1,2.79.67,3.22,3.22,0,0,1,1,2.11,41.13,41.13,0,0,1,.19,4.82,41,41,0,0,1-.19,4.81,3.19,3.19,0,0,1-1,2.11,4.46,4.46,0,0,1-2.79.67H18Zm3.69,12.43a.89.89,0,0,0,.71-.22,2.31,2.31,0,0,0,.25-1.15c0-.61,0-1.77,0-3.46s0-2.85,0-3.47a2.31,2.31,0,0,0-.25-1.15.89.89,0,0,0-.71-.22H21v9.67Z"/><path class="cls-4" d="M31.16,108.29,29.11,93.1h3l1.25,12.06h.23L34.8,93.1h3l-2.05,15.19Z"/><path class="cls-4" d="M46.35,108.29l-.38-3H43.7l-.38,3h-3L42.57,93.1h4.57l2.28,15.19ZM44.91,96.08h-.15L44,102.6h1.7Z"/><path class="cls-4" d="M58.44,108.29l-2.36-7.62H56v7.62H53.12V93.1h2.8L58.09,100h.11V93.1h2.89v15.19Z"/><path class="cls-4" d="M70.19,108.36a6.43,6.43,0,0,1-1.12.11,4,4,0,0,1-2.61-.71,3.72,3.72,0,0,1-1.1-2.28,31.28,31.28,0,0,1-.26-4.78,29.46,29.46,0,0,1,.28-4.77,3.82,3.82,0,0,1,1.12-2.3,3.9,3.9,0,0,1,2.57-.71,7.72,7.72,0,0,1,1.18.1,3.21,3.21,0,0,1,.85.24v2.53a11.75,11.75,0,0,0-1.48-.11,1.48,1.48,0,0,0-1.05.29,2.16,2.16,0,0,0-.35,1.23c0,.62-.08,1.79-.08,3.5s0,2.87.08,3.5a2.15,2.15,0,0,0,.35,1.22,1.48,1.48,0,0,0,1.05.29,9.89,9.89,0,0,0,1.53-.11v2.47A4.23,4.23,0,0,1,70.19,108.36Z"/><path class="cls-4" d="M75,108.29V93.1h6.09v2.76H78v3.38h2.7V102H78v3.53h3.07v2.76Z"/><path class="cls-4" d="M85.08,93.1h3.69a4.55,4.55,0,0,1,2.79.67,3.16,3.16,0,0,1,1,2.11,38.45,38.45,0,0,1,.2,4.82,38.37,38.37,0,0,1-.2,4.81,3.14,3.14,0,0,1-1,2.11,4.48,4.48,0,0,1-2.79.67H85.08Zm3.69,12.43a.89.89,0,0,0,.71-.22,2.31,2.31,0,0,0,.25-1.15c0-.61,0-1.77,0-3.46s0-2.85,0-3.47a2.31,2.31,0,0,0-.25-1.15.89.89,0,0,0-.71-.22h-.69v9.67Z"/><path class="cls-5" d="M19.79,134.79l-2.1-5.3H9.08L7,134.79H5.24l7.15-18.23h2l7.16,18.23Zm-6.33-16.24h-.14L9.64,127.9h7.5Z"/><path class="cls-5" d="M26.41,134.79V116.56h1.7v16.58H37v1.65Z"/><path class="cls-5" d="M48.1,126.76V125.2h6.2v9.3c-.87.14-1.84.26-2.9.35s-2,.15-2.8.15a12.88,12.88,0,0,1-4.9-.69,3.89,3.89,0,0,1-2.15-2.6,22.5,22.5,0,0,1-.58-6,22.11,22.11,0,0,1,.6-6A3.87,3.87,0,0,1,43.72,117a13.15,13.15,0,0,1,4.88-.67c.88,0,1.85.05,2.92.14s2,.22,2.7.36v1.51a33.49,33.49,0,0,0-4.66-.42,18.69,18.69,0,0,0-4.55.37,2.7,2.7,0,0,0-1.81,1.93,18.81,18.81,0,0,0-.53,5.43,23.5,23.5,0,0,0,.39,5.13,3,3,0,0,0,1.59,2.09,10.15,10.15,0,0,0,4,.55c.56,0,1.25,0,2.07-.08s1.47-.12,2-.19v-6.41Z"/><path class="cls-5" d="M61.91,134.32A3.33,3.33,0,0,1,60,131.86a31.94,31.94,0,0,1-.41-6.19,31.89,31.89,0,0,1,.41-6.18A3.33,3.33,0,0,1,61.91,117a13.45,13.45,0,0,1,5.07-.67A13.42,13.42,0,0,1,72,117a3.33,3.33,0,0,1,1.89,2.47,31.89,31.89,0,0,1,.41,6.18,31.94,31.94,0,0,1-.41,6.19A3.33,3.33,0,0,1,72,134.32,13.38,13.38,0,0,1,67,135,13.4,13.4,0,0,1,61.91,134.32Zm9-1.29a2.34,2.34,0,0,0,1.37-1.86,29.55,29.55,0,0,0,.34-5.5,29.7,29.7,0,0,0-.34-5.5,2.32,2.32,0,0,0-1.37-1.85,13.69,13.69,0,0,0-4-.38,13.73,13.73,0,0,0-4,.38,2.32,2.32,0,0,0-1.37,1.85,28.82,28.82,0,0,0-.34,5.5,28.68,28.68,0,0,0,.34,5.5A2.34,2.34,0,0,0,63,133a13.73,13.73,0,0,0,4,.38A13.69,13.69,0,0,0,70.94,133Z"/><path class="cls-5" d="M82.89,134.91c-1.17-.07-2.18-.15-3-.25v-1.59c.91.08,1.93.16,3,.23s2,.11,2.76.11a17.72,17.72,0,0,0,2.32-.12,4,4,0,0,0,1.49-.49,1.67,1.67,0,0,0,.81-1.07,7.68,7.68,0,0,0,.2-1.92,9.6,9.6,0,0,0-.15-2.07,1.14,1.14,0,0,0-.71-.83,7.63,7.63,0,0,0-2-.42L83,126a4.91,4.91,0,0,1-2.42-.74,2.61,2.61,0,0,1-1-1.47,10.4,10.4,0,0,1-.23-2.45,5.81,5.81,0,0,1,.71-3.17,3.47,3.47,0,0,1,2-1.44,14.24,14.24,0,0,1,3.66-.37c1,0,2,0,3.09.1a19.49,19.49,0,0,1,2.44.29v1.51c-.7-.08-1.55-.16-2.54-.22s-1.9-.09-2.73-.09a15.54,15.54,0,0,0-2.52.16,4.18,4.18,0,0,0-1.51.5,1.74,1.74,0,0,0-.76,1,6,6,0,0,0-.19,1.72,6.83,6.83,0,0,0,.17,1.76,1.32,1.32,0,0,0,.67.82,4.9,4.9,0,0,0,1.57.39l4.51.47a10.3,10.3,0,0,1,2.69.56,2.23,2.23,0,0,1,1.25,1.43,9.9,9.9,0,0,1,.3,2.91,6.84,6.84,0,0,1-.72,3.54,3.17,3.17,0,0,1-2,1.47,14.17,14.17,0,0,1-3.38.32C85.14,135,84.05,135,82.89,134.91Z"/><path class="cls-5" d="M47.08,49.62c1.17-.36,8.61.83,9.61,1.53,3.13,2.21,7.71,3.41,9.55,1.15s-.08-6.13-3-9.1c-.88-.88-3.7-7.75-3.56-9,.42-3.87-.85-8.5-3.73-9s-5.61,3.66-6.3,7.16c-.24,1.22-5,7.11-6.14,7.62-3.48,1.62-6.77,5-5.73,7.69S43.7,50.65,47.08,49.62Z"/><path class="cls-5" d="M60,9.61c4.68.2,6.65,9.72,5.89,17.18-.24,2.37,5.27,15.71,6.24,17.91a7.29,7.29,0,0,0,3,3C71.63,38.07,71.32,30.32,72,28.51c3-8.4,1.71-19.69-2.85-22.32-3.07-1.77-9.79-2.48-14.07,4.56A6.91,6.91,0,0,1,60,9.61Z"/><path class="cls-5" d="M22.61,50.2C2Line truncated

After

Width:  |  Height:  |  Size: 5.3 KiB

+1 -1
View File
@@ -228,7 +228,7 @@ class Auth {
return user
}
//TODO improve to check the session validation on client side
// TODO improve to check the session validation on client side
const checkSSO = await this.checkSession()
.then(result => {
console.log('handleAuth.checksessions: ', result)
+1 -1
View File
@@ -19,7 +19,7 @@ const authRetryLink = onError(
if (graphQLErrors) {
// User access token has expired
// console.log('authLink: ', graphQLErrors) // check for error message to intercept and resend with Auth0 access token
if (graphQLErrors[0].message === 'Context creation failed: jwt expired') {
if (graphQLErrors[0].message === 'Context creation failed: jwt expired') {
window.localStorage.clear()
location.reload()
} else if (graphQLErrors[0].message === 'Not logged in') {
+1 -1
View File
@@ -9,7 +9,7 @@ import rootReducer from './reducers/rootReducer'
const store = createStore(rootReducer)
if (process.env.NODE_ENV !== 'production') {
localStorage.setItem('debug', 'advanced-algos:*')
window.localStorage.setItem('debug', 'advanced-algos:*')
}
ReactDOM.render(<Provider store={store}><MasterApp /></Provider>, document.getElementById('masterApp'))
+8 -9
View File
@@ -1,11 +1,15 @@
import { createMuiTheme } from '@material-ui/core/styles'
import indigo from '@material-ui/core/colors/indigo'
// import red from '@material-ui/core/colors/red'
export const theme = createMuiTheme({
palette: {
primary: { main: '#303036' },
secondary: { main: '#CC5835' } // <--RUSTED_RED ~ GOLDEN_ORANGE --> #F0A202
primary: {
main: '#303036',
light: '#acb4b6'
},
secondary: {
main: '#CC5835',
light: '#e3493c'
} // <--RUSTED_RED ~ GOLDEN_ORANGE --> #F0A202
},
typography: {
fontFamily: '"Saira","Saira Condenses", sans-serif',
@@ -62,11 +66,6 @@ export const globalStyles = theme => ({
[theme.breakpoints.up('sm')]: {
paddingBottom: theme.spacing.unit * 2
}
},
footer: {
marginTop: theme.spacing.unit * 8,
borderTop: `1px solid ${theme.palette.divider}`,
padding: `${theme.spacing.unit * 6}px 0`
}
})
+2 -11
View File
@@ -1,8 +1,5 @@
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import CssBaseline from '@material-ui/core/CssBaseline'
import Typography from '@material-ui/core/Typography'
import { withStyles } from '@material-ui/core/styles'
import { connect } from 'react-redux'
@@ -26,7 +23,6 @@ const styles = theme => ({
})
class Charts extends Component {
componentDidMount () {
window.canvasApp.visible = true
let body = document.getElementById('body')
@@ -42,17 +38,12 @@ class Charts extends Component {
}
render () {
const { classes } = this.props
return (
<React.Fragment />
)
}
}
Charts.propTypes = {
classes: PropTypes.object.isRequired
}
const mapStateToProps = (state) => {
return {
context: state.context
@@ -61,8 +52,8 @@ const mapStateToProps = (state) => {
const mapDispatchToProps = (dispatch) => {
return {
hideFooter: () => { dispatch({type: 'HIDE_FOOTER'}) },
showFooter: () => { dispatch({type: 'SHOW_FOOTER'}) }
hideFooter: () => { dispatch({ type: 'HIDE_FOOTER' }) },
showFooter: () => { dispatch({ type: 'SHOW_FOOTER' }) }
}
}
-166
View File
@@ -1,166 +0,0 @@
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import { NavLink } from 'react-router-dom'
import { withStyles } from '@material-ui/core/styles'
import classNames from 'classnames'
import Typography from '@material-ui/core/Typography'
import Grid from '@material-ui/core/Grid'
import { connect } from 'react-redux'
import aalogo from '../../assets/advanced-algos/aa-logo-vert.svg'
const styles = theme => ({
'@global': {
body: {
backgroundColor: theme.palette.common.white
}
},
layout: {
width: 'auto',
marginTop: theme.spacing.unit * 7,
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'
}
},
footer: {
borderTop: `1px solid ${theme.palette.divider}`,
padding: `${theme.spacing.unit * 6}px 0`
},
footerContainer: {
marginRight: theme.spacing.unit * 8,
marginLeft: theme.spacing.unit * 8
},
footerLink: {
textDecoration: 'none'
}
})
class Footer extends Component {
render () {
let { classes } = this.props
const masterApp = this.props.context.masterApp
if (masterApp.footer.visible === false) {
return (<div />)
} else {
return (
<footer className={classNames(classes.footer, classes.layout)}>
<Grid
container
spacing={32}
justify='space-evenly'
className={classNames(classes.footerContainer)}
>
<Grid item xs>
<Typography variant='h6' color='textPrimary' gutterBottom>
Pages
</Typography>
<NavLink to='/' className={classNames(classes.footerLink)}>
<Typography variant='subtitle1' color='textSecondary'>
Home
</Typography>
</NavLink>
<NavLink to='/teams' className={classNames(classes.footerLink)}>
<Typography variant='subtitle1' color='textSecondary'>
Teams
</Typography>
</NavLink>
<NavLink to='/key-vault' className={classNames(classes.footerLink)}>
<Typography variant='subtitle1' color='textSecondary'>
Key Vault
</Typography>
</NavLink>
</Grid>
<Grid item xs>
<Typography variant='h6' color='textPrimary' gutterBottom>
Support
</Typography>
<a
href='https://advancedalgos.net/documentation-quick-start.shtml'
target='_blank>'
className={classNames(classes.footerLink)}
>
<Typography variant='subtitle1' color='textSecondary'>
Documentation
</Typography>
</a>
<a
href='https://t.me/advancedalgoscommunity'
target='_blank>'
className={classNames(classes.footerLink)}
>
<Typography variant='subtitle1' color='textSecondary'>
Telegram
</Typography>
</a>
</Grid>
<Grid item xs>
<Typography variant='h6' color='textPrimary' gutterBottom>
Modules
</Typography>
<a
href='https://develop.advancedalgos.net'
target='_blank>'
className={classNames(classes.footerLink)}
>
<Typography variant='subtitle1' color='textSecondary'>
Platform
</Typography>
</a>
<a
href='https://users.advancedalgos.net'
target='_blank>'
className={classNames(classes.footerLink)}
>
<Typography variant='subtitle1' color='textSecondary'>
Users
</Typography>
</a>
<a
href='https://teams.advancedalgos.net'
target='_blank>'
className={classNames(classes.footerLink)}
>
<Typography variant='subtitle1' color='textSecondary'>
Teams
</Typography>
</a>
<a
href='https://keyvault.advancedalgos.net'
target='_blank>'
className={classNames(classes.footerLink)}
>
<Typography variant='subtitle1' color='textSecondary'>
Key Vault
</Typography>
</a>
</Grid>
<Grid item xs>
<NavLink to='/'>
<img alt='' src={aalogo} width={98} height={140} />
</NavLink>
</Grid>
</Grid>
</footer>
)
}
}
}
Footer.propTypes = {
classes: PropTypes.object.isRequired
}
const mapStateToProps = (state) => {
return {
context: state.context
}
}
export default connect(mapStateToProps)(withStyles(styles)(Footer))
-42
View File
@@ -1,42 +0,0 @@
import React from 'react'
import PropTypes from 'prop-types'
// import { graphql } from 'react-apollo'
import LoggedInMenu from './LoggedInMenu'
import { isDefined } from '../../utils/js-helpers'
export const LoggedIn = props => {
let { data, user, auth } = props
let displayName = 'No Display Name'
if (isDefined(user.alias)) {
displayName = user.alias
}
if (isDefined(user.nickname)) {
displayName = user.nickname
}
if (isDefined(user.firstName)) {
displayName = user.firstName
}
if (isDefined(user.firstName) && isDefined(user.lastName)) {
displayName = user.firstName + ' ' + user.lastName
}
return (
<div>
<LoggedInMenu menuLabel={displayName} auth={auth} />
</div>
)
}
LoggedIn.propTypes = {
data: PropTypes.object,
user: PropTypes.object.isRequired,
auth: PropTypes.object.isRequired
}
export default LoggedIn
-77
View File
@@ -1,77 +0,0 @@
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import Button from '@material-ui/core/Button'
import Menu from '@material-ui/core/Menu'
import MenuItem from '@material-ui/core/MenuItem'
import { Link } from 'react-router-dom'
import ProfileIcon from '@material-ui/icons/Person'
import LogoutIcon from '@material-ui/icons/DirectionsWalk'
const UserLink = props => <Link to='/users/user' {...props} />
const LogoutLink = props => <Link to='/' {...props} />
class LoggedInUserMenu extends Component {
constructor (props) {
super(props)
this.handleMenu = this.handleMenu.bind(this)
this.handleClose = this.handleClose.bind(this)
this.handleLogout = this.handleLogout.bind(this)
this.state = {
menu: null
}
}
render () {
const { menuLabel } = this.props
return (
<React.Fragment>
<Button
aria-owns={this.state.open ? 'render-props-menu' : null}
aria-haspopup='true'
onClick={e => this.handleMenu(e)}
color='inherit'
>
{menuLabel}
</Button>
<Menu
id='render-props-menu'
anchorEl={this.state.menu}
open={Boolean(this.state.menu)}
onClose={this.handleClose}
>
<MenuItem onClick={this.handleClose} component={UserLink}>
<ProfileIcon />
<div>Profile</div>
</MenuItem>
<MenuItem onClick={this.handleLogout} component={LogoutLink}>
<LogoutIcon />
<div>Logout</div>
</MenuItem>
</Menu>
</React.Fragment>
)
}
handleMenu (e) {
this.setState({ menu: e.currentTarget })
}
handleClose () {
this.setState({ menu: null })
}
handleLogout () {
this.props.auth.logout()
this.setState({ menu: null })
}
}
LoggedInUserMenu.propTypes = {
menuLabel: PropTypes.string.isRequired,
auth: PropTypes.object.isRequired
}
export default LoggedInUserMenu
-15
View File
@@ -1,15 +0,0 @@
import React from 'react'
import PropTypes from 'prop-types'
import Button from '@material-ui/core/Button'
export const LoggedOut = ({ auth }) => (
<div onClick={() => auth.login()}>
<Button color='inherit'>Login / Sign up</Button>
</div>
)
LoggedOut.propTypes = {
auth: PropTypes.object.isRequired
}
export default LoggedOut
-163
View File
@@ -1,163 +0,0 @@
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import { withStyles } from '@material-ui/core/styles'
import AppBar from '@material-ui/core/AppBar'
import Toolbar from '@material-ui/core/Toolbar'
import Typography from '@material-ui/core/Typography'
import IconButton from '@material-ui/core/IconButton'
import Button from '@material-ui/core/Button'
import classNames from 'classnames'
// icons
import HomeIcon from '@material-ui/icons/Home'
import ExitIcon from '@material-ui/icons/ExitToApp'
import { Link } from 'react-router-dom'
import { getItem } from '../../utils/local-storage'
// components
import { LoggedIn } from './LoggedIn'
import { LoggedOut } from './LoggedOut'
import AALogo from '../../assets/advanced-algos/aa-logo-dark.svg'
const ChartsLink = props => <Link to='/charts' {...props} />
const UsersLink = props => <Link to='/users' {...props} />
const TeamsLink = props => <Link to='/teams' {...props} />
const EventsLink = props => <Link to='/events' {...props} />
const KeyVaultLink = props => <Link to='/key-vault' {...props} />
const HomeLink = props => <Link to='/' {...props} />
const styles = theme => ({
'@global': {
body: {
backgroundColor: theme.palette.common.white
}
},
root: {
flexGrow: 1
},
colorDefault: {
color: '#000'
},
flex: {
flexGrow: 1
},
toolbarTitle: {
flex: 1
},
menuButton: {
marginLeft: -12,
marginRight: 20
},
appBar: {
position: 'relative'
},
img: {
display: 'block',
maxWidth: 240,
maxHeight: 48
},
externalLink: {
textDecoration: 'none'
}
})
class Header extends Component {
constructor (props) {
super(props)
this.state = {
user: null,
open: false
}
}
async componentDidMount () {
const user = window.localStorage.getItem('user')
this.setState({ user })
}
render () {
let { classes, auth } = this.props
let user = JSON.parse(this.state.user)
return (
<div className={classes.root}>
<AppBar
position='static'
classes={{ root: classes.appBar, colorDefault: classes.colorDefault }}
>
<Toolbar>
<img className={classes.img} src={AALogo} alt='Advanced Algos' />
<Typography
variant='h6'
color='inherit'
className={classes.toolbarTitle}
>
&nbsp;
</Typography>
<IconButton
className={classes.menuButton}
color='inherit'
title='Home'
component={HomeLink}
>
<HomeIcon />
</IconButton>
<Button component={ChartsLink} color='inherit'>
Charts
</Button>
<Button component={UsersLink} color='inherit'>
Users
</Button>
<Button component={TeamsLink} color='inherit'>
Teams
</Button>
<Button component={EventsLink} color='inherit'>
Events
</Button>
<Button component={KeyVaultLink} color='inherit'>
Key Vault
</Button>
<Button
href='https://www.advancedalgos.net/documentation-quick-start.shtml'
color='inherit'
target='_blank'
>
Docs
</Button>
{this.state.user !== undefined && this.state.user !== null ? (
<React.Fragment>
<LoggedIn user={user} auth={auth} styles={styles} />
</React.Fragment>
) : (
<LoggedOut auth={auth} styles={styles} />
)}
<IconButton
className={classes.menuButton}
color='inherit'
title='Exit'
href='http://www.advancedalgos.net/'
>
<ExitIcon />
</IconButton>
</Toolbar>
</AppBar>
</div>
)
}
}
Header.propTypes = {
classes: PropTypes.object.isRequired,
auth: PropTypes.object.isRequired
}
export default withStyles(styles)(Header)
+2 -3
View File
@@ -25,7 +25,6 @@ const styles = theme => ({
})
class Home extends Component {
render () {
const { classes } = this.props
return (
@@ -34,7 +33,7 @@ class Home extends Component {
<main className={classes.layout}>
<div className={classes.heroContent}>
<Typography
variant='display3'
variant='h2'
align='center'
color='textPrimary'
gutterBottom
@@ -42,7 +41,7 @@ class Home extends Component {
Collaborate. Innovate. Evolve.
</Typography>
<Typography
variant='title'
variant='h6'
align='center'
color='textSecondary'
component='h3'
+2 -3
View File
@@ -1,7 +1,6 @@
import Header from './header'
import Footer from './footer'
import Home from './home'
import Charts from './charts'
import Callback from './callback'
import Layout from './layout'
export { Header, Footer, Home, Charts, Callback }
export { Layout, Home, Charts, Callback }
+110
View File
@@ -0,0 +1,110 @@
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import classNames from 'classnames'
import { NavLink, Link } from 'react-router-dom'
import { withStyles } from '@material-ui/core/styles'
import withWidth from '@material-ui/core/withWidth'
import { connect } from 'react-redux'
import Typography from '@material-ui/core/Typography'
import Grid from '@material-ui/core/Grid'
import Button from '@material-ui/core/Button'
import InputBase from '@material-ui/core/InputBase'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faFacebookF, faTelegramPlane, faTwitter } from '@fortawesome/free-brands-svg-icons'
import styles from './styles'
import aalogo from '../../../assets/advanced-algos/aa-logo-horiz-dark.svg'
class Footer extends Component {
render () {
let { classes, width } = this.props
const masterApp = this.props.context.masterApp
if (masterApp.footer.visible === false) {
return (<div />)
} else {
return (
<footer className={classNames(classes.darkSection, classes.footer)}>
<Grid
container
spacing={8}
justify='space-evenly'
className={classes.footerContainer}
>
<Grid item xs={12} sm={4} md={4}>
<NavLink to='/'>
<img alt='' src={aalogo} width={'100%'} height={'auto'} />
</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>
</Grid>
</Grid>
<Grid item xs={12} sm={1} md={1} />
<Grid item xs={12} sm={7} md={6}>
<Grid container className={classes.signupRight} direction='column'>
<Typography variant='h4' className={classes.textWhite} gutterBottom>Stay in touch!</Typography>
<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'>
<Typography variant='body2' className={classes.textSuccess} gutterBottom>Thank you for your interest! We'll keep you informed</Typography>
<Grid container className={classes.signupContainer} justify={width === 'xs' ? 'center' : 'flex-start'}>
<InputBase
id='footer-input'
placeholder='Enter your email'
classes={{
root: classes.footerInputRoot,
input: classes.footerInput
}}
/>
<Button id='email-submit' className={classes.footerInputSubmit}>Submit</Button>
</Grid>
</form>
</Grid>
<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}>
<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}>
<FontAwesomeIcon
icon={faFacebookF}
className={classNames(classes.icon, classes.iconHover)}
/>
</Link>
</Grid>
</Grid>
</Grid>
</footer>
)
}
}
}
Footer.propTypes = {
classes: PropTypes.object.isRequired,
width: PropTypes.string
}
const mapStateToProps = (state) => {
return {
context: state.context
}
}
const FooterWithStyles = withStyles(styles)(Footer)
export default connect(mapStateToProps)(withWidth()(FooterWithStyles))
+111
View File
@@ -0,0 +1,111 @@
import lightGreen from '@material-ui/core/colors/lightGreen'
const styles = theme => ({
textLight: {
color: theme.palette.primary.light
},
textWhite: {
color: theme.palette.common.white
},
textSuccess: {
color: lightGreen[400]
},
linkLight: {
color: theme.palette.secondary.main,
textDecoration: 'none'
},
descriptionLeft: {
marginLeft: theme.spacing.unit * 8,
[theme.breakpoints.down('sm')]: {
marginLeft: 0
},
[theme.breakpoints.down('xs')]: {
textAlign: 'center'
}
},
signupRight: {
marginTop: theme.spacing.unit * 2,
[theme.breakpoints.down('xs')]: {
textAlign: 'center'
}
},
signupContainer: {
marginBottom: theme.spacing.unit * 2,
[theme.breakpoints.down('xs')]: {
textAlign: 'center'
}
},
footer: {
borderTop: `4px solid ${theme.palette.secondary.light}`,
padding: `${theme.spacing.unit * 6}px 0`,
backgroundColor: '#19191C', /* #29292c */
color: theme.palette.primary.light
},
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'
}
},
footerLink: {
textDecoration: 'none',
'&:hover': {
color: theme.palette.secondary.light
}
},
footerInputRoot: {
'label + &': {
marginTop: theme.spacing.unit * 3
},
[theme.breakpoints.down('xs')]: {
textAlign: 'center'
}
},
footerInput: {
borderRadius: 4,
backgroundColor: theme.palette.common.white,
border: '1px solid #ced4da',
fontSize: 16,
padding: '10px 12px',
transition: theme.transitions.create(['border-color', 'box-shadow']),
marginRight: theme.spacing.unit * 1
},
footerInputSubmit: {
boxShadow: 'none',
textTransform: 'none',
fontSize: 16,
lineHeight: '1.1875em',
color: theme.palette.common.white,
padding: '10px 12px',
backgroundColor: '#5bc0de',
borderColor: '#46b8da',
'&:hover': {
backgroundColor: '#31b0d5',
borderColor: '#269abc'
},
'&:active': {
boxShadow: 'none',
backgroundColor: '#0062cc',
borderColor: '#005cbf'
},
'&:focus': {
boxShadow: '0 0 0 0.2rem rgba(0,123,255,.5)'
}
},
icon: {
margin: theme.spacing.unit * 1,
fontSize: 24
},
iconHover: {
margin: theme.spacing.unit * 1,
'&:hover': {
color: theme.palette.secondary.light
}
}
})
export default styles
@@ -0,0 +1,38 @@
import React from 'react'
import { Link } from 'react-router-dom'
import { isDefined } from '../../../utils/js-helpers'
export const LoggedIn = props => {
let { user, auth, openedMenu, toggleMenuOpen, closeAll } = props
let displayName = 'No Display Name'
if (isDefined(user.alias)) {
displayName = user.alias
}
if (isDefined(user.nickname)) {
displayName = user.nickname
}
if (isDefined(user.firstName)) {
displayName = user.firstName
}
if (isDefined(user.firstName) && isDefined(user.lastName)) {
displayName = user.firstName + ' ' + user.lastName
}
return (
<li className={openedMenu === 42 ? 'selected primaryLink hasChildren' : 'primaryLink hasChildren'}>
<Link to='/users/user' onClick={() => toggleMenuOpen(42)}> {displayName} </Link>
<ul className='subMenu'>
<li><Link to='/users/user' onClick={() => closeAll()}> Profile </Link></li>
<li><a href='#' onClick={() => auth.logout()}> Logout </a></li>
</ul>
</li>
)
}
export default LoggedIn
+55
View File
@@ -0,0 +1,55 @@
import {
Search,
GamepadRounded,
AccessibilityNew,
LibraryAdd
} from '@material-ui/icons'
const usersMenus = {
title: 'Users',
to: '/users',
submenus: [
{ title: 'Your profile', to: '/users/user', icon: Search },
{ title: 'Directory', to: '/users/browse', icon: GamepadRounded },
{ title: 'Search', to: '/users/search', icon: AccessibilityNew },
{ title: 'Report', to: '/report/users', icon: LibraryAdd }
]
}
const teamsMenus = {
title: 'Teams',
to: '/teams',
submenus: [
{ title: 'All teams', to: '/teams', icon: Search },
{ title: 'Your teams', to: '/teams/manage-teams', icon: GamepadRounded },
{ title: 'Team members', to: '/teams/team-members', icon: GamepadRounded },
{ title: 'Financial beings', to: '/teams/financial-beings', icon: GamepadRounded },
{ title: 'Report', to: '/report/teams', icon: LibraryAdd }
]
}
const eventsMenus = {
title: 'Events',
to: '/events',
submenus: [
{ title: 'All events', to: '/events', icon: Search },
{ title: 'Your events', to: '/events/my', icon: GamepadRounded },
{ title: 'Your hosted events', to: '/events/host', icon: AccessibilityNew },
{ title: 'Host an event', to: '/events/create', icon: LibraryAdd },
{ title: 'Report', to: '/report/events', icon: LibraryAdd }
]
}
const keyvaultMenus = {
title: 'Key Vault',
to: '/key-vault',
submenus: [
{ title: 'Manage keys', to: '/key-vault/browse', icon: Search },
{ title: 'Add key', to: '/key-vault/addKey', icon: GamepadRounded },
{ title: 'Report', to: '/report/key-vault', icon: LibraryAdd }
]
}
const allMenus = [ usersMenus, teamsMenus, eventsMenus, keyvaultMenus ]
export default allMenus
+135
View File
@@ -0,0 +1,135 @@
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import { Link } from 'react-router-dom'
import jwtDecode from 'jwt-decode'
// icons
import ExitIcon from '@material-ui/icons/ExitToApp'
// styles
import './styles.scss'
// components
import { LoggedIn } from './LoggedIn'
import allMenus from './imports'
import AALogo from '../../../assets/advanced-algos/aa-logo-dark.svg'
class Header extends Component {
constructor (props) {
super(props)
this.state = {
onTop: true,
mobileOpen: false,
openedMenu: null,
user: null
}
}
handleScroll () {
if (window.pageYOffset > 0) {
this.setState({ onTop: false })
} else {
this.setState({ onTop: true })
}
}
toggleMobileOpen () {
this.setState({ mobileOpen: !this.state.mobileOpen })
}
toggleMenuOpen (index) {
if (this.state.openedMenu === index) {
this.setState({ openedMenu: null })
} else {
this.setState({ openedMenu: index })
}
}
closeAll () {
this.setState({ openedMenu: null, mobileOpen: false })
}
componentDidMount () {
window.addEventListener('scroll', () => this.handleScroll())
const user = window.localStorage.getItem('user')
this.setState({ user })
}
componentWillUnmount () {
window.removeEventListener('scroll', () => this.handleScroll())
}
render () {
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) {
window.localStorage.clear()
window.location.reload()
}
}
let user = JSON.parse(this.state.user)
const menus = allMenus.map(({ to, title, submenus }, index) => {
return (
<li key={index} className={openedMenu === index ? 'primaryLink hasChildren selected' : 'primaryLink hasChildren'}>
<Link to={to} onClick={() => this.toggleMenuOpen(index)}> {title} </Link>
<ul className='subMenu'>
{
submenus.map(({ icon: Icon, to: subTo, title: subTitle }, subindex) => {
return (
<li key={subindex}><Link to={subTo} onClick={() => this.closeAll(index)}> <Icon /> {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 </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}
openedMenu={openedMenu}
toggleMenuOpen={(keyValue) => this.toggleMenuOpen(keyValue)}
closeAll={() => this.closeAll()}
/>
) : (
<li className='primaryLink'>
<a href='#' onClick={() => auth.login()}> Login / Sign Up </a>
</li>
)}
<li className='primaryLink'>
<a href='https://www.advancedalgos.net'> <ExitIcon /> </a>
</li>
</ul>
</nav>
</div>
</header>
)
}
}
Header.propTypes = {
auth: PropTypes.object.isRequired
}
export default Header
+267
View File
@@ -0,0 +1,267 @@
body{
overflow-y:scroll;
&::-webkit-scrollbar-track {
border: 1px solid #000;
padding: 2px 0;
background-color: #404040;
}
&::-webkit-scrollbar {
width: 10px;
}
&::-webkit-scrollbar-thumb {
border-radius: 10px;
box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: #737272;
border: 1px solid #000;
}
}
$break-big: 1300px;
$break-middle: 992px;
$break-small: 768px;
$break-extra-small: 532px;
$height-large-device: 131px;
$height-small-device: 220px;
$height-not-top: 87px;
$image-height-big: 75px;
$image-height-small: 45px;
$text-height: 25px;
$mobile-handle-height: 45px;
$transition-time: 0.3s;
$advanced-algos-red: rgb(245,88,88);
header.menu{
transition: $transition-time;
&.notOnTop{
background-color: rgba(0, 0, 0, 0.6);
border-bottom: 1px solid rgba(210, 217, 224, 0.5);
height: $height-not-top;
.container{
border-bottom: 0px;
img.logo{
margin-top: ( $height-not-top - $image-height-small ) / 2;
height: $image-height-small;
}
.mobileHandle{
margin-top: ( $height-not-top - $mobile-handle-height ) / 2 ;
margin-bottom: ( $height-not-top - $mobile-handle-height ) / 2 ;
}
nav.links{
@media screen and (min-width: $break-big) {
ul.primaryMenu{
li.primaryLink{
padding-top: ( $height-not-top - $text-height ) / 2;
padding-bottom: ( $height-not-top - $text-height ) / 2;
}
}
}
}
}
}
position: fixed;
height: $height-large-device;
width: 100vw;
z-index: 125;
@media screen and (max-width: $break-extra-small) {
height: $height-small-device;
}
.container{
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 ;
height: $image-height-big;
}
.mobileHandle.openedMobile{
&:before{
content: "";
position: absolute;
left: 16px;
top: 17px;
width: 1em;
height: 0.15em;
background: $advanced-algos-red;
box-shadow:
0 0.25em 0 0 $advanced-algos-red,
0 0.5em 0 0 $advanced-algos-red;
}
}
.mobileHandle:not(.openedMobile){
&:before{
content: "";
position: absolute;
left: 16px;
top: 17px;
width: 1em;
height: 0.15em;
background: rgba(210, 217, 224, 0.9);
box-shadow:
0 0.25em 0 0 rgba(210, 217, 224, 0.9),
0 0.5em 0 0 rgba(210, 217, 224, 0.9);
}
}
.mobileHandle{
&.openedMobile{
color: $advanced-algos-red;
border: 1px solid $advanced-algos-red;
}
transition: $transition-time;
display: block;
height: $mobile-handle-height;
line-height: $mobile-handle-height;
border: 1px solid rgba(210, 217, 224, 0.5);
text-transform: uppercase;
color: rgba(210, 217, 224, 0.9);
text-align: center;
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-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) {
display: none;
}
}
nav.links{
@media screen and (max-width: $break-big) {
display: none;
&.openedMobile{
display: block;
}
ul.primaryMenu{
padding-left: 20px;
padding-right: 20px;
background-color: rgba(0, 0, 0, 0.6);
font-family: 'Saira';
font-size: 12px;
font-weight: 700;
line-height: $text-height;
text-transform: uppercase;
list-style: none;
li.primaryLink{
min-width: 240px;
min-height: 50px;
border-bottom: 1px solid white;
&:last-child{
border-bottom: 0;
}
a{
text-transform: uppercase;
display: block;
font-size: 13px;
height: 50px;
line-height: 50px;
font-weight: 700;
letter-spacing: 1px;
padding: 0 40px 0 30px;
text-decoration: none;
color: white;
}
ul.subMenu{
display: none;
list-style: none;
}
&.selected{
ul.subMenu{
display: block;
}
}
}
}
}
@media screen and (min-width: $break-big) {
display: block;
float: right;
ul.primaryMenu{
margin: 0 4px 0 0;
list-style: none;
font-family: 'Saira';
font-size: 12px;
font-weight: 700;
line-height: $text-height;
text-transform: uppercase;
li.primaryLink{
transition: $transition-time;
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;
a{
color: white;
text-decoration: none;
&.selected{
color: $advanced-algos-red;
}
}
ul.subMenu{
display: none;
position: absolute;
top: 100%;
left: 0;
padding: 18px 30px;
list-style: none;
font-family: 'Saira';
font-size: 12px;
font-weight: 300;
line-height: $text-height;
min-width: 240px;
background-color: rgba(0, 0, 0, 0.6);
li{
height: 30px;
}
}
&.selected{
&>a{
color: $advanced-algos-red;
}
ul.subMenu{
display: block;
}
}
}
}
}
}
}
}
+23
View File
@@ -0,0 +1,23 @@
import React from 'react'
import { withStyles } from '@material-ui/core/styles'
import Footer from './footer'
import Header from './header'
// styles
import styles from './styles'
class Index extends React.Component {
render () {
return (
<div className={this.props.classes.layout}>
<Header auth={this.props.auth} />
<div>
{this.props.children}
</div>
<Footer />
</div>
)
}
}
export default withStyles(styles)(Index)
+10
View File
@@ -0,0 +1,10 @@
const styles = theme => ({
layout: {
display: 'flex',
flexDirection: 'column',
justifyContent: 'space-between',
minHeight: 'calc(100vh)'
}
})
export default styles
+20 -14
View File
@@ -1,16 +1,14 @@
# Contributing
We are thrilled you are interested in contributing to this repository. Your help may be essential to the project's success and we want you in!
We are thrilled you are interested in contributing to the this module. Your help may be essential to the project's success and we want you in!
Advanced Algos LTD is a startup, currently at a very early stage. Although this repository is not open source software yet, we do welcome contributions from the community.
Advanced Algos LTD is a startup, currently at a very early stage. Although this module is not open source software yet, we do welcome contributions from the community.
Contributions are deemed _voluntary work_. There might be incentives in place for certain kinds of contributions. Contact us for more information in this regards.
In any case, contributors agree to provide an express grant of patent rights for their contributions. Submitting Pull Requests to this repository represents an express agreement with the terms of our Balanced Contributor Intellectual Property Agreement. This agreement is a direct implementation of GitHub's [Balanced Employee Intellectual Property Agreement 1.0.1](https://github.com/github/balanced-employee-ip-agreement/blob/master/Balanced_Employee_IP_Agreement.md).
Contributions are deemed _work for hire_ and --as such-- are compensated on a case by case basis, with ALGO tokens. Contributors agree to provide an express grant of patent rights for their contributions. Our Balanced Contributor Intellectual Property Agreement is a direct implementation of GitHub's [Balanced Employee Intellectual Property Agreement 1.0.1](https://github.com/github/balanced-employee-ip-agreement/blob/master/Balanced_Employee_IP_Agreement.md).
# Balanced Contributor Intellectual Property Agreement 1.0.1
This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person or team submitting Pull Requests to this repository and Advanced Algos LTD ("Company").
This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person named below and Advanced Algos ("Company").
**What is this?** This is the Company's Intellectual Property Agreement ("Agreement"). If you've worked in the technology space before, there's a good chance that you've run across one or more of these in the past. This document is the official, entire and exclusive agreement on what intellectual property ("IP") is yours, and what belongs to the Company.
@@ -18,28 +16,36 @@ This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person or t
The Company also believes that it's important to be clear on what it doesn't own. The Company doesn't want you looking over your shoulder every time you work on something personal or worrying that the Company will someday seize your open source non-lethal mousetrap simulation software. In other words, the Company isn't interested in appropriating your personal projects.
**Read this.** Please read this document and be sure you understand it before you submit any Pull Requests. Due to legal risk and corporate obligations, the Company cannot, by and large, negotiate its terms. If you feel you have a particular circumstance that keeps you from signing, please let the Company's legal department ("Legal") know. And, of course, you're always free and encouraged to get your own legal counsel to explain anything you're not clear on.
**Read this.** Please read this document and be sure you understand it before you sign it. Due to legal risk and corporate obligations, the Company cannot, by and large, negotiate its terms. If you feel you have a particular circumstance that keeps you from signing, please let the Company's legal department ("Legal") know. And, of course, you're always free and encouraged to get your own legal counsel to explain anything you're not clear on.
Cool? Then, by submitting your first Pull Request, and as a condition of your contribution, you agree to the following:
Cool? Then, by signing this Agreement, and as a condition of your contribution, you agree to the following:
1. **What the Company owns.** The Company owns any IP ("Company IP") that you create, or help create _as its contributor_, but only if it meets one or more of these additional conditions: The IP was (i) related to an existing or prospective Company product or service at the time you developed, invented, or created it, (ii) developed for use by the Company, or (iii) developed or promoted with existing Company IP or with the Company's endorsement. You hereby grant and assign, and will grant and assign, to the Company all rights and interests in all Company IP.
1. **What the Company owns.** The Company owns any IP ("Company IP") that you create, or help create _as its contributor or contractor_, but only if it meets one or more of these additional conditions: The IP was (i) related to an existing or prospective Company product or service at the time you developed, invented, or created it, (ii) developed for use by the Company, or (iii) developed or promoted with existing Company IP or with the Company's endorsement. You hereby grant and assign, and will grant and assign, to the Company all rights and interests in all Company IP.
"Company IP" includes concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, and works of authorship.
2. **What the Company doesn't own.** If you create IP that doesn't fit into one of the categories listed above, the Company doesn't own it. In other words, the Company doesn't own concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, or works of authorship that you develop, invent, or create that do not meet any of the conditions in Section 1.
2. **What the Company doesn't own.** If you create IP that doesn't fit into one of the categories listed above, the Company doesn't own it. In other words, the Company doesn't own concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, or works of authorship that you develop, invent, or create that do not meet any of the conditions in Section 1. This is true regardless of the computer you use to develop your IP, including the one furnished to you by the Company.
3. **Contribution of your IP to Company projects.** If you include your own IP – such as IP you created prior to working for the Company – into a Company product or service, it's still yours, of course, but you grant the Company a non-exclusive, irrevocable, fully paid-up, royalty-free, perpetual, sublicensable, transferable, worldwide license to use it without restriction in any way or implementation, in modified form, or as is, by itself, or incorporated into another product or service ("License"). If you include your name in any project over which the Company would have rights under this Agreement, such as in a copyright notice or a comment in code or documentation, then the License covers the rights associated with that use of your name as well.
3. **Contribution of your IP to Company projects.** If you include your own IP – such as IP you created prior to working for the Company – into a Company product or service, it's still yours, of course, but you grant the Company a non-exclusive, irrevocable, fully paid-up, royalty-free, perpetual, sublicensable, transferable, worldwide license to use it without restriction in any way or implementation, in modified form, or as is, by itself, or incorporated into another product or service ("License"). If you include your name in any project over which the Company would have rights under this Agreement, such as in a copyright notice or a comment in code or documentation, then the License covers the rights associated with that use of your name as well.
4. **Your contributions to non-Company projects.** The Company recognizes that you may be engaged in work that requires you to submit IP to entities other than the Company, such as open source projects used by the Company. Please make sure that Legal is aware of what you're working on so that Legal can help with any licensing issues. If any project asks you to sign a contribution agreement, you should check with Legal before doing so. These agreements may be legally binding on the Company and so should be run through Legal first.
5. **Voluntary Works** All Company IP that you are involved with or create as part of your work for the Company is voluntary work which does not require compensation. There might be incentives in place for certain kinds of contributions. Feel free to contact the Company to learn more.
5. **Works made for hire.** All Company IP that you are involved with or create as part of your work for the Company is [work made for hire](http://www.copyright.gov/circs/circ09.pdf) under copyright law and compensated by your regular salary or pay.
6. **No conflicts.** You agree that you don't have any outstanding agreements or obligations that conflict with those in this Agreement, and that you won't enter into conflicting agreements in the future.
7. **IP protection.** The Company might someday need to show the work that went into the development of IP that it uses or has used, or to make government filings to establish that it owns the IP or has rights over it. To help in those situations, you agree not to destroy any records you maintain relating to the development of any Company IP or IP under License (together, "All IP"), and, if the Company asks, to provide those records to the Company. You agree to help the Company secure and defend its rights in All IP. For your help the Company will compensate you at a reasonable rate. If the Company is unable to secure your help, you authorize the Company to act on your behalf (as your agent and attorney-in-fact) in securing all rights related to All IP.
7. **IP protection.** The Company might someday need to show the work that went into the development of IP that it uses or has used, or to make government filings to establish that it owns the IP or has rights over it. To help in those situations, you agree not to destroy any records you maintain relating to the development of any Company IP or IP under License (together, "All IP"), and, if the Company asks, to provide those records to the Company. You agree to help the Company secure and defend its rights in All IP, including after you leave the Company. For your help the Company will compensate you at a reasonable rate. If the Company is unable to secure your help, you authorize the Company to act on your behalf (as your agent and attorney-in-fact) in securing all rights related to All IP.
8. **Confidentiality.** As an contributor or contractor of the Company, you will have access to sensitive confidential information that is important to the Company's business. You are responsible for keeping this information confidential, including after you end your work for the Company.
"Confidential Information" includes non-public technical details about our products or services, financial information, business strategies and forecasts, customer data, or any other information, data or know-how that is valuable to the Company because it is not publicly known.
The Company's Confidential Information is sensitive and we expect that you'll treat it as such. You agree to only use the Company's Confidential Information for the purpose of performing your contribution and for the benefit of the Company. You will do your best to keep Confidential Information secret. If you are not sure if something is Confidential Information, you should assume that it is, until you can confirm otherwise.
The Company's Confidential Information is sensitive and we expect that you'll treat it as such. You agree to only use the Company's Confidential Information for the purpose of performing your job and for the benefit of the Company. You will do your best to keep Confidential Information secret. If you are not sure if something is Confidential Information, you should assume that it is, until you can confirm otherwise.
Print Name: _____________
Sign: ________________
Date: ________________
+8 -7
View File
@@ -1,4 +1,4 @@
COPYRIGHT NOTICE
COPYRIGHT NOTICE
© Copyright 2018 Advanced Algos LTD.
@@ -7,7 +7,7 @@ LICENSE NOTICE
Advanced Algos LTD. is a startup, currently at a very early stage. Because certain aspects of
the business are still not clearly defined, we have chosen to --temporarily-- grant a
restrictive license for the use of this repository, until those business aspects are clarified
restrictive license for the use of this module, until those business aspects are clarified
and a proper open source license can be granted.
Advanced Algos LTD. is publishing the code of this software for several reasons. However,
@@ -20,9 +20,9 @@ The reasons for opening up the code of this module at this stage are the followi
to be able to understand what this module does and how. Opening up the code of this module
allows anyone to take a close look.
* We welcome contributions from the community. Contributions are regarded as voluntary work.
There may be incentives in place for certain kinds of contributions. Contact us to learn more.
Contributors agree to provide an express grant of patent rights for their contributions.
* We welcome contributions from the community. Contributions may be compensated on a case
by case basis with ALGO tokens. Contributors agree to provide an express grant of patent
rights for their contributions.
LICENSE WORDING
@@ -32,11 +32,12 @@ Advanced Algos LTD. grants a limited license for the following uses:
1. CODE REVIEW AND AUDITS. You are granted permission to clone this repository to analyze,
review or audit the code.
2. COLLABORATING WITH ADVANCED ALGOS LTD. You are granted permission to fork this repository
2. COLLABORATING WITH ADVANCED ALGOS LTD. You are granted permission to fork the this repository
with the sole purpose of correcting bugs and developing functionality in agreement with
Advanced Algos LTD. By contributing to this repository you explicitely agree to the terms
detailed in CONTRIBUTING.MD.
PLEASE SEE CONTRIBUTING.MD FOR MORE DETAILS ON THE IMPLICATIONS SURROUNDING YOUR CONTRIBUTIONS TO THIS REPOSITORY.
PLEASE SEE CONTRIBUTING.MD FOR MORE DETAILS ON THE IMPLICATIONS SURROUNDING YOUR CONTRIBUTIONS
TO THIS REPOSITORY.
+1129 -1129
View File
File diff suppressed because it is too large. Load diff
+4 -4
View File
@@ -12,12 +12,12 @@ export const resolver = (usersSchema, teamsSchema) => ({
events_Event: {
host: {
fragment: `fragment UserFragment on events_Event{hostId}`,
resolve (parent, args, context, info) {
resolve ({hostId : id}, args, context, info) {
return info.mergeInfo.delegateToSchema({
schema: usersSchema,
operation: 'query',
fieldName: 'users_User',
args: { id: parent.hostId },
args: { id },
context,
info
})
@@ -27,12 +27,12 @@ export const resolver = (usersSchema, teamsSchema) => ({
events_Participant: {
team: {
fragment: `fragment TeamFragment on events_Participant{teamId}`,
resolve (parent, args, context, info) {
resolve ({teamId}, args, context, info) {
return info.mergeInfo.delegateToSchema({
schema: teamsSchema,
operation: 'query',
fieldName: 'teams_TeamById',
args: { teamId: parent.teamId },
args: { teamId },
context,
info
})
+3 -4
View File
@@ -9,13 +9,12 @@ export const resolver = (usersSchema) => ({
teams_Team: {
ownerUser: {
fragment: `fragment UserFragment on teams_Team{owner}`,
resolve (parent, args, context, info) {
const authId = parent.owner
resolve ({owner: id}, args, context, info) {
return info.mergeInfo.delegateToSchema({
schema: usersSchema,
operation: 'query',
fieldName: 'users_UserByAuthId',
args: { authId },
fieldName: 'users_User',
args: { id },
context,
info
})