From dea4df678d49a98e2369a5f82fc7cc0dadb04ca8 Mon Sep 17 00:00:00 2001 From: Sean Date: Tue, 8 Apr 2025 11:11:01 -0400 Subject: [PATCH] Changes --- .../MarketDataModel/MobileDataModels.cs | 3 +- Navigator/Renderers/BollingerBandRenderer.cs | 21 +++-- Navigator/Services/DataStore/IDataStore.cs | 24 ++++++ Navigator/Services/DataStore/MockDataStore.cs | 78 +++++++++++++++++++ 4 files changed, 118 insertions(+), 8 deletions(-) create mode 100644 Navigator/Services/DataStore/IDataStore.cs create mode 100644 Navigator/Services/DataStore/MockDataStore.cs diff --git a/MarketDataLib/MarketDataModel/MobileDataModels.cs b/MarketDataLib/MarketDataModel/MobileDataModels.cs index 78b9cee..8a47880 100644 --- a/MarketDataLib/MarketDataModel/MobileDataModels.cs +++ b/MarketDataLib/MarketDataModel/MobileDataModels.cs @@ -19,7 +19,7 @@ namespace MarketData.MarketDataModel public PortfolioTrades Trades { get; set; } } // ************************************************************************************ - public class GainLossSummaryItemDetail: GainLossSummaryItem + public class GainLossSummaryItemDetail : GainLossSummaryItem { public GainLossSummaryItemDetail() { @@ -46,6 +46,5 @@ namespace MarketData.MarketDataModel public double PercentDistanceFromAllTimeGainLossPercent{get;set;} public Price LatestPrice{get;set;} public double PriceChange{get;set;} - public bool HasStopLimit{get;set;} } } diff --git a/Navigator/Renderers/BollingerBandRenderer.cs b/Navigator/Renderers/BollingerBandRenderer.cs index 9e7a93c..fd2776c 100644 --- a/Navigator/Renderers/BollingerBandRenderer.cs +++ b/Navigator/Renderers/BollingerBandRenderer.cs @@ -302,11 +302,15 @@ namespace Navigator.Renderers if(bollingerBandGraphs.ContainsKey((int)Band.Low))yExtents.Add(bollingerBandGraphs[(int)Band.Low].GetYExtent()); if(bollingerBandGraphs.ContainsKey((int)Band.Close))yExtents.Add(bollingerBandGraphs[(int)Band.Close].GetYExtent()); if(bollingerBandGraphs.ContainsKey((int)Band.SMAN))yExtents.Add(bollingerBandGraphs[(int)Band.SMAN].GetYExtent()); - double maxDataExtent=yExtents.Count>0?yExtents.Max(x=>x):0; - if(null!=portfolioTradesWithParityPrice&&null!=portfolioTradesWithParityPrice.ParityPrice&&portfolioTradesWithParityPrice.ParityPrice.Close>maxDataExtent) + if(null!=portfolioTradesWithParityPrice&&null!=portfolioTradesWithParityPrice.ParityPrice) { - maxDataExtent=portfolioTradesWithParityPrice.ParityPrice.Close; + yExtents.Add(portfolioTradesWithParityPrice.ParityPrice.Close); } + if(null!=stopLimit) + { + yExtents.Add(stopLimit.StopPrice); + } + double maxDataExtent=yExtents.Count>0?yExtents.Max(x=>x):0; return maxDataExtent; } @@ -322,11 +326,16 @@ namespace Navigator.Renderers if(bollingerBandGraphs.ContainsKey((int)Band.Low))yExtents.Add(bollingerBandGraphs[(int)Band.Low].GetYExtentMin()); if(bollingerBandGraphs.ContainsKey((int)Band.Close))yExtents.Add(bollingerBandGraphs[(int)Band.Close].GetYExtentMin()); if(bollingerBandGraphs.ContainsKey((int)Band.SMAN))yExtents.Add(bollingerBandGraphs[(int)Band.SMAN].GetYExtentMin()); - double minDataExtent=yExtents.Count>0?yExtents.Min(x=>x):0; - if(null!=portfolioTradesWithParityPrice&&null!=portfolioTradesWithParityPrice.ParityPrice&&portfolioTradesWithParityPrice.ParityPrice.Close0?yExtents.Min(x=>x):0; return minDataExtent; } diff --git a/Navigator/Services/DataStore/IDataStore.cs b/Navigator/Services/DataStore/IDataStore.cs new file mode 100644 index 0000000..b9c8a4a --- /dev/null +++ b/Navigator/Services/DataStore/IDataStore.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Navigator.Services +{ + public interface IDataStore + { + Task AddItemAsync(T item); + + bool AddItem(T item); + + Task UpdateItemAsync(T item); + + Task DeleteItemAsync(string id); + + bool DeleteItem(string id); + + Task GetItemAsync(string id); + + T GetItem(string id); + + Task> GetItemsAsync(bool forceRefresh = false); + } +} diff --git a/Navigator/Services/DataStore/MockDataStore.cs b/Navigator/Services/DataStore/MockDataStore.cs new file mode 100644 index 0000000..85090b8 --- /dev/null +++ b/Navigator/Services/DataStore/MockDataStore.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Navigator.Models; + +namespace Navigator.Services +{ + public class MockDataStore : IDataStore + { + readonly List items; + + public MockDataStore() + { + items = new List(); + //items = new List() + // { + // new Item { Id = Guid.NewGuid().ToString(), Text = "First item", Description="This is an item description." }, + // new Item { Id = Guid.NewGuid().ToString(), Text = "Second item", Description="This is an item description." }, + // new Item { Id = Guid.NewGuid().ToString(), Text = "Third item", Description="This is an item description." }, + // new Item { Id = Guid.NewGuid().ToString(), Text = "Fourth item", Description="This is an item description." }, + // new Item { Id = Guid.NewGuid().ToString(), Text = "Fifth item", Description="This is an item description." }, + // new Item { Id = Guid.NewGuid().ToString(), Text = "Sixth item", Description="This is an item description." } + // }; + } + + public async Task AddItemAsync(Item item) + { + items.Add(item); + return await Task.FromResult(true); + } + + public bool AddItem(Item item) + { + items.Add(item); + return true; + } + + public async Task UpdateItemAsync(Item item) + { + var oldItem = items.Where((Item arg) => arg.Id == item.Id).FirstOrDefault(); + items.Remove(oldItem); + items.Add(item); + + return await Task.FromResult(true); + } + + public async Task DeleteItemAsync(string id) + { + var oldItem = items.Where((Item arg) => arg.Id == id).FirstOrDefault(); + items.Remove(oldItem); + + return await Task.FromResult(true); + } + + public bool DeleteItem(string id) + { + var oldItem = items.Where((Item arg) => arg.Id == id).FirstOrDefault(); + items.Remove(oldItem); + return true; + } + + public async Task GetItemAsync(string id) + { + return await Task.FromResult(items.FirstOrDefault(s => s.Id == id)); + } + + public Item GetItem(string id) + { + return items.FirstOrDefault(s => s.Id==id); + } + + public async Task> GetItemsAsync(bool forceRefresh = false) + { + return await Task.FromResult(items); + } + } +} \ No newline at end of file