Giter Site home page Giter Site logo

datasf / open-data-explorer Goto Github PK

View Code? Open in Web Editor NEW
12.0 12.0 2.0 12.39 MB

To promote exploration and use of open data - currently in beta

Home Page: http://edge.explore.datasf.org

License: MIT License

JavaScript 78.22% CSS 20.64% HTML 0.32% Shell 0.81%
exploratory-data-analysis opendata transparency

open-data-explorer's People

Contributors

j9recurses avatar jasonlally avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

steveny2k mogaio

open-data-explorer's Issues

Need render chart when new dataset is selected.

This maybe logged somewhere else already. Previous chart gets rendered when you select a new dataset.

EX: I was looking at stop sign dataset. Went to look at Bike network dataset. When I clicked on the bike network dataset, the old stop signs charts were displayed.

screen shot 2016-05-23 at 12 29 38 pm

Decide on upper and lower bounds for filter columns

Similar to group by display issue....need to set bounds on columns that you can filter by.

For instance, in the film locations dataset, consider the following:
by writer --> filter by fun facts

Fun facts has like 100+ groups. Since there are so many potential values, filtering by a specific value in this column is unlikely yield any results.
screen shot 2016-05-23 at 1 14 11 pm

Removing filter options from a multi-select filter does not work as expected

This is another bug related to grouping and filtering that I'll try to fix all at once.

Basically when removing single elements from a multi-select list, the reducer chokes because it wants to merge the inputs, but it should actually be deleting from a copy of state and then returning that. The main fix should be in reducers/index.js

screen shot 2016-05-24 at 11 06 37 am

In the screenshot above, you can see it's showing 2 Outer Richmond values after trying to remove that category.

Adopt semantic versioning

Again, more of a workflow/code practice thing, but we should be intentional about this from the get go and just make sure we put it in the documentation. We can use tagging/releases to capture major, minor and patch releases.

http://semver.org/

Under this scheme we're under 0.1.0 until we finish MVP and then we will be 1.0.0-alpha.

Remove columns with null values from charts

Column with no values display as clickable option.

EX: In the film dataset, the column "Smile again Jenny Lee has no rows. We shouldn't display this as column that you can explore.

screen shot 2016-05-23 at 1 15 53 pm

Improve category based date filters

Date columns still visible in filter option drop down. Duplicates the date range filter.
Note: data column filters don't trigger an action/state change- so we should be able to just filter the text list getting passed to the dropdown
screen shot 2016-05-23 at 11 38 37 am

Consider using immutable.js to handle data immutably

While we can handle data immutably without immutable.js, the library does a lot things for us that are annoying to keep track of or handle.

For example, Object.assign({}, state, updatedState) can be used to make deep copies of objects, but it has interesting side effects. At this point, the code is simple enough that I'm not worried about this for the sprint, but as I've been working with reducers, I'm beginning to realize how immutable.js could help simplify issues related to treating data/state as immutable.

Should be easy enough to implement without too much code upheaval. I'll put this in the backlog for now.

Deep copy operations can be expensive so we should still apply common sense when updating state as we don't always need to create a copy for every action, but immutable.js could make our code simpler as we scale.

Roadmap to MVP

I'll flesh this out some more, but wanted to get a draft roadmap going so we can track overall progress. I'll also link to all of the collateral (wireframes, design specs as needed) for reference. This is just a list, we'll track the order/priority of these using issues and Zenhub.

Feature breakdown

Home page

  • Create home page structure/scaffolding
  • Build search component with autosuggestions

Dataset catalog search

  • Finish fine design on dataset cards
  • Finish fine design on facets
  • Determine data structure, fields and approach for loading datasets into search index

Dataset explorer

  • Finish fine design on persistent dataset information (title, description, basic metadata fields)
  • Create persistent related datasets footer just above site footer
  • Create tab for dataset overview
  • Create tab for dataset details
  • Create tab for charts
  • Create tab for map
  • Create tab for table preview

The following break down the dataset explorer into chunks of features

Related datasets

  • Develop approach to surfacing related datasets using existing infrastructure
  • Create components that show related datasets by certain dimensions (department, program (tag), etc.)

Overview

  • Create chart card component
  • Design parameterized URL structure for use in embeddable charts

Dataset Details

  • Develop component containing full metadata, including attachments when present
  • Develop field definition cards including name, type, stats based on type
  • Investigate Desk.com API
  • Develop component that shows any related knowledge base articles, if any

Charts

  • Rethink/redesign state and props for charts overall (evaluate what we really need in state, the structure of that, and introduce validated prop types)
  • Improve UI interaction for comparing one category against the rest
  • Create filter type: numeric
  • Create filter type: category
  • Create filter type: boolean
  • Create filter type: date/time
  • Develop filter selector + interaction
  • Develop legend component and place above chart - remove embedded legend
  • Develop dynamic titles/subtitles based on filters
  • Add clear x/y axes to charts
  • Add formatting filter for different numeric types ($, thousands separator, etc)
  • Add date/time fields to group by options
  • Develop group by transform for category vs. category field types
  • Add aggregation options where numeric types exist - sum, count
  • Create embed button component with easy copy link, simple JIT help content, and links to knowledge base articles as necessary (use in other components)
  • Introduce color into the column buttons to differentiate among column types
  • Create table option for charts and toggle bw table/chart
  • Hour, day, month, year toggles
  • Create sort by options for boolean charts (sort by total, sort by true, sort by false)

Embeds

  • Develop embed component that reuses the charting components and accepts parameters from url

Map

  • Develop approach to thematic mapping where a column exists representing the boundary
  • Develop approach to point-based maps
  • Develop approach to basic mapping of data stored as lines and polygons
  • Develop component that provides information to user on click of map feature
  • Develop component that allows searching by address
  • Develop basic query by radius and export to...functions (based on pd prototype)

Table Preview

  • Provide clearer UI indicator for sorting
  • Reuse field definition card component for on hover interaction for fields to provide JIT information

Blank categories aren't labeled

When categories are identified in the socrata middleware, we currently pass through null categories as blank. The impact of this is you can't then see them in filter options and more importantly, can't filter by those blank categories. The fix is pretty simple.

screen shot 2016-05-25 at 11 27 10 am

Add just in time context for fields on filter cards

Per issue #37 instead of adding in code to remove certain categorical dates, I think we should provide some context to the user as a first pass so they can make informed decisions about which date fields to use. I want to avoid introducing programmatic controls that remove a field from filters that may or may not be duplicative of another field as this could introduce issues later on as we look at more datasets.

This will also improve the ability for users to understand other columns as they interact with the charts and is easier to implement.

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.