<commit_before># transaction-mappr

This is a [simple app](https://stark-shelf-3141.herokuapp.com/) with a clean interface for looking at correlations in a sample data set. The sample data set contains users, locations of users at certain times (like check-ins), and transactions.

The main parts of the interface include a ReactJS slider bar for changing the date, options for filtering different types of transactions, and a list of transactions (if there are any on a given day) next to a Google Maps visualization. Mouseover events on transaction list items cause corresponding user map markers to bounce, or else display a notification if no locations are available for that user on the selected date.

The user is the common thread between transactions and locations, so I made all AJAX calls to one of two controllers in the User controller, which functions as an API.

Any time a type of transaction is selected ("earning", "charge", or "both"), get requests are made to `/results`. The controller API expects a params object to be sent in the format of this example: `{date: "2015-1-23", filter: "earning"}`. The controller renders a JSON response in the format `{transactions: {}, locations: {}}`, where each value is object mapping `[user.id, user.name]` sets to arrays of their transactions/locations on the specified date. To keep these JSON objects lighter, the objects only include users who have transactions and/or locations on the given date.

The only other route is `/all`, which returns a JSON response with the same format, but includes all records.

Most of the logic is located in `app/assets/javascripts/myapp.js`. It contains a `myApp` variable with a number of controllers as properties. Many of the controllers are IIFE's to keep certain variables and functions private. For example, the AjaxCtrl has 6 main functions, but only one returned accessible function, `AjaxCtrl.request()`.

Below the `myApp` object is a section for initial configurations on document ready. This initializes the map, makes a reference to it accessible via `myApp`, and binds all relevant events.

The User controller is designed similarly, with few public methods and a number of modular private helper methods.

Interactive features include the slider bar for changing date, the filters in the nav bar, and the map markers.<commit_msg>Update README with new information<commit_after># transaction-mappr

This is a [simple app](https://stark-shelf-3141.herokuapp.com/) with a clean interface for looking at correlations in a sample data set. The sample data set contains users, locations of users at certain times (like check-ins), and transactions.

The main parts of the interface include a ReactJS slider bar for changing the date, options for filtering different types of transactions, and a list of transactions (if there are any on a given day) next to a Google Maps visualization. Clicking on a transaction list item toggles a `BOUNCE` animation on the corresponding user's location markers. If no locations are available for that user on the selected date, mouseover events bring up a notification.

The user is the common thread between transactions and locations, so I made all AJAX calls to one of two controllers in the User controller, which functions as an API.

Any time a type of transaction is selected ("earning", "charge", or "both"), `GET` requests are made to `/results`. The controller API expects a params object to be sent in the format of this example: `{date: "2015-01-23", filter: "earning"}`. The controller renders a JSON response in the format `{transactions: {}, locations: {}}`, where each value is object mapping `[user.id, user.name]` sets to arrays of their transactions/locations on the specified date. To keep these JSON objects lighter, the objects only include users who have transactions and/or locations on the given date.

The only other route is `/all`, which returns a JSON response with the same format, but includes all records.

Most of the logic is located in `app/assets/javascripts/myapp.js`. It contains a `myApp` object with a Model, View, and Controller (MVC).

Initial configurations on document ready are set in `app/assets/javascripts/initialize.js`. This initializes the map, makes a reference to it accessible via `myApp`, and binds all relevant events.

Interactive features include the slider bar for changing date, the filters in the nav bar, and the map markers.
{'fraction_non_alphanumeric': 0.058013544018058694, 'fraction_numerical': 0.005417607223476298, 'mean_word_length': 4.71741935483871, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3559642', 'n_tokens_mistral': 1068, 'n_tokens_neox': 1019, 'n_words': 673}