From 75d93312336111ea4ae6bf552c77d65a16d72fe5 Mon Sep 17 00:00:00 2001
From: Tom MacWright
Date: Thu, 1 Nov 2012 10:55:33 -0400
Subject: [PATCH] Start traversing the graph, other changes
Adds GeoJSON viewing to features, unifies the way that features refer
to their children.
---
NOTES.md | 34 ++++++++++---
css/app.css | 1 +
index.html | 12 ++---
js/iD/Connection.js | 30 +++++-------
js/iD/GeoJSON.js | 2 +-
js/iD/Graph.js | 11 ++++-
js/iD/Node.js | 3 +-
js/iD/Relation.js | 7 +--
js/iD/Util.js | 8 +++
js/iD/Way.js | 2 +-
js/iD/renderer/Map.js | 65 ++++++++++++-------------
js/iD/ui/DragAndDrop.js | 105 ----------------------------------------
js/iD/ui/Inspector.js | 12 ++++-
test/spec/Relation.js | 4 +-
14 files changed, 107 insertions(+), 189 deletions(-)
delete mode 100644 js/iD/ui/DragAndDrop.js
diff --git a/NOTES.md b/NOTES.md
index 90142960d..a7435d1e4 100644
--- a/NOTES.md
+++ b/NOTES.md
@@ -11,17 +11,35 @@ To be clear, this data model is something like
\- ways -> nodes
\- nodes
-## Actions
-Actions are operations on OSM data like adding nodes, moving ways,
-and so on. They are initiated by controller states, like
-`iD.controller.ControllerState` initiates a `CreatePOIAction` and
-adds it to the undo stack.
+## Performance
-## Entities
+Main performance concerns of iD:
-`iD.Entity` is the door from pure objects like `iD.Node` into a hierarchy
-of objects - it provides handling of parents, children, and so on.
+### Panning & zooming performance of the map
+
+SVG redraws are costly, especially when they require all features to
+be reprojected.
+
+Approaches:
+
+* Using CSS transforms for intermediate map states, and then redrawing when
+ map movement stops
+* "In-between" projecting features to make reprojection cheaper
+
+### Memory overhead of objects
+
+Many things will be stored by iD. With the graph structure in place, we'll
+be storing much more.
+
+## Connection, Graph, Map
+
+The Map is a display and manipulation element. It should have minimal particulars
+of how exactly to store or retrieve data. It gets data from Connection and
+asks for it from Graph.
+
+Graph stores all of the objects and all of the versions of those objects.
+Connection requests objects over HTTP, parses them, and provides them to Graph.
## loaded
diff --git a/css/app.css b/css/app.css
index fa3810095..0df34b245 100644
--- a/css/app.css
+++ b/css/app.css
@@ -175,6 +175,7 @@ table td {
.inspector-wrap a.permalink {
text-decoration:none;
+ margin-right:2em;
font: normal 11px/20px 'Helvetica'
}
diff --git a/index.html b/index.html
index 90e1f6bea..a611cd631 100755
--- a/index.html
+++ b/index.html
@@ -63,16 +63,10 @@
Imagery © 2012 Bing, GeoEye, Getmapping, Intermap, Microsoft.