Giter Site home page Giter Site logo

d3.cartodb's Introduction

d3.cartodb's People

Contributors

alonsogarciapablo avatar fdansv avatar javisantana avatar rochoa avatar xavijam 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

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

d3.cartodb's Issues

Change project name

As discussed with @rochoa, using d3's namespace probably isn't a great idea. Also, the scope of the library has broadened over the course of its development, and the d3 library is less of a protagonist nowadays.

Maybe call it VECNIK? Or something more generic like cartodb-vector.

Investigate blending modes

I'm finding contradictory information about browser compatibility in MDN and caniuse. Most blending modes seem to work fine in Chrome, although they seem to have some latency, so it's worth to profile it.

Tests should use src and not browserified file

At the moment tests are being run using the bundled library generated in ./dist/. This means running make after every change in the source while adding/editing tests. It'd be better to use the src files directly.

Restore setSQL

setSQL was part of the API before the refactor into a Leaflet layer. We should probably restore it to manipulate the query.

Uncaught TypeError: Cannot set property 'tilePoint' of undefined

I'm getting the following error:

Uncaught TypeError: Cannot set property 'tilePoint' of undefined

On this line.

For some reason, f.properties is undefined on some cases. Example (using the populated places dataset):

{
  "scalerank": "6",
  "natscale": "30",
  "labelrank": "8",
  "featurecla": "Populated place",
  "name": "Nord",
  "namepar": "",
  "namealt": "",
  "diffascii": "0",
  "nameascii": "Nord",
  "adm0cap": "0",
  "capalt": "0",
  "capin": "",
  "worldcity": "0",
  "megacity": "0",
  "sov0name": "Denmark",
  "sov_a3": "DNK",
  "adm0name": "Greenland",
  "adm0_a3": "GRL",
  "adm1name": "Nationalparken",
  "iso_a2": "GL",
  "note": "",
  "latitude": "81.7166257927",
  "longitude": "-17.8000352391",
  "changed": "1",
  "namediff": "1",
  "diffnote": "Added place.",
  "pop_max": "10",
  "pop_min": "10",
  "pop_other": "0",
  "rank_max": "1",
  "rank_min": "1",
  "geonameid": "-1",
  "meganame": "",
  "ls_name": "",
  "ls_match": "2",
  "checkme": "0",
  "cartodb_id": 5370,
  "created_at": "2014-10-19 00:00:00+00",
  "updated_at": "2014-10-19 00:00:00+00",
  "tilePoint": "2:1:0"
}

Fix conditional styles

At some point during these improvements/refactors I broke conditional styling. Fix it.

Investigate overzooming with SVG tiles

Right now tiles disappear when zooming, to reappear when their loading is complete. Is it possible to do some sort of overzooming as the view zooms/the tiles are not loaded?

Frontend analysis

Filters

  • Range: min, max
  • Category: accept, reject

Category aggregation

  • column, aggregation formula, aggregation column: start with count

Histogram aggregation

  • count distribution

Use TopoJSON on rendering

Since we're now using tiles instead of querying the whole dataset, it seems logic to stop projecting geometries and worry about positions at a tile level, and using TopoJSON makes a lot of sense for this. The procedure would be to keep receiving geojson from the server and convert each tile on the client with mbostock/topojson.

Blocked by:

  • #3 Add browserify support

Provide ways to know if features have been loaded, when they have changed, and get features for a given sublayer

As a user of the L.CartoDBd3Layer I want to able to:

  1. Get notified when the features have been loaded or have changed (eg: initially, when the URL has been updated, or every time a filter has been applied).

    layer.bind('featuresChanged, function (features) {
       // I can work with the features
    });
    
  2. Have a way to check if features have been loaded and be able to extract the features that have been previously loaded.

    if (layer.featuresLoaded()) {
      var features = layer.getFeatures();
      // use the features to get a list of categories, calculate the result of a formula, etc.
    )} else {
      // wait until features have been loaded/changed
      layer.bind('featuresChanged', function () {
        ...
      });
    }
    

@fdansv @rochoa @javisantana what do you guys think?

module.export

We need to review what we should export. In other words: what the public API must be.

Code style/linting

Use a more consistent code style:

  • tabs vs spaces
  • unused vars
  • add jshint or any other linter

Decouple renderer from Leaflet

  • Stop extending L.class.
  • Remove previous layer-related calls.
  • Remove uses of Leaflet helper functions (projection mostly).

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.