public static PathMap ImportFromCSV(string file) { CsvFrame frame = CsvFrame.ParseOne(File.ReadAllText(file).Trim()); if (frame.VariableSetOwner != "Global") { Log.Write(LogLevel.Normal, new ColorMod("Error: need the global variable set, got " + frame.VariableSetOwner + " instead.", ConsoleColor.Red)); return(null); } List <Vertex> vectors = new List <Vertex>(); CsvArray nodeArray = frame.VariableValues[nodesOut] as CsvArray; for (int i = 0; i < nodeArray.Values.Length; i++) { CsvVector nodeVector = (CsvVector)nodeArray.Values[i]; vectors.Add(nodeVector.Value); } List <Segment> segments = new List <Segment>(); CsvArray segmentArray = frame.VariableValues[segmentsOut] as CsvArray; for (int i = 0; i < segmentArray.Values.Length; i++) { CsvVector segmentVector = (CsvVector)segmentArray.Values[i]; segments.Add(new Segment( (int)segmentVector.Value.X, (int)segmentVector.Value.Y, (int)segmentVector.Value.Z )); } return(new PathMap(vectors.ToArray(), segments.ToArray())); }
public void ArrayTest() { var ca = new CsvArray { S = "a,b" }; var al = ca.A.ToArray(); Assert.AreEqual(2, al.Count()); Assert.AreEqual("a", al[0]); Assert.AreEqual("b", al[1]); }
public void WriteArrayTest() { var ca = new CsvArray { S = "a,b" }; ca.A.Add("c"); Assert.AreEqual("a,b,c", ca.S); }
public static PathMap ImportFromCSV(string text, IPathmapErrorHandler errorHandler) { CsvFrame frame; try { frame = CsvFrame.ParseOne(text); } catch (Exception) { errorHandler.Error("Incorrect CSV format."); return(null); } if (frame.VariableSetOwner != "Global") { errorHandler.Error("Need the global variable set, got the '" + frame.VariableSetOwner + "' variable set instead."); return(null); } List <Vertex> vectors = new List <Vertex>(); CsvArray nodeArray = frame.VariableValues[nodesOut] as CsvArray; if (nodeArray == null) { errorHandler.Error("Incorrect format, 'nodesOut' is not an array. Did you compile your pathmap?"); return(null); } for (int i = 0; i < nodeArray.Values.Length; i++) { CsvVector nodeVector = (CsvVector)nodeArray.Values[i]; vectors.Add(nodeVector.Value); } List <Segment> segments = new List <Segment>(); CsvArray segmentArray = frame.VariableValues[segmentsOut] as CsvArray; if (segmentArray == null) { errorHandler.Error("Incorrect format, 'segmentsOut' is not an array."); return(null); } for (int i = 0; i < segmentArray.Values.Length; i++) { CsvVector segmentVector = (CsvVector)segmentArray.Values[i]; segments.Add(new Segment( (int)segmentVector.Value.X, (int)segmentVector.Value.Y, (int)Math.Round((segmentVector.Value.X % 1) * 100), (int)Math.Round((segmentVector.Value.Y % 1) * 100) )); } return(new PathMap(vectors.ToArray(), segments.ToArray())); }
public void SaveAsExcelsFiles() { string[] workerList; string csvLog = ""; string[] columns = new string[24]; m_poolSaveAndLoad.ImportAllKeys(PoolManageByThisAPI.Ethermine.ToString(), m_workersObserved.GetFocusAddress(), out AbstractWorkerBasicInfo[] workersDebug); for (int i = 0; i < 24; i++) { columns[i] = "H-" + i; } AbstractWorkerBasicInfo[] temp; workerList = workersDebug.Select(k => k.m_address.m_workerName).Distinct().ToArray(); DateTime from, to; ulong vFrom, vTo; from = to = DateTime.UtcNow; vFrom = vTo = UnixTime.GetFromDate(from); CsvArray <long> sharedByRig = new CsvArray <long>(); sharedByRig.SetSize(columns, workerList); for (uint i = 0; i < 24; i++) { from = from.AddHours(-1); vFrom = UnixTime.GetFromDate(from); temp = workersDebug.Where(k => k.m_timestampSeconds >= vFrom && k.m_timestampSeconds < vTo).ToArray(); ulong[] value = new ulong[workerList.Length]; for (uint j = 0; j < workerList.Length; j++) { long sum = temp.Where(k => k.m_address.m_workerName == workerList[j]).Sum(k => k.m_valideShare); sharedByRig.SetValue(i, j, sum); } to = to.AddHours(-1); vTo = UnixTime.GetFromDate(to); } StringBuilder sb = new StringBuilder(); sb.Append(" Hour/Workers ;" + string.Join(";", columns) + "\n"); for (uint j = 0; j < workerList.Length; j++) { sb.Append(workerList[j] + ";"); for (uint i = 0; i < 24; i++) { if (i < 23) { sb.Append(sharedByRig.Get(i, j) + ";"); } else { sb.Append(sharedByRig.Get(i, j) + "\n"); } } } m_poolSaveAndLoad.SaveAsLogFile(PoolManageByThisAPI.Ethermine, m_workersObserved.GetFocusAddress(), "last24H.csv", sb.ToString()); }
public static Pathmap ImportFromCSV(string text, IPathmapErrorHandler errorHandler) { CsvFrame frame; try { frame = CsvFrame.ParseOne(text); } catch (Exception) { errorHandler.Error("Incorrect CSV format."); return(null); } if (frame.VariableSetOwner != "Global") { errorHandler.Error("Need the global variable set, got the '" + frame.VariableSetOwner + "' variable set instead."); return(null); } // Get nodes CsvArray nodeArray = frame.VariableValues[nodesOut] as CsvArray; if (nodeArray == null) { errorHandler.Error("Incorrect format, 'nodesOut' is not an array. Did you compile your pathmap?"); return(null); } Vertex[] vectors = new Vertex[nodeArray.Values.Length]; for (int i = 0; i < nodeArray.Values.Length; i++) { CsvVector nodeVector = (CsvVector)nodeArray.Values[i]; vectors[i] = nodeVector.Value; } // Get segments CsvArray segmentArray = frame.VariableValues[segmentsOut] as CsvArray; if (segmentArray == null) { errorHandler.Error("Incorrect format, 'segmentsOut' is not an array."); return(null); } Segment[] segments = new Segment[segmentArray.Values.Length]; for (int i = 0; i < segmentArray.Values.Length; i++) { CsvVector segmentVector = (CsvVector)segmentArray.Values[i]; segments[i] = new Segment( (int)segmentVector.Value.X, (int)segmentVector.Value.Y ); } // Get attributes CsvArray attributeArray = frame.VariableValues[attributesOut] as CsvArray; if (attributeArray == null) { errorHandler.Error("Incorrect format, 'attributesOut' is not an array."); return(null); } MapAttribute[] attributes = new MapAttribute[attributeArray.Values.Length]; for (int i = 0; i < attributeArray.Values.Length; i++) { CsvVector attributeVector = (CsvVector)attributeArray.Values[i]; attributes[i] = new MapAttribute( (int)attributeVector.Value.X, (int)attributeVector.Value.Y, (int)attributeVector.Value.Z ); } return(new Pathmap(vectors.ToArray(), segments.ToArray(), attributes)); }