{"action":"created","issue":{"url":"https://api.github.com/repos/rollerderby/scoreboard/issues/83","repository_url":"https://api.github.com/repos/rollerderby/scoreboard","labels_url":"https://api.github.com/repos/rollerderby/scoreboard/issues/83/labels{/name}","comments_url":"https://api.github.com/repos/rollerderby/scoreboard/issues/83/comments","events_url":"https://api.github.com/repos/rollerderby/scoreboard/issues/83/events","html_url":"https://github.com/rollerderby/scoreboard/pull/83","id":336057345,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk3NjAxODYy","number":83,"title":"Add File-based Runtime Loaded peanlty file","user":{"login":"official-sounding","id":1295669,"node_id":"MDQ6VXNlcjEyOTU2Njk=","avatar_url":"https://avatars3.githubusercontent.com/u/1295669?v=4","gravatar_id":"","url":"https://api.github.com/users/official-sounding","html_url":"https://github.com/official-sounding","followers_url":"https://api.github.com/users/official-sounding/followers","following_url":"https://api.github.com/users/official-sounding/following{/other_user}","gists_url":"https://api.github.com/users/official-sounding/gists{/gist_id}","starred_url":"https://api.github.com/users/official-sounding/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/official-sounding/subscriptions","organizations_url":"https://api.github.com/users/official-sounding/orgs","repos_url":"https://api.github.com/users/official-sounding/repos","events_url":"https://api.github.com/users/official-sounding/events{/privacy}","received_events_url":"https://api.github.com/users/official-sounding/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-06-27T02:41:50Z","updated_at":"2018-06-27T07:13:09Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/rollerderby/scoreboard/pulls/83","html_url":"https://github.com/rollerderby/scoreboard/pull/83","diff_url":"https://github.com/rollerderby/scoreboard/pull/83.diff","patch_url":"https://github.com/rollerderby/scoreboard/pull/83.patch"},"body":"Uses a Ruleset definition to point to a file in the config directory that defines a list of penalties.  Adds an endpoint in the JSON Servlet that supplies that file as a string to the frontend, and overhauled the pt & pt (color) views to use a direct ajax call (easily chachable later on) to load the file.  Defaults to the 2018 penalty file, and includes the previous version for posterity.  Added a few small unit tests around the SettingsModel.\r\n\r\nRationale for approach vs text string, etc:\r\n\r\n1. The WS-based delivery of penalty codes is over-complicated, the front-end needs to handle receiving repeated codes, etc.  hitting an endpoint to download a file is simpler and allows for potential caching\r\n2. using a JSON file to define the penalty codes makes it easier to edit than a text delimited string, especially when considering defining multiple penalty verbal cues per code, whether a penalty is expel-able, etc.\r\n3. Distributing an update to penalty codes/verbal cues becomes easier, as a user just needs to drop the file and repoint, instead of updating a potentially error-prone encoded text string in the ruleset editor.  My sense is that OffCom may make changes to verbal cues on a more frequent basis.\r\n4. Allows users to maintain multiple sets of penalties (say, during beta testing of 2019 rules) more efficiently, and potentially allows WFTDA or other governing bodies to distribute new penalty codes more efficiently.\r\n\r\nCloses #53 "},"comment":{"url":"https://api.github.com/repos/rollerderby/scoreboard/issues/comments/400567317","html_url":"https://github.com/rollerderby/scoreboard/pull/83#issuecomment-400567317","issue_url":"https://api.github.com/repos/rollerderby/scoreboard/issues/83","id":400567317,"node_id":"MDEyOklzc3VlQ29tbWVudDQwMDU2NzMxNw==","user":{"login":"frank-weinberg","id":34135287,"node_id":"MDQ6VXNlcjM0MTM1Mjg3","avatar_url":"https://avatars1.githubusercontent.com/u/34135287?v=4","gravatar_id":"","url":"https://api.github.com/users/frank-weinberg","html_url":"https://github.com/frank-weinberg","followers_url":"https://api.github.com/users/frank-weinberg/followers","following_url":"https://api.github.com/users/frank-weinberg/following{/other_user}","gists_url":"https://api.github.com/users/frank-weinberg/gists{/gist_id}","starred_url":"https://api.github.com/users/frank-weinberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frank-weinberg/subscriptions","organizations_url":"https://api.github.com/users/frank-weinberg/orgs","repos_url":"https://api.github.com/users/frank-weinberg/repos","events_url":"https://api.github.com/users/frank-weinberg/events{/privacy}","received_events_url":"https://api.github.com/users/frank-weinberg/received_events","type":"User","site_admin":false},"created_at":"2018-06-27T07:13:09Z","updated_at":"2018-06-27T07:13:09Z","author_association":"CONTRIBUTOR","body":"I find that rationale convincing (and hope to have time to review over the weekend)."}}
{"actor":{"display_login":"frank-weinberg"}}