diff --git a/BrowserHelper/BrowserHelper.csproj b/BrowserHelper/BrowserHelper.csproj
index 0809928..cc23f26 100644
--- a/BrowserHelper/BrowserHelper.csproj
+++ b/BrowserHelper/BrowserHelper.csproj
@@ -13,5 +13,6 @@
+
diff --git a/BrowserHelper/Extensions/HtmlTableExtension.cs b/BrowserHelper/Extensions/HtmlTableExtension.cs
index e6989e4..ed1bf6c 100644
--- a/BrowserHelper/Extensions/HtmlTableExtension.cs
+++ b/BrowserHelper/Extensions/HtmlTableExtension.cs
@@ -1,4 +1,5 @@
using DataDomain;
+using Helpers;
using OpenQA.Selenium;
using System;
using System.Collections;
@@ -64,7 +65,7 @@ namespace BrowserHelper.Extensions
ColumnName = columns[colIndex].Text != "" ?
columns[colIndex].Text : colIndex.ToString(),
ColumnValue = colValue.Text,
- ColumnSpecialValue = GetControl(colValue)
+ //ColumnSpecialValue = GetControl(colValue)
});
}
colIndex++;
@@ -78,6 +79,46 @@ namespace BrowserHelper.Extensions
return tableDataCollection;
}
+ public static List SimpleReadTablePartly(this IWebElement table, string[] shares, string[] shareHeaders)
+ {
+ var shareCollection = new List();
+ var columns = table.FindElements(By.TagName("th"));
+ IWebElement tblBody = table.FindElement(By.XPath(".//tbody"));
+ var rows = tblBody.FindElements(By.TagName("tr"));
+ Dictionary columnPos = new Dictionary();
+ GlobalStopwatch.PrintSecs("After allocations");
+ for (int i = 0; i < columns.Count; i++)
+ {
+ if (shareHeaders.Contains(columns[i].Text)) columnPos.Add(columns[i].Text, i);
+ }
+ var antal = shares.Length;
+ int rowIndex = 0;
+ GlobalStopwatch.PrintSecs("Before scraplooping");
+ foreach (var row in rows)
+ {
+ var element = row.FindElement(By.XPath(".//td"));
+ if (!shares.Contains(element.Text)) { }
+ else
+ {
+ var colDatas = row.FindElements(By.TagName("td"));
+ if (colDatas.Count != 0 && shares.Contains(colDatas[0].Text))
+ {
+ shareCollection.Add(new DiTraderStockRow
+ {
+ StockName = colDatas[columnPos["Aktie"]].Text,
+ LatestPrice = decimal.Parse(colDatas[columnPos["Senast"]].Text),
+ TimeOfDay = TimeSpan.Parse(colDatas[columnPos["Tid"]].Text)
+ });
+
+ rowIndex++;
+ antal--;
+ }
+ }
+ if (antal < 1) break;
+ }
+ GlobalStopwatch.PrintSecs("After scraplooping");
+ return shareCollection;
+ }
private static ColumnSpecialValue GetControl(IWebElement columnValue)
{
@@ -131,45 +172,45 @@ namespace BrowserHelper.Extensions
}
- public static List GetCertainStocks(this IWebElement element, string[] shares, string[] shareHeaders)
- {
- List shareList = new List();
- var reducedList = ReadTablePartly(element, shares, shareHeaders);
- int rNr = -1;
- DiTraderStockRow Aktie = null;
- foreach (var shareRow in reducedList)
- {
- if (shareRow.RowNumber != rNr)
- {
- if (Aktie != null)
- {
- shareList.Add(Aktie);
- }
- Aktie = new();
- rNr = shareRow.RowNumber;
- }
- switch (shareRow.ColumnName)
- {
- case "Aktie":
- {
- Aktie.StockName = shareRow.ColumnValue;
- break;
- }
- case "Senast":
- {
- Aktie.LatestPrice = Convert.ToDecimal(shareRow.ColumnValue);
- break;
- }
- case "Tid":
- {
- Aktie.TimeOfDay = TimeSpan.Parse(shareRow.ColumnValue);
- break;
- }
- }
- }
- shareList.Add(Aktie);
- return shareList;
- }
+ //public static List GetCertainStocks(this IWebElement element, string[] shares, string[] shareHeaders)
+ //{
+ // List shareList = new List();
+ // var reducedList = ReadTablePartly(element, shares, shareHeaders);
+ // int rNr = -1;
+ // DiTraderStockRow Aktie = null;
+ // foreach (var shareRow in reducedList)
+ // {
+ // if (shareRow.RowNumber != rNr)
+ // {
+ // if (Aktie != null)
+ // {
+ // shareList.Add(Aktie);
+ // }
+ // Aktie = new();
+ // rNr = shareRow.RowNumber;
+ // }
+ // switch (shareRow.ColumnName)
+ // {
+ // case "Aktie":
+ // {
+ // Aktie.StockName = shareRow.ColumnValue;
+ // break;
+ // }
+ // case "Senast":
+ // {
+ // Aktie.LatestPrice = Convert.ToDecimal(shareRow.ColumnValue);
+ // break;
+ // }
+ // case "Tid":
+ // {
+ // Aktie.TimeOfDay = TimeSpan.Parse(shareRow.ColumnValue);
+ // break;
+ // }
+ // }
+ // }
+ // shareList.Add(Aktie);
+ // return shareList;
+ //}
public static void PerformActionOnCell(this IWebElement element, string targetColumnIndex, string refColumnName, string refColumnValue, string controlToOperate = null)
diff --git a/Helpers/GlobalStopwatch.cs b/Helpers/GlobalStopwatch.cs
new file mode 100644
index 0000000..c8326a5
--- /dev/null
+++ b/Helpers/GlobalStopwatch.cs
@@ -0,0 +1,100 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Helpers
+{
+ public static class GlobalStopwatch
+ {
+ private static Stopwatch Stopwatch { get; set; }
+
+ static GlobalStopwatch()
+ {
+ Stopwatch = new Stopwatch();
+ }
+
+ public static void Start()
+ {
+ if (!Stopwatch.IsRunning)
+ {
+ _previousEllapsedMillis = 0;
+ Stopwatch.Start();
+ }
+ }
+
+ public static void Stop() => Stopwatch.Stop();
+
+ public static void Restart()
+ {
+ _previousEllapsedMillis = 0;
+ Stopwatch.Restart();
+ }
+
+ private static long _previousEllapsedMillis;
+ public static long EllapsedMillisPrevious
+ {
+ get
+ {
+ var ellapsed = EllapsedMillis;
+ var result = ellapsed - _previousEllapsedMillis;
+ _previousEllapsedMillis = ellapsed;
+
+ return result;
+ }
+ }
+
+ public static long EllapsedMillis => Stopwatch.ElapsedMilliseconds;
+
+ public static bool IsRunning
+ {
+ get
+ {
+ return Stopwatch.IsRunning;
+ }
+ }
+
+ public static void Print(string label)
+ {
+ if (label != null)
+ {
+ Debug.WriteLine($"{label}: {EllapsedMillis}");
+ }
+ else
+ {
+ Debug.WriteLine(EllapsedMillis);
+ }
+ }
+
+ public static void PrintWithLastTime(string label)
+ {
+ if (label != null)
+ {
+ Debug.WriteLine($"{label}: {EllapsedMillisPrevious}");
+ }
+ }
+ public static void PrintSecs(string label)
+ {
+ var secs = Math.Round((decimal)EllapsedMillis / 1000, 2);
+ if (label != null)
+ {
+ Debug.WriteLine($"{label}: {secs}");
+ }
+ else
+ {
+ Debug.WriteLine(secs);
+ }
+ }
+
+ public static void PrintWithLastTimeSecs(string label)
+ {
+ var secs = Math.Round((decimal)EllapsedMillisPrevious / 1000, 2);
+ if (label != null)
+ {
+ Debug.WriteLine($"{label}: {secs}");
+ }
+ }
+ }
+}
diff --git a/StockDAL/StockDAL.csproj b/StockDAL/StockDAL.csproj
index 46fc85e..eb2788d 100644
--- a/StockDAL/StockDAL.csproj
+++ b/StockDAL/StockDAL.csproj
@@ -17,6 +17,7 @@
+
diff --git a/StockDAL/StockMarketRepository.cs b/StockDAL/StockMarketRepository.cs
index 5b96c10..6c3c21c 100644
--- a/StockDAL/StockMarketRepository.cs
+++ b/StockDAL/StockMarketRepository.cs
@@ -14,6 +14,7 @@ using System.Diagnostics;
using StockDAL.Interface;
using BrowserHelper.Driver;
using BrowserHelper.Settings;
+using Helpers;
namespace StockDal
{
@@ -245,9 +246,10 @@ namespace StockDal
{
StockMarketList = new Dictionary();
DumpObjects = new List();
-
+ GlobalStopwatch.PrintSecs("After dictionaries setup ");
//var connStocks = _stockPersonConnect.GetAllConnectionsByPersId(persId);
var groupedStocks = _stockRepository.GetStocksGroupedPerPerson(persId);
+ GlobalStopwatch.PrintSecs("After groupedStocks fetched ");
var lastGroup = string.Empty;
var stockList = new List();
@@ -259,7 +261,9 @@ namespace StockDal
{
_testSettings.StockWishes = stockList.ToArray();
stockList.Clear();
+ GlobalStopwatch.PrintSecs("Before GetStockStatus");
saveStockData( _scrapePage.GetMyStockStatus(lastGroup));
+ GlobalStopwatch.PrintSecs("After GetStockStatus");
lastGroup = groupedStock.StockGroup;
}
else
diff --git a/StockDAL/StockScrapePage.cs b/StockDAL/StockScrapePage.cs
index c383804..1b18fb2 100644
--- a/StockDAL/StockScrapePage.cs
+++ b/StockDAL/StockScrapePage.cs
@@ -31,12 +31,8 @@ namespace StockDAL
{
Thread.Sleep(500);
chooseList.SelectDropDownByText(listText);
- Thread.Sleep(3000);
- var stockList = tblList.GetCertainStocks(_testSettings.StockWishes, _testSettings.StocWishCols);
- //foreach (var stock in stockList)
- //{
- // Console.WriteLine($"Aktie: {stock.StockName} Senastepris: {stock.LatestPrice} TidPunkt {stock.TimeOfDay}");
- //}
+ Thread.Sleep(800);
+ var stockList = tblList.SimpleReadTablePartly(_testSettings.StockWishes, _testSettings.StocWishCols);
return stockList;
}
diff --git a/StockInfoCore/frmInitial.cs b/StockInfoCore/frmInitial.cs
index 411e8b9..d84145b 100644
--- a/StockInfoCore/frmInitial.cs
+++ b/StockInfoCore/frmInitial.cs
@@ -141,6 +141,10 @@ namespace StockInfoCore
private void btnValueView_Click(object sender, EventArgs e)
{
+ if(!GlobalStopwatch.IsRunning && GlobalStopwatch.EllapsedMillis>0)
+ GlobalStopwatch.Restart();
+ else GlobalStopwatch.Start();
+
if (SelectedPersonId == 0)
{
MessageBox.Show($"Ingen person vald ({SelectedPersonId})");
@@ -155,6 +159,8 @@ namespace StockInfoCore
_stockWindow.Stocks = _stockMarketRepository.StockMarketList;
Cursor.Current = DefaultCursor;
+ GlobalStopwatch.Stop();
+ GlobalStopwatch.PrintSecs("Before Show Stockwindow");
_stockWindow.ShowDialog();
}
}
diff --git a/StockInfoCore/frmMyStocks.cs b/StockInfoCore/frmMyStocks.cs
index 373a750..39522fe 100644
--- a/StockInfoCore/frmMyStocks.cs
+++ b/StockInfoCore/frmMyStocks.cs
@@ -10,6 +10,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using StockDAL.Interface;
+using Helpers;
//
namespace StockInfoCore
{
@@ -72,6 +73,8 @@ namespace StockInfoCore
}
lblOwnerName.Text = $"* {ConnectedPerson.FirstName} {ConnectedPerson.LastName} *";
+ GlobalStopwatch.PrintSecs("In reload (New window)");
+
txtBuyTotal.Text = BoughtSum.ToString();
txtBuyTotal.Refresh();
txtCurrValue.Text = CurrentSum.ToString();