Code Monkey home page Code Monkey logo

visualizer's Introduction

Police Brutality Visualizer โœŠ๐Ÿฟ

8 minutes and 46 seconds is the length of time associated with the killing of George Floyd, who died in police custody after police officer Derek Chauvin knelt on his neck for roughly eight minutes.

This app provides a heatmap visualization for the acts of assault by public servants to American Citizens during non-violent acts of protest.

Contributing

  • Install dependencies. A quick yarn install should do the trick โœจ
  • Add your Google Maps API key to map.js
  • To start the app you can run yarn run start

Dependencies

React @react-google-maps/api

visualizer's People

Contributors

brennan-pilcher avatar jkirkyuan avatar pedrowindisch avatar ryankwirth 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

Watchers

 avatar  avatar  avatar  avatar

visualizer's Issues

Zip Code Search w/ Radius

I personally would love a zip-code feature with an added radius option to show incidences that may be within, say, 30 miles of your front door. This would be especially helpful with municipalities within larger cities (i.e. Culver City, Los Angeles, CA)

[FEATURE] Display site icons for each link in SearchResult

Purpose

Showing icons for incident links in the search results provides a better overview of the available data.

๐Ÿ’ก Proposed Implementation:

  • Create a new div list in the SearchResult component
  • Populate the list with icons from the parseUrl(...) hook

A11y: keyboard navigation isn't working as expected

Description

The keyboard navigation isn't working as expected.

Current behavior

After pressing tab, the page focus on the search field. The user clicks enter and then the app starts fetching the articles. The first article is focused after pressing tab, but if the user presses it again, the app just opens the article up, which is not the correct behavior. I think this issue is better explained with a visual demonstration, so here's a short GIF I made showing what's happening right now.

This is happening because each result has an onKeyDown listener, which also captures the tab key.

Expected behavior

After the results are fetched and rendered, the user should be able to navigate through them by clicking tab or the arrow down key. If the user wants to open an article, he then would click enter. You can find more information about keyboard accessibility here.

[CHORE] Consolidate CSS colors into a single set of variables

Purpose

Currently, our color codes are scattered throughout component .css files, and there are quite a few identical ones in different components.

๐Ÿ’ก Proposed Implementation:

Create a single file consisting of light- and dark-mode colors defined as CSS variables. These should use the naming scheme from the Material Design color system, like colorPrimary, colorSecondary, colorSurface, etc.

This will allow future components to use a consistent set of colors and improve maintainability if a color needs to be tweaked.

Plot search results as pins on the map

Switch from heatmap-view to pin-view when searching. Ideally, mark each pin with its result number and show a corresponding number next to each result in the list.

[FIX] Zoom the map when searching by location

Purpose

Currently, clicking on the map causes it to pan/zoom to the nearest city and populate the Omnibox with its name. However, directly searching for a city/state does not have the same pan/zoom behaviour. This issue should address that asymmetry.

๐Ÿ’ก Proposed Implementation:

  • Create a context for sharing/setting the current search term from both the Omnibox and Map components
  • Remove the mapValue state in App in favor of the new context

[FEATURE] Add autocomplete in the Omnibox

Purpose

Autocomplete (or automatic suggestions) improve discoverability of key search terms and help users avoid common misspellings.

๐Ÿ’ก Proposed Implementation:

  • Create a context for sharing incidents throughout the component tree
  • Extract Fuse.js-related code from the Sidebar component into a separate hook
  • Create a dropdown list in the Omnibox component
  • Populate the dropdown list with results from the search hook when the input changes

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.