AR Design
UBC EML collab with UBC SALA - visualizing IoT data in AR
Utility.cs
Go to the documentation of this file.
1 using Newtonsoft.Json.Linq;
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using UnityEngine;
6 
7 namespace ARDesign
8 {
9  namespace Influx
10  {
14  public static class Utility
15  {
16  #region PUBLIC_METHODS
17  public static string EncodeQuery(string host, string port, bool isPretty, string db, string query)
27  {
28  return "http://" + host + ":" + port + "/query?db=" + db + (isPretty ? "&pretty=true" : "") + "&q=" + System.Uri.EscapeDataString(query);
29  }
30 
36  public static IList<Values> ParseValues(string jsonToParse)
37  {
38 
39  JToken results = JToken.Parse(jsonToParse);
40  IList<JToken> vals = results["results"][0]["series"][0]["values"].Children().ToList();
41  IList<Values> toReturn = new List<Values>();
42  foreach (JToken val in vals)
43  {
44  Values result = new Values
45  {
46  t = DateTime.Parse(val[0].ToString()),
47  type = val[1].ToString()
48  };
49  result.time = result.t.Ticks;
50  double.TryParse(val[2].ToString(), out result.val);
51  toReturn.Add(result);
52  }
53 
54  return toReturn;
55 
56  }
57 
63  public static IDictionary<DateTime, Vector2> ParseValuesNoType(string jsonToParse)
64  {
65 
66  JToken results = JToken.Parse(jsonToParse);
67  IList<JToken> vals = results["results"][0]["series"][0]["values"].Children().ToList();
68  IDictionary<DateTime, Vector2> toReturn = new Dictionary<DateTime, Vector2>();
69  foreach (JToken val in vals)
70  {
71  DateTime key = DateTime.Parse(val[0].ToString());
72  float t = key.Ticks;
73  float value;
74  float.TryParse(val[1].ToString(), out value);
75  toReturn[key] = new Vector2(t, value);
76  }
77 
78  return toReturn;
79 
80  }
81 
88  public static IDictionary<DateTime, Vector2> ParseValuesNoType(string jsonToParse, IDictionary<DateTime, Vector2> dict)
89  {
90  JToken results = JToken.Parse(jsonToParse);
91  IList<JToken> vals = results["results"][0]["series"][0]["values"].Children().ToList();
92  foreach (JToken val in vals)
93  {
94  DateTime key = DateTime.Parse(val[0].ToString());
95  float t = key.Ticks;
96  float value;
97  float.TryParse(val[1].ToString(), out value);
98  dict[key] = new Vector2(t, value);
99  }
100 
101  return dict;
102 
103  }
104 
110  public static string[] ParseLabels(string jsonToParse)
111  {
112  JToken results = JToken.Parse(jsonToParse);
113  IList<JToken> vals = results["results"][0]["series"][0]["values"].Children().ToList();
114  return vals.Select(val => val[1].ToString()).ToArray<string>();
115  }
116  #endregion //PUBLIC METHODS
117  }
118 
122  public struct Values
123  {
124  public DateTime t;
125  public long time;
126  public string type;
127  public double val;
128  public bool isSet;
129 
130  override public string ToString()
131  {
132  return "DateTime: " + t.ToString() + ", type: " + type + ", val: " + val + ", isSet: " + isSet;
133  }
134  }
135  }
136 }
137 
static string [] ParseLabels(string jsonToParse)
Queries database for type labels (ie CO2, temperature, etc)
Definition: Utility.cs:110
Static helper functions for Influx querying and serialization
Definition: Utility.cs:14
override string ToString()
Definition: Utility.cs:130
static IDictionary< DateTime, Vector2 > ParseValuesNoType(string jsonToParse, IDictionary< DateTime, Vector2 > dict)
Parses the values from a given json string - for use in populating widgets
Definition: Utility.cs:88
static IDictionary< DateTime, Vector2 > ParseValuesNoType(string jsonToParse)
Parses the values from a given json string - for use in populating widgets
Definition: Utility.cs:63
static IList< Values > ParseValues(string jsonToParse)
Definition: Utility.cs:36
static string EncodeQuery(string host, string port, bool isPretty, string db, string query)
Builds https query for use with InfluxDB https query language
Definition: Utility.cs:26