|
@@ -7,15 +7,70 @@ import 'dart:convert';
|
|
|
|
|
|
var Q = querySelector;
|
|
var Q = querySelector;
|
|
|
|
|
|
-void main() {
|
|
|
|
|
|
+class Item implements Comparable{
|
|
|
|
+ int timestamp;
|
|
|
|
+ String name;
|
|
|
|
+ String type;
|
|
|
|
+ bool meta;
|
|
|
|
+ bool signal;
|
|
|
|
+
|
|
|
|
+ @override
|
|
|
|
+ int compareTo(Item that){
|
|
|
|
+ DateTime a = new DateTime.fromMillisecondsSinceEpoch(this.timestamp);
|
|
|
|
+ DateTime b = new DateTime.fromMillisecondsSinceEpoch(that.timestamp);
|
|
|
|
+ if(a.isBefore(b))
|
|
|
|
+ return -1;
|
|
|
|
+ else if(a.isAfter(b))
|
|
|
|
+ return 1;
|
|
|
|
+ else return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Item(this.timestamp, this.name, this.type, this.meta, this.signal);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+List<Item> cache = new List();
|
|
|
|
+
|
|
|
|
+update() async{
|
|
|
|
+ (Q("#data") as DivElement).children.clear();
|
|
|
|
+ Map<String, List<Item>> map = new Map();
|
|
|
|
+ cache.forEach((i){
|
|
|
|
+ if(!map.containsKey(i.name)){
|
|
|
|
+ map[i.name] = new List<Item>();
|
|
|
|
+ }
|
|
|
|
+ map[i.name].add(i);
|
|
|
|
+ });
|
|
|
|
+ map.keys.forEach((s){
|
|
|
|
+ var id = "p"+s.hashCode.toString();
|
|
|
|
+ (Q("#data") as DivElement).appendHtml("<div id='p$id' style='white-space: nowrap;'>$s: </div>");
|
|
|
|
+ String dump = "";
|
|
|
|
+ map[s].forEach((i){
|
|
|
|
+ var sig = i.signal == null ? "0" : i.signal ? "+" : "-";
|
|
|
|
+ if(i.meta)
|
|
|
|
+ dump = "$sig $dump";
|
|
|
|
+ else
|
|
|
|
+ dump = "_ $dump";
|
|
|
|
+ });
|
|
|
|
+ (Q("#p$id") as DivElement).appendHtml(dump);
|
|
|
|
+ });
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+main() async{
|
|
var get;
|
|
var get;
|
|
get = (){
|
|
get = (){
|
|
HttpRequest.getString("http://localhost:3000/tri.json")
|
|
HttpRequest.getString("http://localhost:3000/tri.json")
|
|
..then((s){
|
|
..then((s){
|
|
var data = JSON.decode(s);
|
|
var data = JSON.decode(s);
|
|
|
|
+ List il = (data as List);
|
|
|
|
+ il.forEach((i){
|
|
|
|
+ bool sig = i["Signal"]["N"] ? null : i["Signal"]["T"];
|
|
|
|
+ cache.add(new Item(i["Timestamp"], i["Name"], i["Type"], i["Meta"], sig));
|
|
|
|
+ });
|
|
|
|
+ cache.sort();
|
|
|
|
+ update();
|
|
})
|
|
})
|
|
..catchError((e){});
|
|
..catchError((e){});
|
|
- new Future.delayed(new Duration(milliseconds: 100), get);
|
|
|
|
|
|
+ new Future.delayed(new Duration(milliseconds: 300), get);
|
|
};
|
|
};
|
|
get();
|
|
get();
|
|
}
|
|
}
|