From 3d2990ab02f2b329587c8a3a2c114e9c6fb19f92 Mon Sep 17 00:00:00 2001 From: zakibinary Date: Wed, 29 May 2019 14:25:41 +0800 Subject: [PATCH 1/2] change contract-store logic for handling charttype and granularity --- .../Stores/Modules/Contract/Helpers/logic.js | 3 +- .../Stores/Modules/Contract/contract-store.js | 33 ++++++------------- 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/src/javascript/app/Stores/Modules/Contract/Helpers/logic.js b/src/javascript/app/Stores/Modules/Contract/Helpers/logic.js index f96a03f41bb5..f6395583504d 100644 --- a/src/javascript/app/Stores/Modules/Contract/Helpers/logic.js +++ b/src/javascript/app/Stores/Modules/Contract/Helpers/logic.js @@ -31,7 +31,8 @@ const hour_to_granularity_map = [ const getExpiryTime = (time) => time || ServerTime.get().unix(); export const getChartType = (start_time, expiry_time) => { - const duration = moment.duration(moment.unix(getExpiryTime(expiry_time)).diff(moment.unix(start_time))).asHours(); + // change back to asHours for prod + const duration = moment.duration(moment.unix(getExpiryTime(expiry_time)).diff(moment.unix(start_time))).asMinutes(); // use line chart if duration is less than 1 hour return (duration < 1) ? 'mountain' : 'candle'; }; diff --git a/src/javascript/app/Stores/Modules/Contract/contract-store.js b/src/javascript/app/Stores/Modules/Contract/contract-store.js index 042c02c2535e..4087f2264cb3 100644 --- a/src/javascript/app/Stores/Modules/Contract/contract-store.js +++ b/src/javascript/app/Stores/Modules/Contract/contract-store.js @@ -50,8 +50,6 @@ export default class ContractStore extends BaseStore { // ---- Normal properties --- forget_id; chart_type = 'mountain'; - is_granularity_set = false; - is_left_epoch_set = false; is_from_positions = false; is_ongoing_contract = false; @@ -64,12 +62,11 @@ export default class ContractStore extends BaseStore { // ------------------- @action.bound drawChart(SmartChartStore, contract_info) { - this.forget_id = contract_info.id; - - const { date_start } = contract_info; - const end_time = getEndTime(contract_info); - const should_update_chart_type = (!contract_info.tick_count && !this.is_granularity_set); + this.forget_id = contract_info.id; + const { date_start } = contract_info; + const end_time = getEndTime(contract_info); + SmartChartStore.setChartView(contract_info.purchase_time); if (!end_time) this.is_ongoing_contract = true; // finish contracts if end_time exists @@ -82,7 +79,7 @@ export default class ContractStore extends BaseStore { SmartChartStore.setContractStart(date_start); SmartChartStore.setContractEnd(end_time); - if (should_update_chart_type) { + if (!contract_info.tick_count) { this.handleChartType(SmartChartStore, date_start, end_time); } else { SmartChartStore.updateGranularity(0); @@ -94,27 +91,18 @@ export default class ContractStore extends BaseStore { } // setters for ongoing contracts, will only init once onMount after left_epoch is set - } else if (!this.is_left_epoch_set) { - + } else { if (this.is_from_positions) { SmartChartStore.setContractStart(date_start); } - if (contract_info.tick_count) { SmartChartStore.updateGranularity(0); SmartChartStore.updateChartType('mountain'); } - this.is_left_epoch_set = true; - SmartChartStore.setChartView(contract_info.purchase_time); } - if (should_update_chart_type && !contract_info.tick_count) { + if (!contract_info.tick_count) { this.handleChartType(SmartChartStore, date_start, null); } - if (this.is_granularity_set) { - if (getChartType(date_start, null) !== this.chart_type) { - this.is_granularity_set = false; - } - } SmartChartStore.updateMargin((end_time || contract_info.date_expiry) - date_start); @@ -191,9 +179,7 @@ export default class ContractStore extends BaseStore { this.error_message = ''; this.forget_id = null; this.has_error = false; - this.is_granularity_set = false; this.is_sell_requested = false; - this.is_left_epoch_set = false; this.is_from_positions = false; this.is_ongoing_contract = false; this.sell_info = {}; @@ -340,15 +326,16 @@ export default class ContractStore extends BaseStore { const chart_type = getChartType(start, expiry); const granularity = getChartGranularity(start, expiry); - if (chart_type === 'candle' && granularity !== 0) { + if (chart_type === 'candle') { SmartChartStore.updateChartType(chart_type); + // Testing here remove line below for prod + SmartChartStore.updateGranularity(60); this.chart_type = chart_type; } else { SmartChartStore.updateChartType('mountain'); this.chart_type = 'mountain'; } SmartChartStore.updateGranularity(granularity); - this.is_granularity_set = true; } forgetProposalOpenContract() { From f2f211d391726a0d3a09a0f84f1dc14885e3ef62 Mon Sep 17 00:00:00 2001 From: zakibinary Date: Wed, 29 May 2019 22:57:01 +0800 Subject: [PATCH 2/2] refactored marker drawing condition for spots when in candles, revert back contract logic helper for chart_type getter --- .../Modules/Contract/Helpers/chart-markers.js | 11 ++++------- .../app/Stores/Modules/Contract/Helpers/logic.js | 3 +-- .../app/Stores/Modules/Contract/contract-store.js | 13 +++++-------- .../app/Stores/Modules/Portfolio/portfolio-store.js | 2 +- 4 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/javascript/app/Stores/Modules/Contract/Helpers/chart-markers.js b/src/javascript/app/Stores/Modules/Contract/Helpers/chart-markers.js index 16aaa0c5ea62..7e70808e5bd2 100644 --- a/src/javascript/app/Stores/Modules/Contract/Helpers/chart-markers.js +++ b/src/javascript/app/Stores/Modules/Contract/Helpers/chart-markers.js @@ -12,16 +12,13 @@ import { import { unique } from '../../../../../_common/utility'; import { MARKER_TYPES_CONFIG } from '../../SmartChart/Constants/markers'; -export const createChartMarkers = (SmartChartStore, contract_info, replay_config) => { +export const createChartMarkers = (SmartChartStore, contract_info) => { if (contract_info) { - const chart_type = replay_config ? replay_config.chart_type : SmartChartStore.chart_type; - const end_time = getEndTime(contract_info); + const end_time = getEndTime(contract_info); + const chart_type = getChartType(contract_info.date_start, end_time); if (contract_info.tick_count) { addTickMarker(SmartChartStore, contract_info); - } - if (end_time && getChartType(contract_info.date_start, end_time) !== 'candle') { - addMarker(marker_spots, SmartChartStore, contract_info); - } else if (chart_type === 'mountain') { + } else if (chart_type !== 'candle') { addMarker(marker_spots, SmartChartStore, contract_info); } addMarker(marker_lines, SmartChartStore, contract_info); diff --git a/src/javascript/app/Stores/Modules/Contract/Helpers/logic.js b/src/javascript/app/Stores/Modules/Contract/Helpers/logic.js index f6395583504d..f96a03f41bb5 100644 --- a/src/javascript/app/Stores/Modules/Contract/Helpers/logic.js +++ b/src/javascript/app/Stores/Modules/Contract/Helpers/logic.js @@ -31,8 +31,7 @@ const hour_to_granularity_map = [ const getExpiryTime = (time) => time || ServerTime.get().unix(); export const getChartType = (start_time, expiry_time) => { - // change back to asHours for prod - const duration = moment.duration(moment.unix(getExpiryTime(expiry_time)).diff(moment.unix(start_time))).asMinutes(); + const duration = moment.duration(moment.unix(getExpiryTime(expiry_time)).diff(moment.unix(start_time))).asHours(); // use line chart if duration is less than 1 hour return (duration < 1) ? 'mountain' : 'candle'; }; diff --git a/src/javascript/app/Stores/Modules/Contract/contract-store.js b/src/javascript/app/Stores/Modules/Contract/contract-store.js index 4087f2264cb3..8d5d35e6611c 100644 --- a/src/javascript/app/Stores/Modules/Contract/contract-store.js +++ b/src/javascript/app/Stores/Modules/Contract/contract-store.js @@ -98,11 +98,10 @@ export default class ContractStore extends BaseStore { if (contract_info.tick_count) { SmartChartStore.updateGranularity(0); SmartChartStore.updateChartType('mountain'); + } else { + this.handleChartType(SmartChartStore, date_start, null); } } - if (!contract_info.tick_count) { - this.handleChartType(SmartChartStore, date_start, null); - } SmartChartStore.updateMargin((end_time || contract_info.date_expiry) - date_start); @@ -246,7 +245,7 @@ export default class ContractStore extends BaseStore { } createChartBarrier(this.smart_chart, this.replay_info, this.root_store.ui.is_dark_mode_on); - createChartMarkers(this.smart_chart, this.replay_info, this.replay_config); + createChartMarkers(this.smart_chart, this.replay_info); this.handleDigits(this.replay_info); this.waitForChartListener(this.smart_chart); @@ -327,13 +326,11 @@ export default class ContractStore extends BaseStore { const granularity = getChartGranularity(start, expiry); if (chart_type === 'candle') { - SmartChartStore.updateChartType(chart_type); - // Testing here remove line below for prod - SmartChartStore.updateGranularity(60); this.chart_type = chart_type; + SmartChartStore.updateChartType(chart_type); } else { - SmartChartStore.updateChartType('mountain'); this.chart_type = 'mountain'; + SmartChartStore.updateChartType('mountain'); } SmartChartStore.updateGranularity(granularity); } diff --git a/src/javascript/app/Stores/Modules/Portfolio/portfolio-store.js b/src/javascript/app/Stores/Modules/Portfolio/portfolio-store.js index 707a734ff952..57f9227220c5 100644 --- a/src/javascript/app/Stores/Modules/Portfolio/portfolio-store.js +++ b/src/javascript/app/Stores/Modules/Portfolio/portfolio-store.js @@ -79,7 +79,7 @@ export default class PortfolioStore extends BaseStore { // the Portfolio API returns an empty `contracts` array. // This causes the contract to not be pushed to the `positions` property here. // The statement below prevents accessing undefined values caused by the above explanation. - if (i === -1) { return; } + if (i === -1) return; this.positions[i].is_loading = true; WS.subscribeProposalOpenContract(contract_id.toString(), this.populateResultDetails, false);