Giter VIP home page Giter VIP logo

owlviewer's Introduction

owlviewer's People

Contributors

ppawel avatar samanpwbb avatar tmcw avatar wildintellect avatar yhahn avatar

Stargazers

 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

owlviewer's Issues

Tile loading indicator

Just a quick idea. While browsing the changeset map it is not always clear what state is the application in. There is a simple "loading..." status text but it does show the status of single tiles. I think it would be good to have some subtle (e.g. almost transparent) overlay for each tile which would show loading status (and perhaps even more information about that tile?).

`mousedown` doesn't work for touch devices

It's nice to use mousedown instead of click to close popups, but mousedown doesn't work on touch devices. At least not my iPad. There should be a fallback or something so it works across the board.

Duplicate requests are made for every tile

It can clearly be seen on the summary tiles because they are semi-transparent and you can see that they are loaded twice.

I suggest we switch back to @glenrobertson's leaflet-tilelayer-geojson as it has more features planned (aborting requests, merging together the same features from different tiles).

I added logging to the _loadTile methods and below is what I got - there are two calls to _loadTile for each tile.

loading geojson tile Point(15466, 29445)
loading geojson tile Point(15466, 29444)
loading geojson tile Point(15465, 29445)
loading geojson tile Point(15467, 29445)
loading geojson tile Point(15466, 29446)
loading geojson tile Point(15465, 29444)
loading geojson tile Point(15467, 29444)
loading geojson tile Point(15465, 29446)
loading geojson tile Point(15467, 29446)
loading geojson tile Point(15464, 29445)
loading geojson tile Point(15468, 29445)
loading geojson tile Point(15464, 29444)
loading geojson tile Point(15468, 29444)
loading geojson tile Point(15464, 29446)
loading geojson tile Point(15468, 29446)
loading geojson tile Point(15463, 29445)
loading geojson tile Point(15469, 29445)
loading geojson tile Point(15463, 29444)
loading geojson tile Point(15469, 29444)
loading geojson tile Point(15463, 29446)
loading geojson tile Point(15469, 29446)
loading geojson tile Point(15466, 29445)
loading geojson tile Point(15466, 29444)
loading geojson tile Point(15465, 29445)
loading geojson tile Point(15467, 29445)
loading geojson tile Point(15466, 29446)
loading geojson tile Point(15465, 29444)
loading geojson tile Point(15467, 29444)
loading geojson tile Point(15465, 29446)
loading geojson tile Point(15467, 29446)
loading geojson tile Point(15464, 29445)
loading geojson tile Point(15468, 29445)
loading geojson tile Point(15464, 29444)
loading geojson tile Point(15468, 29444)
loading geojson tile Point(15464, 29446)
loading geojson tile Point(15468, 29446)
loading geojson tile Point(15463, 29445)
loading geojson tile Point(15469, 29445)
loading geojson tile Point(15463, 29444)
loading geojson tile Point(15469, 29444)
loading geojson tile Point(15463, 29446)
loading geojson tile Point(15469, 29446)```

Points (nodes) are not rendered in changeset geometry

It's because the following code in the GeoJSON layer initialization:

 pointToLayer: function(featureData, latlng) {
        return new L.Polyline([latlng]);
    },

Apparently, polyline with one point is not rendered (as probably it is not valid).

Use regular JSON/CORS requests for browsers that support it

JSONP tile requests have a timestamp in them (see callback function name) and for that reason they are not cachable.

For browsers that support it (I guess that's anything other than IE?), regular JSON requests could be used. This may require adding CORS header(s) on OWL API server side.

Add interactions for changeset highlighting

Would love to be able to do the following:

  • Upon hovering over a changeset on the map or in the toolbar, highlight corresponding match.
  • On click, center map over changeset
  • On click, add persistent 'active' class to changeset in list
  • On click, bring changeset in list into view if it is out of view due to sidebar scroll.

Changeset list sorting

Changesets are not sorted properly since they come from different tiles and the list sorting currently depends on request/response ordering which is rather random..

Specify behavior/appearance for low zoom levels

Right now in OWL you can generate tiles for any zoom level. However, it does not really make sense to generate tiles for low zoom levels (1-8 or even further, 1-10 or 1-12, this is TBD as part of this task) since the geometry would probably cover the whole tile and be unusable, not to mention it would kill any web browser.

So, we need to think what to do about that. Some options:

  1. Original OWL did nothing - you had to zoom in to at least level 12 to see geometry.
  2. We could aggregate high zoom level tiles into low level zoom tiles to generate some kind of indication of "hot spots" or "activity spots" or whatever - areas with lots of (recent) mapping activity.
  3. ...? Any futher ideas?

Options (2) and potentially (3) would require some additional API but I think here in the owlviewer project we should talk mostly about behavior/appearance and API details can come later.

Smarter status notification

We need to add a 'loading' class to #changesets when we are actually loading things. Right now you get a permanent 'loading' message any time you have a empty changesets div, even if there aren't any changesets in the current view.

Write content for info popup

We need to refine content in the info popup. I see two things:

  • A jargon-free description of the project
  • Relevant links

Wrong marker tiles shown

Sometimes when you zoom out you get wrong data/marker tiles - e.g. marker tile over Europe shows 0 changesets. I think it has something to do with zooming quickly - looks like some requests/responses are spilling over from the old zoom level to the new.

Sometimes it can be reproduced just by opening this:

http://suncobalt.dyndns.org:8082/owlviewer/index.html#3/57.33/41.66

Note that because of settings in app.js, it zooms in at level 13 in London and then zooms out immediately because of settings in the hash.

Date formatting

We should format the date. Ideally we can set up the site to display local time. At the very least we should do...

Condense changeset entries more

@samanpwbb - changeset entries take up quite a bunch of valuable vertical space. Could this be more condensed?

I'm thinking

  • Slimmer padding
  • Pull up user name into date line

Concepts for a more useful sidebar

Here are three concepts for extending the usefulness of the sidebar.

First of all, as soon as feasible, we should de-emphasize the changeset ID and make the changeset comment the title of the changeset.

Secondly, it might be interesting to do a breakdown of the contents of changesets. Here's a simple approach that just lists numbers. On the other hand, we could do a visualization (with some sort of logarithmic scale) of the contents, with details on hover.

I actually keeping the listing view simple may be better. These additional details hurt overall scannability / legibilitiy of the listing. The best approach would be to keep the listing simple by default, and then implement an expanded view with more details on click, similar to the way tweets work on twitter. Look at the default vs expanded.

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.