Giter Club home page Giter Club logo

id's People

Contributors

1ec5 avatar aaronlidman avatar ansis avatar bhousel avatar dependabot[bot] avatar greenkeeper[bot] avatar greenkeeperio-bot avatar hikemaniac avatar jameskingdom avatar jfirebaugh avatar jguthrie100 avatar k-yle avatar kepta avatar kymckay avatar manfredbrandl avatar maxgrossman avatar mbrzakovic avatar nickplesha avatar noenandre avatar peternewman avatar psigio avatar quincylvania avatar samanpwbb avatar systemed avatar thomas-hervey avatar tmcw avatar tyrasd avatar vershwal avatar westnordost avatar willemarcel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

id's Issues

Allow actions to be async

There are already a few actions, like creating nodes, which are async in the model and will be more async in the future, but their undo states and registered sync. This could lead to race conditions & more problems down the line - undo and do should likely take callbacks.

Split out tile backend

It should be easy to make the tile endpoint independent of the rest of iD, so we can run iD without tiles as a layer in other systems.

using CSS instead of MapCSS

It looks like it's possible to use plain CSS for a wide number of settings, like roads & buildings. It might be valuable to reduce the complexity in this area.

Snap projection scale

Not sure how to do this, might have to bug mbostock about this or mod double-click handling to make it possible to double click to a clean zoom.

Soft tabs

Not much more than that, soft tabs please! Hard tabs are rarely seen in javascriptland.

Backgrounds or strokes for markers

Markers that would look fine on a flat map aren't strong enough on satellite data. Example:

We either need backgrounds for these, or just better styled markers.

What are sublayers?

I'm not clear on what sublayers, as implemented in Map.js and somewhat in other areas, are. Are they levels of data? Of rendering? It looks like we have 10 layers, with 6 groups each = 60 <g> elements nested in the map.

What should know about the map?

Previously the 'connection' was the central command that could call map.updateUIs via refreshEntity. Possibly entities should know about their UI elements?

One or multiple connection objects?

Noticing that each entity in the system has a personal reference to the 'connection' object.

Is this because there can be multiple connections and we want to keep track, or is this a convenience for stuff like .refreshEntity?

Events system

We could probably benefit from some events concept, for stuff like refreshEntity, which previously looped through maps with a more or less 'register callback' system.

Options:

  • bean has been good to me
  • We can also use jQuery for this
  • Or dojo
  • Or roll-your-own callbacks system

Tile API requests

If the sum of tiled requests to overpass is roughly the same as one request, we should tile our requests so that it's simpler to do differenced-requests for page pans and zooms.

Using transforms instead of x=

dojo's gfx library doesn't use transforms for stuff like tile translate operations - this is a pretty first-batch optimization to do. we'll either need to do some svg-specific code or see if dojo has a special construct for doing things the nice way.

Always show control points

It might make sense to always show a bit more of the 'skeletons' of objects instead of toggling these on & off. It would make it more obvious to new users how you can change shapes & select points to grab.

Mobile AND offline

In the process of editing OpenStreetMap, being on site is wonderful. It helps to give feedback with a very short loop about the immediate environment. An issue is that the current editing tools are not very good for matching these two goals at the same time:

  1. Editing on Mobile (be phone or tablet) with a fatty finger on a small screen. It needs tools with magnified a bit like precision positioning when fixing text.
  2. Offline. This is key. You should not have to be connected to be able to edit the map. Everything could be buffered and exported later when you reach a network. The background tiles should be imported when online then used when needed offline.

If these two features are met it would be very cool. It's indeed hard. I guess sync issues, precisions, number of downloadable tiles in appcache, etc.

Reducing setters & getters

There are quite a few attributes, like modified, that are wrapped by setters and getters, like markDirty, markClean, isDirty. Unless there are side-effects to changing these values, I'd rather just deal with public properties of objects than a larger API.

Marker sprites

It would be wonderful if instead of around 100 images to download for different markers, we could use a sprite sheet. Not sure if this is doable in SVG - needs investigation.

Choose a lint, use it, make warnings

Could we use something like Maplint as a proofing for changesets made by iD, and try to warn for things that would cause maplint errors? Or is there a better lint to pay attention to?

Zoom-dependent styles

Fairly easy to support by classing the map container and adding svg styles for .z14 and so on.

hash links for locations

It's be simple to add a hash to the URL for map browsing so that it's simple to link to locations.

Translation strategy

Unclear what the best approach will be here, but this interface will have to be translatable.

Authentication

We need to authenticate this guy against OAuth, and probably with some kind of bridge like gatekeeper for now.

set crossOrigin flag on requests or use JSONP

CORS is quite certainly the worst web standard lumped in with HTML5. Right now thanks to its unbelievable badness, this is doubling download times by sending an OPTIONS request, waiting for it to complete, and then sending a GET request. Both requests load all data.

Bah humbug.

Add 'increase way accuracy' markers

Besides the regular dragging markers, we should also have the mid-line markers that JOSM has from the 'improve way accuracy' plugin in core.

Machine/human readable tag documentation?

(this seems like the kind of idea that already exists somewhere)

Could there be a JSON/YAML/plaintext/whatever dictionary of common keys, 'documentation' (basically one-sentence summaries of wiki pages), and 'suggested icons' or such? This could be shared between editors and used for tagging interfaces.

Bind & represent undo system

There probably should be a UI for undos, and some nice way of presenting the undo list (like how you can hold down the back button of a browser to get recent history, and graying out the buttons when appropriate).

Allow dragging ways to move them

This is useful for houses, etc. Specifically, this means clicking on the stroke/casing for roads, or the fill for houses, dragging, and moving all nodes.

Extend hashes

Hashes don't just need to show the map location, they should also support editing modes and item selection.

Multi-backend or just SVG?

If we choose to go SVG-only, there are a few benefits:

  • Consistent mouse interaction in terms of cursor: pointer;
  • Using classes for road types rather than styling each road individually

Though, there are definitely drawbacks. Something to keep in mind.

Use an existing tile client

We should use polymaps, modestmaps, etc to do tiling instead of having a self-rolled version; this would give stuff like templated tile urls, touch handlers, etc., for free, and less code to maintain.

UI binding strategy

What I've been comping out with jQuery for feature editing is not optimal, we'll need a better pattern for handling, validating, and storing user input.

Options (non-exhaustive):

  • Backbone or a knockoff
  • Following an MVC pattern without a framework
  • Using dojo functionality
  • Continuing to just hack it

Prevent selection of SVG Text

Right now this is an issue with dragging and double clicking. Should be simple to do, but I need to understand dojo's graphics layer better to make sure it can be done with different renderers than SVG as well.

Actions & Operations

We need an approach for how to handle actions & operations which is pretty robust.

Current approach:

  • One action at a time, you can .enter and .exit actions
  • Actions bind and unbind their own events and add and remove their own elements
  • Actions have access to the map object and graph object

And

  • Actions lead to operations, which actually modify the dataset
  • Operations lead to versions in the graph.

Flexibly sized map

Need to iterate on the map sizing logic so that we can have fullscreen editors rather than fixed height.

Should within() be affected by deleted?

In the within for both Way and Node, the value of this.deleted affects the value of whether one thing is inside of another. This seems like overlapping concerns; shouldn't the caller be responsible for checking whether something is deleted?

Versioning vs graph persistence

So, how do we resolve the question of loading new data into the graph versus having a consistent undo system? Does loaded data have a 'backdoor' where it exists in all graph versions? Does undo possibly wipe data that's downloaded from the map?

Using Objects instead of jshashtable?

It'd definitely be possible to use a simple object-literal in place of jshashtable - I can definitely run this work out if there's no other-reason for using it that I'm not aware of.

Persistent datastructure approach to edits

@jfirebaugh brought up this idea - essentially (in my n00b terms), this would mean having version tags for each entity, and chains of versions that can reuse entities. This would essentially be our undo strategy, allowing us to go back versions by just traversing the chain.

Browser support message

Since we don't support all browsers, we should have a good way to handle this case. Basically a modal.

Add map resize API

There should be a simple way to resize the map, and we should tie this into the window resize event to handle 100%/100% maps.

Have elements nested in map or a container div

In order for this to be embeddable, it shouldn't be dependent on owning the page. Likely this means another container element that's relatively positioned so that the absolute positions inside of it are constrained.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.