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.