From 7dea1b06180925dc76de18e4879d086542f459bf Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 3 Mar 2018 15:40:23 +0100 Subject: [PATCH] First Part Retrieving loading from file cursors --- .vs/AAWebPlatform/v15/.suo | Bin 89600 -> 74752 bytes FileCursor.js | 4 ++-- FileCursorCache.js | 29 +++++++++++++++++++++-------- ProductCard.js | 15 ++++++++++++++- TimelineChart.js | 21 +++++++++++++++++++++ server.js | 2 +- 6 files changed, 59 insertions(+), 12 deletions(-) diff --git a/.vs/AAWebPlatform/v15/.suo b/.vs/AAWebPlatform/v15/.suo index b594dc182544394f854ea746c2d77c37ed9e295f..397fec305de8074223b0e57de2e98897a77a7031 100644 GIT binary patch delta 5221 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 GBk*5rx2FUE delta 8699 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 Qd&Bv=jcduOWBpG0PbRMn6#xJL diff --git a/FileCursor.js b/FileCursor.js index e40ebe367..5fa883888 100644 --- a/FileCursor.js +++ b/FileCursor.js @@ -240,13 +240,13 @@ function newFileCursor() { - function setDatetime(datetime) { + function setDatetime(datetime, callBackFunction) { if (datetime === undefined) { return; } cursorDate = datetime; - getFiles(); + getFiles(callBackFunction); collectGarbage(); } diff --git a/FileCursorCache.js b/FileCursorCache.js index 626616eef..d7e908eb3 100644 --- a/FileCursorCache.js +++ b/FileCursorCache.js @@ -18,10 +18,14 @@ function newFileCursorCache() { let marketFiles = new Map; let fileCursors = new Map; + let callBackWhenFileReceived; + return fileCursorCache; function initialize(pDevTeam, pBot, pProduct, pSet, pExchange, pMarket, pDatetime, pTimePeriod, callBackFunction) { + callBackWhenFileReceived = callBackFunction; + let exchange = ecosystem.getExchange(pProduct, pExchange); if (exchange === undefined) { @@ -49,16 +53,19 @@ function newFileCursorCache() { expectedFiles = expectedFiles + fileCursor.getExpectedFiles(); - function onFileReceived() { - - filesLoaded++; - callBackFunction(); // Note that the call back is called for every file loaded at each cursor. - - } } } } + function onFileReceived() { + + console.log("FileCursorCache -> onFileReceived") + + filesLoaded++; + callBackWhenFileReceived(); // Note that the call back is called for every file loaded at each cursor. + + } + function getFileCursor(pPeriod) { return fileCursors.get(pPeriod); @@ -67,13 +74,19 @@ function newFileCursorCache() { function setDatetime(pDatetime) { + filesLoaded = 0; + expectedFiles = 0; + fileCursors.forEach(setDatetimeToEach) - function setDatetimeToEach(value, key, map) { + function setDatetimeToEach(fileCursor, key, map) { - value.setDatetime(pDatetime); + fileCursor.setDatetime(pDatetime, onFileReceived); + expectedFiles = expectedFiles + fileCursor.getExpectedFiles(); } + + console.log("FileCursorCache -> setDatetime -> expectedFiles = " + expectedFiles) } function setTimePeriod(pTimePeriod) { diff --git a/ProductCard.js b/ProductCard.js index 6b73e15d5..ea23d9d35 100644 --- a/ProductCard.js +++ b/ProductCard.js @@ -1,6 +1,6 @@ function newProductCard() { - const CONSOLE_LOG = false; + const CONSOLE_LOG = true; var thisObject = { container: undefined, @@ -13,6 +13,7 @@ onMarketFileLoaded: onMarketFileLoaded, onDailyFileLoaded: onDailyFileLoaded, onSingleFileLoaded: onSingleFileLoaded, + onDayChanged: onDayChanged, getContainer: getContainer, // returns the inner most container that holds the point received by parameter. initialize: initialize }; @@ -116,6 +117,18 @@ } + function onDayChanged() { + + dailyFileProgressBar.animatedValue = 0; + + if (CONSOLE_LOG === true) { + + console.log("ProductCard -> onDayChanged"); + + } + + } + function onMarketFileLoaded(event) { if (event.currentValue === event.totalValue) { diff --git a/TimelineChart.js b/TimelineChart.js index bdf80acea..defe0c5e8 100644 --- a/TimelineChart.js +++ b/TimelineChart.js @@ -337,8 +337,29 @@ function newTimelineChart() { function setDatetime(pDatetime) { + /* If there is a change in the day, then we tell it to the Product Card so that it can represent the activity of the daily cursors on the UI. */ + + let currentDate = Math.trunc(datetime.valueOf() / ONE_DAY_IN_MILISECONDS); + let newDate = Math.trunc(newDatetime.valueOf() / ONE_DAY_IN_MILISECONDS); + datetime = pDatetime; + if (currentDate !== pDatetime) { + + if (timePeriod <= _1_HOUR_IN_MILISECONDS) { + + for (var i = 0; i < activePlotters.length; i++) { + + let activePlotter = activePlotters[i]; + activePlotter.productCard.onDayChanged(); + + } + + } + } + + /* No matter if the day changed or not, we need to inform all visible Plotters. */ + if (thisObject.container.frame.isInViewPort()) { for (var i = 0; i < activePlotters.length; i++) { diff --git a/server.js b/server.js index 39b6fecda..a780cdf8c 100644 --- a/server.js +++ b/server.js @@ -6,7 +6,7 @@ if (CONSOLE_LOG === true) { } -let debugMode = false; // This forces the server to read Plotters from the local drive. +let debugMode = true; // This forces the server to read Plotters from the local drive. if (CONSOLE_LOG === true && debugMode === true) {