Code Monkey home page Code Monkey logo

idots's People

Contributors

johntigue avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

idots's Issues

Ionic as the CSS framework for the look&feel UI widgetry, esp. in the hybrids

Why ionic?

  • Hybrid app front end UI components (ala iOS and Android) for AngularJS
  • https://hacks.mozilla.org/2014/10/the-missing-sdk-for-hybrid-app-development/
    • "Rather than inventing yet another MVC, Ionic chose to build on top of AngularJS, which has proven itself to be a leader among popular front-end frameworks in the last few years. Ionic is backed by a large and active community, solid documentation, and its own command-line tool to increase productivity (the CLI isn’t required but is highly recommended). Ionic’s use of AngularJS directives to create the user-interface allows for fast development, but most importantly, it’s highly customizable, through its use of Sass and simple markup. If you’re unfamiliar with AngularJS, Ionic offers a great way to learn it quickly, via numerous examples and templates."
    • "Google’s Polymer project and Mozilla Brick are built on top of the cutting-edge Web Components specification."
      • I.e. just a bit ahead of the times. Polymer is best only on Android 4.4+; ionic is good on Android 4.0+
    • "I do not consider front-end frameworks, such as AngularJS, Ember, and Backbone to be hybrid app development frameworks. While I highly recommend front-end frameworks for large-scale app development, they’re focused on the logic, rather than the user interface."
    • "Frameworks like Twitter Bootstrap and Foundation offer a great user interface and responsive design capabilities. However, CSS frameworks focus on the UI and a responsive design pattern; but a UI alone still requires each developer to recreate the way a native app “works.”"

Data collection apps

For situations where folks are doing contact tracing or mapping incidents, the SQLite database is the place to store information collected until such time that servers can be connected to to upload the data. This is an Offline Mode issue, but is so very much not part of the first revision when all we are doing is read (i.e. visualization) not write (data collection).

When and if the time comes to get involved with that, doc it at:

https://github.com/JohnTigue/EbolaMapper/wiki/Offline-Mode

Work out how to keep data sources fresh

The HDX data set might well be the result of a whole lotta screen scraping. Bravo for making that happen but there has to be a better way. And how is the info kept fresh? Is it dated?

  • APIs, APIs, APIs.
  • Establish machinery for keeping data fresh

Define abstract data model, map it to JSON, CSV, etc.

There should be a JSON API/data-struct for outbreak data. This feels like it should be one of the major deliverables. Certainly there needs to be an abstract data model which gets mapped down to JSON, CSV, etc.

GeoJSON for weekly reports.

The Spec should enable the use of GeoJSON docs as weekly (or whatever period) reports. In this case there would be no outbreak root nor metadata, rather that info would need to go in the properties.

Perhaps a flat way of expressing sub-populations would be helpful. This would be borrowed from the CSV serialization?

Then folks could use a GeoJSON editor to write reports?

Outbreak Time Series raw data explorer widget

This is a conformance tester and GUI treeview explorer of an Outbreak Dashboard API resource. Enter and URL, or a chuck of CSV, or a chunk of JSON. Then explore the data in it's raw tree.

Someone could enter CSV and get JSON out.

Build on GeoJSON

This seems like the standard to work with for location and area data.

Spec: location issues

How does GeoJSON say: one data point, the world. i.e global report #s?
Seemingly GeoJSON CRSs can be used to point to both types of locations (country and maybe subdivision code, point):
http://geojson.org/geojson-spec.html#coordinate-reference-system-objects
This belief is supported by the following conversation:
http://gis.stackexchange.com/questions/15953/whats-up-with-the-geojson-spec-and-crs-as-a-irm

Note how treatment centers is available as geoJSON; clearly that is how to mark this up in JSON.

Points can represent cities and treatment centers. They can have UI label in the properties.

Bulls eye plots of deaths (cummulative vs. newish) in D3: those are d3.svg.symbol()s?

https://github.com/mbostock/d3/wiki/SVG-Shapes#symbol
"it is common to set one or more of the accessors using a function, such as setting the size proportional to a dimension of data for a scatterplot... D3's symbol generator is useful in conjunction with path elements because you can easily change the symbol type and size as a function of data."

I pose this issue as a question because I do not know if TWO circles can be the symbol, or only ONE is allowed.

It seems that only a few basic types are supported:
https://github.com/mbostock/d3/wiki/SVG-Shapes#symbol_type
circle - a circle.
cross - a Greek cross or plus sign.
diamond - a rhombus.
square - an axis-aligned square.
triangle-down - a downward-pointing equilateral triangle.
triangle-up - an upward-pointing equilateral triangle.

So, a bullseye is a concept on a level higher than symbol()?

Data source read machinery needs to be more forgiving

For the CSV data source case,
D3 docs say

The mime type of the request will be "text/csv"

Well, OK but what about if EbolaMapper.html is passed around by USB stick and loaded via file:// URLs? How do we get around that? Or what if in an http:// context the deployer simply doesn't know how to or cannot set the MIME type of the data file? There should be fall backs which try to load the data if the "text/csv" is not supplied.

Consider:

Standalone GeoJSON docs should point to their timeseries

If a GeoJSON doc is being used to to represent a latest-report, it's root metadata should point to the timeseries it is part of. So a clinic can crank out a, say weekly, report and publish it (email, blog, etc.) with a EbolaMapper viewer. The viewer will be able to link to the whole time series.

Initially this can be just an URL, but hopefully the whole metadata block can be use to aggregate these reports/slices together from across networks.

outbreak_time_series_reader: read and model multiple sources in one session

In order to decentralize the network, there should not be a dependence a single data feed or even the assumption that there will be an aggregator. The clients of a outbreak monitoring network should be able to aggregate their own information. This means being able to read from multiple sources during a client run session.

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.