GithubHelp home page GithubHelp logo

nycplanning / labs-regional-viz Goto Github PK

View Code? Open in Web Editor NEW
6.0 9.0 1.0 4.06 MB

An interactive mapping experience that highlights regional planning data and trends.

License: Other

JavaScript 45.18% HTML 4.70% SCSS 41.75% Handlebars 8.37%
labs metro regional explorer

labs-regional-viz's Introduction

CircleCI

NYC Regional Visualization

An interactive mapping experience that highlights regional planning data and trends.

How we work

NYC Planning Labs takes on a single project at a time, working closely with our customers from concept to delivery in a matter of weeks. We conduct regular maintenance between larger projects.

Take a look at our sprint planning board to get an idea of our current priorities for this project.

How you can help

In the spirit of free software, everyone is encouraged to help improve this project. Here are some ways you can contribute.

  • Comment on or clarify issues
  • Report bugs
  • Suggest new features
  • Write or edit documentation
  • Write code (no patch is too small)
    • Fix typos
    • Add comments
    • Clean up code
    • Add new features

Read more about contributing.

Requirements

You will need the following things properly installed on your computer.

Local development

Testing and checks

  • ESLint - We use ESLint with Airbnb's rules for JavaScript projects

    • Add an ESLint plugin to your text editor to highlight broken rules while you code
    • You can also run eslint at the command line with the --fix flag to automatically fix some errors.
  • Testing

    • run ember test --serve
    • Before creating a Pull Request, make sure your branch is updated with the latest develop and passes all tests

Linting

  • npm run lint:hbs
  • npm run lint:js
  • npm run lint:js -- --fix

Building

  • ember build (development)
  • ember build --environment production (production)

Deployment

  • Create a Dokku remote: git remote add dokku dokku@{dokkudomain}:regional-viz
  • Deploy to Dokku: git push dokku master

Contact us

You can find us on Twitter at @nycplanninglabs, or comment on issues, and we'll follow up as soon as we can. If you'd like to send an email, use [email protected]

labs-regional-viz's People

Contributors

allthesignals avatar andycochran avatar chriswhong avatar daragoldberg avatar dependabot-preview[bot] avatar dependabot-support avatar dhochbaum-dcp avatar godfreyyeung avatar hannahkates avatar mike-carper avatar pichot avatar tangoyankee avatar trbmcginnis avatar tylermatteo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

fordhamedu

labs-regional-viz's Issues

Supporting Layers

Add two supporting layers:

  • Regional Rail lines and stations, simple symbology (no need to distinguish between carriers, etc)
  • Aerials - research options for a region-covering aerial tileset...

Add simple checkbox UI for these.

Load spinners

User Story

I want to see load spinners so I know something is happening after clicking

Description

We need load spinners to communicate that something is happening.

We need to decide whether to use tasks or promises or just use the normal loading substates

Idea: Add title bar when sidebar is closed

I think we need a more substantial title for the map when the sidebar is closed. With no sidebar, it's just a full screen webmap with a small legend, and I think adding a title bar near the top might make it clearer what the user is looking at.

Map-From-Id component getting bloated; refactor

  1. Find abstract cases and move into utilities (breaks, buildPaint)
  2. Move POJOs into top of component file or environment.js (highlightedFeatureLayer)
  3. Use array destructuring where possible (see line 73)

Add logic for excluding geometries to choropleth configs

There is logic for excluding geometries that are not significant from visualizations.

This issue is complete when all rules are followed:

Jobs:

  • Total Population - Municipality
  • Population Density - Municipality
  • Foreign Born - All
  • Prime Labor Force Change, Subregion and County

Housing

  • Total Housing Units - All
  • Housing Units Permitted - Municipality

Implement geography-level switching

Config should indicate which geography levels are available for a given narrative.

Switching geography levels is effectively hiding/showing maps.

Need to figure out how to add "non-primary" layers to maps, where are they defined, etc?

Not all narratives will not have the same options for geometry-level switching, the UI should be config-driven, need to add geometry level property to config.

Config should also indicate which geometry level is default for a narrative.

Basic tests

We should get like two tests in there because ppl are deploying broken apps to production

User sees an intro message on landing page

The default view of the app should show some introductory text about the app.

  • "Here's what this app does…"
  • "Something about People, Jobs, Housing…"
  • Should there be a map? If so, what's on it?

We can stub in some filler.
@daragoldberg to provide final copy.

Prototype JSON Config

We'd like the make the app 100% config-driven, so this issue exists to riff on what should be in a config to accomplish everything we need.

Users sees all maps (narrative or no) in site header menu.

Ack! I think we overthought the site-header looping through the maps. Every map should show up in the site header menu. It's only the narrative that should skip the ones with hasNarrative: false.

So this line:

{{#each-in (group-by "category" filteredMapLinks) as |category maps|}}

…can just be:

{{#each-in (group-by "category" model.maps) as |category maps|}}

…and we can remove the filteredMapLinks computed property.

/cc @allthesignals

User will see certain variables visualized at census tract geography, but clickable selection limited to closest corresponding municipality

The following variables would be visualized at the census tract geography, but census tract geography would not be selectable/has no corresponding profile. User click would correspond to the closest municipal geography (either boundary or within boundary):

Done:

Hou16 Total Housing Units, 2012-2016 5YR Average

  • HouO16 Owner-occupied Housing Units, 2012-2016 5YR Average
  • HouR16 Owner-occupied Housing Units, 2012-2016 5YR Average
  • HouV16 Owner-occupied Housing Units, 2012-2016 5YR Average

Still needs to be made:

EmTot15 Total Employment 2015
EmPr15 Total Private Employment 2015

  • EmOff15 Private Office-Based Employment 2015
  • EmIns15 Private Institutional Employment 2015
  • EmInd15 Private Industrial Employment 2015
  • EmSer15 Private Retail, Leisure and Hospitality Employment 2015
  • EmOth15 Private Other Services Employment 2015

Rapid clicking "Next" then "Previous" throws errors, breaks app

Certain race conditions with mapbox gl's map instance being loaded and the framework attempting to update attributes lends itself to some unpredictable error states with the app...

In this case, if a user rapidly clicks "next" several times, then clicks "previous", there will be issues about missing sources.

Add sourcing info

  • Implement source as a property in the configs
  • Find some real estate for source in the narrative sidebar

This is a source "note", with intent that there is better sourcing w/links on the About page.

About page content

  • Data sourcing + links
  • Content text from Dara
  • Download buttons for the data used in the maps

Add ESLint

ESLint rules aren't being enforced in the project. We should add those dependencies.

Site header menu shows categories and static pages

Currently, the site header menu lists all the map pages. It should instead show:

  • People
  • Jobs
  • Housing
  • About

Each of the map categories should have a dropdown which shows all the maps within that category so that the user can navigate directly to that map.

User can view multiple variables as integrated (and not stacked/layered) dot density maps at census tract geography for current year

The following variables can be visualized as integrated and NOT layered dot density maps, with different colors for each attribute but consistent density values:

  • Housing tenure - Owner occupied units (color 1), renter occupied units (color 2), vacant units (color 3)
  • Total Private Employment by Sector - Office (color 1), Institutional (color 2), Industrial (color 3), Local Services (color 4), Other Services (color 5)

Note, layered maps would misrepresent allocation of employment or units

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.