Move to user position

This commit is contained in:
Luis Fernando Molina committed 2019-04-11 00:42:48 +02:00
1 parent a6e22aaf9c
commit f3ccf2f186
4 files changed
+332 -312

No files matched your search

-1
View File
@@ -65,7 +65,6 @@ function newContainer () {
if (dimmensionsChanged) {
thisObject.eventHandler.raiseEvent('Dimmensions Changed', event)
console.log(thisObject.name + ' new width = ' + thisObject.frame.width)
}
}
}
+1 -1
View File
@@ -14,7 +14,7 @@ function newTimeScale () {
thisObject.container = container
thisObject.container.frame.width = viewPort.visibleArea.bottomRight.x - viewPort.visibleArea.topLeft.x
thisObject.container.frame.height = 50
thisObject.container.frame.height = 100
container.frame.position.x = viewPort.visibleArea.bottomRight.x
container.frame.position.y = TOP_SPACE_HEIGHT
+315 -305
View File
@@ -1,5 +1,11 @@
function newLogin () {
const MODULE_NAME = 'Login'
const INFO_LOG = false
const INTENSIVE_LOG = false
const ERROR_LOG = true
const logger = newWebDebugLog()
let thisObject = {
container: undefined,
draw: draw,
@@ -27,337 +33,341 @@ function newLogin () {
return thisObject
async function initialize (pSharedStatus) {
const accessToken = window.localStorage.getItem('access_token')
let user = window.localStorage.getItem('user')
try {
const accessToken = window.localStorage.getItem('access_token')
let user = window.localStorage.getItem('user')
sharedStatus = pSharedStatus
sharedStatus = pSharedStatus
if (user === null) {
// if there is no user that means that we are logged off, which means it is time to clean the local storage of things from the last log in.
if (user === null) {
// if there is no user that means that we are logged off, which means it is time to clean the local storage of things from the last log in.
window.localStorage.removeItem('loggedInUser')
window.localStorage.removeItem('sessionToken')
return
}
window.localStorage.removeItem('loggedInUser')
window.localStorage.removeItem('sessionToken')
return
}
user = JSON.parse(user)
user = JSON.parse(user)
const authId = user.authId
const authId = user.authId
let sessionToken
let sessionToken
const apolloClient = new Apollo.lib.ApolloClient({
networkInterface: Apollo.lib.createNetworkInterface({
uri: window.canvasApp.graphQL.masterAppApiUrl,
transportBatching: true
}),
connectToDevTools: true
})
const apolloClient = new Apollo.lib.ApolloClient({
networkInterface: Apollo.lib.createNetworkInterface({
uri: window.canvasApp.graphQL.masterAppApiUrl,
transportBatching: true
}),
connectToDevTools: true
})
const USERS_QUERY = Apollo.gql`
query($authId: String){
users_UserByAuthId (authId: $authId){
id
referrerId
alias
firstName
middleName
lastName
bio
email
emailVerified
isDeveloper
isDataAnalyst
isTrader
avatarHandle
avatarChangeDate
sessionToken
role {
id
}
}
const USERS_QUERY = Apollo.gql`
query($authId: String){
users_UserByAuthId (authId: $authId){
id
referrerId
alias
firstName
middleName
lastName
bio
email
emailVerified
isDeveloper
isDataAnalyst
isTrader
avatarHandle
avatarChangeDate
sessionToken
role {
id
}
}
}
`
const getUser = () => {
return new Promise((resolve, reject) => {
apolloClient.query({
query: USERS_QUERY,
variables: {
authId: authId
}
`
const getUser = () => {
return new Promise((resolve, reject) => {
apolloClient.query({
query: USERS_QUERY,
variables: {
authId: authId
})
.then(response => {
sessionToken = response.data.users_UserByAuthId.sessionToken
window.localStorage.setItem('loggedInUser', JSON.stringify(response.data.users_UserByAuthId))
resolve({ user: response.data.users_UserByAuthId})
})
.catch(error => {
console.log('apolloClient error getting user query', error)
reject(error)
})
})
}
/* Getting all Teams */
const networkInterfaceTeams = Apollo.lib.createNetworkInterface({
uri: window.canvasApp.graphQL.masterAppApiUrl
})
networkInterfaceTeams.use([{
applyMiddleware (req, next) {
req.options.headers = {
authorization: `Bearer ${accessToken}`
}
})
.then(response => {
sessionToken = response.data.users_UserByAuthId.sessionToken
window.localStorage.setItem('loggedInUser', JSON.stringify(response.data.users_UserByAuthId))
resolve({ user: response.data.users_UserByAuthId})
})
.catch(error => {
console.log('apolloClient error getting user query', error)
reject(error)
})
})
}
/* Getting all Teams */
const networkInterfaceTeams = Apollo.lib.createNetworkInterface({
uri: window.canvasApp.graphQL.masterAppApiUrl
})
networkInterfaceTeams.use([{
applyMiddleware (req, next) {
req.options.headers = {
authorization: `Bearer ${accessToken}`
next()
}
next()
}
}])
}])
const apolloClientTeams = new Apollo.lib.ApolloClient({
networkInterface: networkInterfaceTeams,
connectToDevTools: true
})
const TEAM_BY_OWNER_QUERY = Apollo.gql`
query teamsByOwnerQuery {
teams_TeamsByOwner {
id
name
slug
profile {
avatar
banner
description
motto
updatedAt
}
members {
member {
alias
}
}
fb {
id
name
slug
avatar
kind
status {
status
reason
createdAt
}
}
}
}
`
const getTeamByOwner = () => {
return new Promise((resolve, reject) => {
apolloClientTeams.query({
query: TEAM_BY_OWNER_QUERY
})
.then(response => {
window.localStorage.setItem('userTeams', JSON.stringify(response.data.teams_TeamsByOwner))
resolve({ teams: response.data.teams_TeamsByOwner})
})
.catch(error => {
console.log('apolloClient error getting user teams', error)
reject(error)
})
const apolloClientTeams = new Apollo.lib.ApolloClient({
networkInterface: networkInterfaceTeams,
connectToDevTools: true
})
}
/* Gettings All Events */
const networkInterfaceEvents = Apollo.lib.createNetworkInterface({
uri: window.canvasApp.graphQL.masterAppApiUrl
})
const apolloClientEvents = new Apollo.lib.ApolloClient({
networkInterface: networkInterfaceEvents,
connectToDevTools: true,
addTypename: false
})
const EVENTS_QUERY = Apollo.gql`
query events($maxStartDate: Int, $minEndDate: Int){
events_Events(maxStartDate: $maxStartDate, minEndDate: $minEndDate){
id
title
startDatetime
endDatetime
participants{
clone{
id
team{
slug
}
bot{
slug
}
}
}
}
}
`
const getCurrentEvents = () => {
var d = new Date()
var nowSeconds = Math.round(d.getTime() / 1000)
var twoWeeksAgoSeconds = nowSeconds - 1209600
return new Promise((resolve, reject) => {
apolloClientEvents.query({
query: EVENTS_QUERY,
variables: { maxStartDate: nowSeconds, minEndDate: twoWeeksAgoSeconds }
})
.then(response => {
window.localStorage.setItem('currentEvents', JSON.stringify(response.data.events_Events))
currentEvent = window.localStorage.getItem('currentEventObject')
if (currentEvent === null || currentEvent === '[]' || currentEvent === '') {
sharedStatus.currentEventIndex = -1
} else {
currentEvent = JSON.parse(currentEvent)
sharedStatus.currentEventIndex = response.data.events_Events.findIndex(function (element) {
return element.id == currentEvent.id
})
const TEAM_BY_OWNER_QUERY = Apollo.gql`
query teamsByOwnerQuery {
teams_TeamsByOwner {
id
name
slug
profile {
avatar
banner
description
motto
updatedAt
}
members {
member {
alias
}
}
fb {
id
name
slug
avatar
kind
status {
status
reason
createdAt
}
}
}
}
resolve({ currentEvents: response.data.events_Events})
})
.catch(error => {
console.log('apolloClient error getting current events', error)
reject(error)
})
})
}
`
/* Getting all Clones */
const networkInterfaceClones = Apollo.lib.createNetworkInterface({
uri: window.canvasApp.graphQL.masterAppApiUrl
})
networkInterfaceClones.use([{
applyMiddleware (req, next) {
req.options.headers = {
authorization: `Bearer ${accessToken}`
}
next()
const getTeamByOwner = () => {
return new Promise((resolve, reject) => {
apolloClientTeams.query({
query: TEAM_BY_OWNER_QUERY
})
.then(response => {
window.localStorage.setItem('userTeams', JSON.stringify(response.data.teams_TeamsByOwner))
resolve({ teams: response.data.teams_TeamsByOwner})
})
.catch(error => {
console.log('apolloClient error getting user teams', error)
reject(error)
})
})
}
}])
const apolloClientClones = new Apollo.lib.ApolloClient({
networkInterface: networkInterfaceClones,
connectToDevTools: true
})
/* Gettings All Events */
const CLONES_QUERY = Apollo.gql`
query Operations_Clones{
operations_Clones {
const networkInterfaceEvents = Apollo.lib.createNetworkInterface({
uri: window.canvasApp.graphQL.masterAppApiUrl
})
const apolloClientEvents = new Apollo.lib.ApolloClient({
networkInterface: networkInterfaceEvents,
connectToDevTools: true,
addTypename: false
})
const EVENTS_QUERY = Apollo.gql`
query events($maxStartDate: Int, $minEndDate: Int){
events_Events(maxStartDate: $maxStartDate, minEndDate: $minEndDate){
id
authId
teamId
botId
mode
resumeExecution
beginDatetime
title
startDatetime
endDatetime
waitTime
state
stateDatetime
createDatetime
lastLogs
runAsTeam
summaryDate
buyAverage
sellAverage
marketRate
combinedProfitsA
combinedProfitsB
assetA
assetB
botType
teamName
botName
botAvatar
teamAvatar
processName
keyId
botSlug
participants{
clone{
id
team{
slug
}
bot{
slug
}
}
}
}
`
const getClones = () => {
return new Promise((resolve, reject) => {
apolloClientClones.query({
query: CLONES_QUERY
})
.then(response => {
window.localStorage.setItem('userClones', JSON.stringify(response.data.operations_Clones))
let clones = response.data.operations_Clones
for (let i = 0; i < clones.length; i++) {
let clone = clones[i]
if (clone.botType === 'Trading') {
let teamSlug = clone.teamName.toLowerCase()
teamSlug = teamSlug.replace(' ', '-')
let devTeam = ecosystem.getTeam(teamSlug)
let bot = ecosystem.getBot(devTeam, clone.botSlug)
if (bot !== undefined) {
bot.cloneId = clone.id
}
}
}
}
`
resolve({ clones: response.data.operations_Clones})
})
.catch(error => {
console.log('apolloClient error getting user clones', error)
reject(error)
})
})
}
// To avoid race conditions, add asynchronous fetches to array
let fetchDataPromises = []
fetchDataPromises.push(getUser(), getTeamByOwner(), getCurrentEvents(), getClones(), authenticateUser())
// When all asynchronous fetches resolve, authenticate user or throw error.
await Promise.all(fetchDataPromises).then(result => {
}, err => {
console.error('[ERROR] Login -> GraphQL Fetch Error -> err = ', err)
})
thisObject.container.eventHandler.listenToEvent('onMouseClick', onClick)
async function authenticateUser () {
if (sessionToken === undefined) { sessionToken = '' }
let path = window.canvasApp.urlPrefix + 'AABrowserAPI/authenticateUser/' + sessionToken
return new Promise(
function (resolve, reject) {
callServer(undefined, path, (result) => {
let responseFromServer = JSON.parse(result)
err = responseFromServer.err
if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
console.log('Please make sure you create a new team!')
reject(err)
}
window.USER_PROFILE = responseFromServer.userProfile
window.localStorage.setItem('sessionToken', sessionToken)
currentLabel = 'Logged In'
resolve()
const getCurrentEvents = () => {
var d = new Date()
var nowSeconds = Math.round(d.getTime() / 1000)
var twoWeeksAgoSeconds = nowSeconds - 1209600
return new Promise((resolve, reject) => {
apolloClientEvents.query({
query: EVENTS_QUERY,
variables: { maxStartDate: nowSeconds, minEndDate: twoWeeksAgoSeconds }
})
.then(response => {
window.localStorage.setItem('currentEvents', JSON.stringify(response.data.events_Events))
currentEvent = window.localStorage.getItem('currentEventObject')
if (currentEvent === null || currentEvent === '[]' || currentEvent === '') {
sharedStatus.currentEventIndex = -1
} else {
currentEvent = JSON.parse(currentEvent)
sharedStatus.currentEventIndex = response.data.events_Events.findIndex(function (element) {
return element.id == currentEvent.id
})
}
)
resolve({ currentEvents: response.data.events_Events})
})
.catch(error => {
console.log('apolloClient error getting current events', error)
reject(error)
})
})
}
/* Getting all Clones */
const networkInterfaceClones = Apollo.lib.createNetworkInterface({
uri: window.canvasApp.graphQL.masterAppApiUrl
})
networkInterfaceClones.use([{
applyMiddleware (req, next) {
req.options.headers = {
authorization: `Bearer ${accessToken}`
}
next()
}
}])
const apolloClientClones = new Apollo.lib.ApolloClient({
networkInterface: networkInterfaceClones,
connectToDevTools: true
})
const CLONES_QUERY = Apollo.gql`
query Operations_Clones{
operations_Clones {
id
authId
teamId
botId
mode
resumeExecution
beginDatetime
endDatetime
waitTime
state
stateDatetime
createDatetime
lastLogs
runAsTeam
summaryDate
buyAverage
sellAverage
marketRate
combinedProfitsA
combinedProfitsB
assetA
assetB
botType
teamName
botName
botAvatar
teamAvatar
processName
keyId
botSlug
}
}
`
const getClones = () => {
return new Promise((resolve, reject) => {
apolloClientClones.query({
query: CLONES_QUERY
})
.then(response => {
window.localStorage.setItem('userClones', JSON.stringify(response.data.operations_Clones))
let clones = response.data.operations_Clones
for (let i = 0; i < clones.length; i++) {
let clone = clones[i]
if (clone.botType === 'Trading') {
let teamSlug = clone.teamName.toLowerCase()
teamSlug = teamSlug.replace(' ', '-')
let devTeam = ecosystem.getTeam(teamSlug)
let bot = ecosystem.getBot(devTeam, clone.botSlug)
if (bot !== undefined) {
bot.cloneId = clone.id
}
}
}
resolve({ clones: response.data.operations_Clones})
})
.catch(error => {
console.log('apolloClient error getting user clones', error)
reject(error)
})
})
}
// To avoid race conditions, add asynchronous fetches to array
let fetchDataPromises = []
fetchDataPromises.push(getUser(), getTeamByOwner(), getCurrentEvents(), getClones(), authenticateUser())
// When all asynchronous fetches resolve, authenticate user or throw error.
await Promise.all(fetchDataPromises).then(result => {
}, err => {
console.error('[ERROR] Login -> GraphQL Fetch Error -> err = ', err)
})
thisObject.container.eventHandler.listenToEvent('onMouseClick', onClick)
async function authenticateUser () {
if (sessionToken === undefined) { sessionToken = '' }
let path = window.canvasApp.urlPrefix + 'AABrowserAPI/authenticateUser/' + sessionToken
return new Promise(
function (resolve, reject) {
callServer(undefined, path, (result) => {
let responseFromServer = JSON.parse(result)
err = responseFromServer.err
if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
console.log('Please make sure you create a new team!')
reject(err)
}
window.USER_PROFILE = responseFromServer.userProfile
window.localStorage.setItem('sessionToken', sessionToken)
currentLabel = 'Logged In'
resolve()
})
}
)
}
} catch (err) {
if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err.stack) }
}
}
+16 -5
View File
@@ -75,7 +75,7 @@ function saveUserPosition (container, timeLineCoordinateSystem) {
window.localStorage.setItem('userPosition', JSON.stringify(userPosition))
}
function moveToUserPosition (container, timeLineCoordinateSystem) {
function getUserPosition () {
let savedPosition = window.localStorage.getItem('userPosition')
let userPosition
@@ -90,11 +90,17 @@ function moveToUserPosition (container, timeLineCoordinateSystem) {
userPosition = JSON.parse(savedPosition)
}
let centerPoint = {
x: (viewPort.visibleArea.bottomRight.x - viewPort.visibleArea.topLeft.x) / 2,
y: (viewPort.visibleArea.bottomRight.y - viewPort.visibleArea.topLeft.y) / 2
userPosition.point = {
x: (new Date(userPosition.date)).valueOf(),
y: userPosition.rate
}
return userPosition
}
function moveToUserPosition (container, timeLineCoordinateSystem) {
let userPosition = getUserPosition()
viewPort.newZoomLevel(userPosition.zoom)
INITIAL_TIME_PERIOD = recalculatePeriod(userPosition.zoom)
INITIAL_DATE = new Date(userPosition.date)
@@ -104,11 +110,16 @@ function moveToUserPosition (container, timeLineCoordinateSystem) {
y: userPosition.rate
}
/* Put this point in the coordinate system of the viewPort */
/* Put this po int in the coordinate system of the viewPort */
targetPoint = timeLineCoordinateSystem.transformThisPoint(targetPoint)
targetPoint = transformThisPoint(targetPoint, container)
let centerPoint = {
x: (viewPort.visibleArea.bottomRight.x - viewPort.visibleArea.topLeft.x) / 2,
y: (viewPort.visibleArea.bottomRight.y - viewPort.visibleArea.topLeft.y) / 2
}
/* Lets calculate the displace vector, from the point we want at the center, to the current center. */
let displaceVector = {