{"action":"created","comment":{"url":"https://api.github.com/repos/ICTU/quality-report/pulls/comments/126299823","pull_request_review_id":48772910,"id":126299823,"diff_hunk":"@@ -15,489 +15,145 @@\n \n import $ from 'jquery';\n import 'bootstrap/dist/js/bootstrap';\n+import React from 'react';\n+import ReactDOM from 'react-dom';\n+\n import 'bootstrap/dist/css/bootstrap.css';\n import '../css/quality_report.css';\n-import {create_dashboard_table, dashboard_rows, dashboard_columns} from '../js/dashboard_table.js';\n-import {create_sections, create_navigation_menu_items, status_counts} from '../js/sections.js';\n-import {read_cookie, write_cookie} from '../js/cookie.js';\n-import {intersection, format_date_time, strip_brackets} from '../js/utils.js';\n-import {parse_history_json} from '../js/history.js';\n-import {draw_pie_chart} from '../js/pie_chart.js';\n-import {draw_area_chart} from '../js/area_chart.js';\n-import '../js/compatibility.js';\n-\n-/*\n-Some event handlers are generated using closures. See\n-http://stackoverflow.com/questions/3495679/passing-parameters-in-javascript-onclick-event\n-*/\n-\n-google.setOnLoadCallback(function() {create_dashboard()});\n-google.load('visualization', '1', {'packages': ['corechart', 'table']});\n-\n-var settings = [];\n-var tables = [];\n-var trend_data_loaded = false;\n-\n-var COLOR_PERFECT = '#45E600';\n-var COLOR_GREEN = '#4CC417';\n-var COLOR_YELLOW = '#FDFD90';\n-var COLOR_RED = '#FC9090';\n-var COLOR_GREY = '#808080';\n-var COLOR_MISSING = '#F0F0F0';\n-var BG_COLOR_PERFECT = '#EDFFE6';\n-var BG_COLOR_GREEN = '#E6F8E0';\n-var BG_COLOR_YELLOW = '#F8F8C0';\n-var BG_COLOR_RED = '#F8E0E0';\n-var BG_COLOR_GREY = '#CCCCCC';\n-var BG_COLOR_MISSING = '#F8F8F8';\n-\n-// Column indices. FIXME: lookup instead of hard coding.\n-\n-var METRICS_COLUMN_SECTION = 1;\n-var METRICS_COLUMN_STATUS_TEXT = 2;\n-var METRICS_COLUMN_TREND = 3;\n-var METRICS_COLUMN_STATUS_ICON = 4;\n-var METRICS_COLUMN_MEASUREMENT = 5;\n-var METRICS_COLUMN_NORM = 6;\n-var METRICS_COLUMN_COMMENT = 7;\n-\n-function create_dashboard() {\n-    read_settings_from_cookies();\n-    create_metrics_table();\n-    create_event_handlers();\n-    set_indicators();\n-\n-    // Retrieve the metrics for the metrics table after the sections have been loaded.\n-    $.getJSON(\"json/metrics.json\", \"\", function(metrics_data) {\n-        $(\"#sections\").append(create_dashboard_table(metrics_data[\"dashboard\"]));\n-        $(\"#sections\").append(create_sections(metrics_data[\"sections\"]));\n-        $('#navigation_menu_items').append(create_navigation_menu_items(metrics_data['sections']));\n-        fill_metrics_table(metrics_data);\n-        set_report_date(new Date(...metrics_data[\"report_date\"]));\n-        $(\"#hq_version\").html(metrics_data[\"hq_version\"]);\n-        $(\".report_title\").html(metrics_data[\"report_title\"]);\n-        draw_section_summary_charts(metrics_data);\n-        hide('#loading');\n-        show('#sections');\n-    });\n-\n-    // Retrieve the files for the menu's\n-    $.getJSON(\"json/meta_data.json\", \"\", function(meta_data) {\n-        create_domain_objects_table(meta_data['domain_objects']);\n-        create_requirements_table(meta_data['requirements']);\n-        create_metric_classes_table(meta_data['metrics']);\n-        create_metric_sources_table(meta_data['metric_sources']);\n-    });\n-}\n-\n-function create_metrics_table() {\n-    var metrics = new google.visualization.DataTable();\n-    window.metrics = metrics;\n-    metrics.addColumn('string', 'ID');\n-    metrics.addColumn('string', 'Section');\n-    metrics.addColumn('string', 'Status text');\n-    metrics.addColumn('string', 'Trend');\n-    metrics.addColumn('string', 'Status');\n-    metrics.addColumn('string', 'Meting');\n-    metrics.addColumn('string', 'Norm');\n-    metrics.addColumn('string', 'Toelichting');\n-}\n \n-function fill_metrics_table(metrics_data) {\n-    window.metrics.addRows(metrics_data[\"metrics\"]);\n-    color_metrics(BG_COLOR_PERFECT, BG_COLOR_GREEN, BG_COLOR_YELLOW, BG_COLOR_RED, BG_COLOR_GREY, BG_COLOR_MISSING);\n-    tables.all = new google.visualization.Table(document.getElementById('table_all'));\n-    google.visualization.events.addListener(tables.all, 'sort', save_sort_order);\n-    metrics_data[\"sections\"].forEach(function(section) {\n-        var section_id = section[\"id\"];\n-        tables[section_id] = new google.visualization.Table(document.getElementById('table_' + section_id));\n-        google.visualization.events.addListener(tables[section_id], 'sort', save_sort_order);\n-    });\n-    show_or_hide_dashboard();\n-    draw_tables(tables);\n-}\n+import {NavBar} from 'components/navbar.js';\n+import {MainContainer} from 'components/main_container.js';\n+import {DomainObjectsTable, RequirementsTable, MetricClassesTable,\n+        MetricSourcesTable} from 'components/meta_data_table.js';\n+import {LoadingMessage} from 'widgets/loading_message.js';\n \n-function create_domain_objects_table(domain_objects) {\n-    var table_rows = [table_heading(\"In dit rapport?\", \"Domeinobject (<code><small>Identifier</small></code>)\",\n-                                    \"Default eisen\", \"Optionele eisen\")];\n-    $.each(domain_objects, function(index, domain_object) {\n-        var icon = check_icon(domain_object);\n-        var title = meta_data_title(domain_object);\n-        var default_requirements = domain_object['default_requirements'].sort().join(', ');\n-        var optional_requirements = domain_object['optional_requirements'].sort().join(', ');\n-        table_rows.push(table_row(icon, title, default_requirements, optional_requirements));\n-    });\n-    create_meta_data_table('#domain_object_classes', table_rows);\n-}\n \n-function create_requirements_table(requirements) {\n-    var table_rows = [table_heading(\"In dit rapport?\", \"Eis (<code><small>Identifier</small></code>)\", \"Metrieken\")];\n-    $.each(requirements, function(index, requirement) {\n-        var icon = check_icon(requirement);\n-        var title = meta_data_title(requirement);\n-        var metrics = requirement['metrics'].sort().join(', ');\n-        table_rows.push(table_row(icon, title, metrics));\n-    });\n-    create_meta_data_table('#requirements', table_rows);\n-}\n+$(document).ready(create_dashboard);\n \n-function create_metric_classes_table(metric_classes) {\n-    var table_rows = [table_heading(\"In dit rapport?\", \"Metriek (<code><small>Identifier</small></code>)\", \"Norm\")];\n-    $.each(metric_classes, function(index, metric_class) {\n-        var icon = check_icon(metric_class);\n-        var title = meta_data_title(metric_class);\n-        table_rows.push(table_row(icon, title, metric_class['norm']));\n-    });\n-    create_meta_data_table('#metric_classes', table_rows);\n-}\n \n-function create_metric_sources_table(metric_sources) {\n-    var table_rows = [table_heading(\"In dit rapport?\", \"Metriekbron (<code><small>Identifier</small></code>)\",\n-                                    \"Instanties\")];\n-    $.each(metric_sources, function(index, metric_source) {\n-        var icon = check_icon(metric_source);\n-        var title = meta_data_title(metric_source);\n-        var urls = [];\n-        $.each(metric_source['urls'], function(index, url) {\n-            urls.push('<a href=\"' + url + '\" target=\"_blank\">' + url + '</a>');\n-        });\n-        table_rows.push(table_row(icon, title, urls.join('<br/>')));\n-    });\n-    create_meta_data_table('#metric_sources', table_rows);\n-}\n-\n-function check_icon(meta_data_item) {\n-    return meta_data_item['included'] ? '<span aria-hidden=\"true\" class=\"glyphicon glyphicon-ok\"></span>' : '';\n-}\n-\n-function meta_data_title(meta_data_item) {\n-    return meta_data_item['name'] + ' (<code><small>' + meta_data_item['id'] + '</small></code>)';\n-}\n-\n-function table_heading(...headers) {\n-    return '<tr><th>' + headers.join('</th><th>') + '</th></tr>';\n-}\n-\n-function table_row(...items) {\n-    return '<tr><td>' + items.join(\"</td><td>\") + '</td></tr>';\n-}\n-\n-function create_meta_data_table(element_id, table_rows) {\n-    $(element_id).append(\n-        $('<table/>', {'class': 'table table-striped first-col-centered', html: table_rows.join(\"\")}));\n-}\n-\n-function read_settings_from_cookies() {\n-    settings.filter_color = read_cookie('filter_color', 'filter_color_all');\n-    settings.show_dashboard = read_cookie('show_dashboard', 'true') === 'true';\n-    settings.show_multiple_tables = read_cookie('show_multiple_tables', 'true') === 'true';\n-    settings.table_sort_column = parseInt(read_cookie('table_sort_column', '0'), 10);\n-    settings.table_sort_ascending = read_cookie('table_sort_ascending', 'true') === 'true';\n-}\n-\n-function create_event_handlers() {\n-    fix_navigation_links();\n-\n-    // Event handler for the tabs\n-    $('#trend_tab').click(function() {\n-        // Retrieve the history for the meta metrics history charts.\n-        activate_parent('#trend_tab');\n-        show('#metrics_tab');\n-        hide('#navigation_menu');\n-        show('#trend_navigation_menu');\n-        hide('#trend_tab');\n-        hide('#sections');\n-        hide(\"#toon_menu\");\n-        if (trend_data_loaded) {\n-            show('#trend_graphs');\n-        } else {\n-            show('#loading');\n-            $.getJSON(\"json/meta_history.json\", \"\", function(history_json) {\n-                draw_area_charts(parse_history_json(history_json));\n-                trend_data_loaded = true;\n-                hide('#loading');\n-                show('#trend_graphs');\n-            });\n+class App extends React.Component {\n+    constructor() {\n+        super();\n+        let state = {\n+            metrics_data: 'loading', tab: 'metrics_tab', show_one_table: false, show_dashboard: true,\n+            metrics: [], filter_color: this.filter_all(true)\n         };\n-    });\n-\n-    $('#metrics_tab').click(function() {\n-        hide('#metrics_tab');\n-        deactivate_parent('#trend_tab');\n-        hide('#loading');\n-        show(\"#navigation_menu\");\n-        hide('#trend_navigation_menu');\n-        show('#trend_tab');\n-        show('#sections');\n-        hide('#trend_graphs');\n-        show(\"#toon_menu\");\n-    });\n-\n-    // Event handler for the (Toon) \"Dashboard\" menu item\n-    $('#show_dashboard').click(function() {\n-        switch_toggle('show_dashboard', function() {\n-            show_or_hide_dashboard();\n-        });\n-    });\n-\n-    // Event handler for the \"Tabel per product/team\" menu item\n-    $('#show_multiple_tables').click(function() {\n-        switch_toggle('show_multiple_tables', function() {\n-            draw_tables(tables);\n-        });\n-    });\n-\n-    // Event handlers for the filter by color menu items.\n-    $('#filter_color_all').click(function() {\n-        set_filter('filter_color', 'filter_color_all', tables)\n-    });\n-    $('#filter_color_red_and_yellow').click(function() {\n-        set_filter('filter_color', 'filter_color_red_and_yellow', tables)\n-    });\n-    $('#filter_color_grey').click(function() {\n-        set_filter('filter_color', 'filter_color_grey', tables)\n-    });\n-    $('#filter_color_missing_source').click(function() {\n-        set_filter('filter_color', 'filter_color_missing_source', tables)\n-    });\n-    $('#filter_color_missing').click(function() {\n-        set_filter('filter_color', 'filter_color_missing', tables)\n-    });\n-}\n-\n-function set_indicators() {\n-    set_radio_indicator('filter_color', settings.filter_color);\n-    set_check_indicator('show_dashboard', settings.show_dashboard);\n-    set_check_indicator('show_multiple_tables', settings.show_multiple_tables);\n-}\n-\n-function save_sort_order(event) {\n-    // Save the sort order. We use the same sort order for each column.\n-    var column = event.column;\n-    settings.table_sort_column = column;\n-    settings.table_sort_ascending = event.ascending;\n-    write_cookie('table_sort_column', column.toString());\n-    write_cookie('table_sort_ascending', event.ascending.toString());\n-    draw_tables(tables);\n-}\n-\n-function switch_toggle(toggle, refresh) {\n-    settings[toggle] = !settings[toggle];\n-    write_cookie(toggle, settings[toggle].toString());\n-    set_check_indicator(toggle, settings[toggle]);\n-    refresh();\n-}\n-\n-function set_filter(filter, filter_value, tables) {\n-    settings[filter] = filter_value;\n-    write_cookie(filter, filter_value);\n-    set_radio_indicator(filter, filter_value);\n-    draw_tables(tables);\n-}\n-\n-function color_metrics(color_perfect, color_green, color_yellow, color_red, color_grey, color_missing) {\n-    var numberOfColumns = window.metrics.getNumberOfColumns();\n-    var statusToColor = {'perfect': color_perfect, 'green': color_green, 'yellow': color_yellow, 'red': color_red,\n-                         'grey': color_grey, 'missing': color_missing, 'missing_source': color_missing};\n-    for (var row_index = 0; row_index < window.metrics.getNumberOfRows(); row_index++) {\n-        var bg_color = statusToColor[window.metrics.getValue(row_index, METRICS_COLUMN_STATUS_TEXT)];\n-        for (var column_index = 0; column_index < numberOfColumns; column_index++) {\n-            var style = 'background-color: ' + bg_color;\n-            if (column_index === METRICS_COLUMN_TREND || column_index === METRICS_COLUMN_STATUS_ICON) {\n-                style += '; text-align: center';\n-            }\n-            window.metrics.setProperty(row_index, column_index, 'style', style);\n-        }\n+        const cached_settings = JSON.parse(localStorage.getItem('settings'));\n+        if (cached_settings) {\n+            Object.assign(state, cached_settings);\n+        };","path":"frontend/js/dashboard.js","position":315,"original_position":315,"commit_id":"5c70777e9b4ab21fc8577690ce4aa6f250813e74","original_commit_id":"5c70777e9b4ab21fc8577690ce4aa6f250813e74","user":{"login":"codacy-bot","id":19940114,"avatar_url":"https://avatars2.githubusercontent.com/u/19940114?v=3","gravatar_id":"","url":"https://api.github.com/users/codacy-bot","html_url":"https://github.com/codacy-bot","followers_url":"https://api.github.com/users/codacy-bot/followers","following_url":"https://api.github.com/users/codacy-bot/following{/other_user}","gists_url":"https://api.github.com/users/codacy-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/codacy-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codacy-bot/subscriptions","organizations_url":"https://api.github.com/users/codacy-bot/orgs","repos_url":"https://api.github.com/users/codacy-bot/repos","events_url":"https://api.github.com/users/codacy-bot/events{/privacy}","received_events_url":"https://api.github.com/users/codacy-bot/received_events","type":"User","site_admin":false},"body":"![Codacy](https://www.codacy.com/assets/images/favicon.png) Issue found: [Unnecessary semicolon. (no-extra-semi)](https://www.codacy.com/app/frank_10/quality-report/pullRequest?prid=758564)","created_at":"2017-07-09T09:11:51Z","updated_at":"2017-07-09T09:11:51Z","html_url":"https://github.com/ICTU/quality-report/pull/86#discussion_r126299823","pull_request_url":"https://api.github.com/repos/ICTU/quality-report/pulls/86","_links":{"self":{"href":"https://api.github.com/repos/ICTU/quality-report/pulls/comments/126299823"},"html":{"href":"https://github.com/ICTU/quality-report/pull/86#discussion_r126299823"},"pull_request":{"href":"https://api.github.com/repos/ICTU/quality-report/pulls/86"}}},"pull_request":{"url":"https://api.github.com/repos/ICTU/quality-report/pulls/86","id":129406133,"html_url":"https://github.com/ICTU/quality-report/pull/86","diff_url":"https://github.com/ICTU/quality-report/pull/86.diff","patch_url":"https://github.com/ICTU/quality-report/pull/86.patch","issue_url":"https://api.github.com/repos/ICTU/quality-report/issues/86","number":86,"state":"open","locked":false,"title":"Stop using google charts","user":{"login":"fniessink","id":3530545,"avatar_url":"https://avatars1.githubusercontent.com/u/3530545?v=3","gravatar_id":"","url":"https://api.github.com/users/fniessink","html_url":"https://github.com/fniessink","followers_url":"https://api.github.com/users/fniessink/followers","following_url":"https://api.github.com/users/fniessink/following{/other_user}","gists_url":"https://api.github.com/users/fniessink/gists{/gist_id}","starred_url":"https://api.github.com/users/fniessink/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fniessink/subscriptions","organizations_url":"https://api.github.com/users/fniessink/orgs","repos_url":"https://api.github.com/users/fniessink/repos","events_url":"https://api.github.com/users/fniessink/events{/privacy}","received_events_url":"https://api.github.com/users/fniessink/received_events","type":"User","site_admin":false},"body":"","created_at":"2017-07-07T13:36:30Z","updated_at":"2017-07-09T09:11:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"bc3e29cdeb370801d43bdedd81ec65c659ec1485","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/ICTU/quality-report/pulls/86/commits","review_comments_url":"https://api.github.com/repos/ICTU/quality-report/pulls/86/comments","review_comment_url":"https://api.github.com/repos/ICTU/quality-report/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ICTU/quality-report/issues/86/comments","statuses_url":"https://api.github.com/repos/ICTU/quality-report/statuses/5c70777e9b4ab21fc8577690ce4aa6f250813e74","head":{"label":"ICTU:stop-using-google-charts","ref":"stop-using-google-charts","sha":"5c70777e9b4ab21fc8577690ce4aa6f250813e74","user":{"login":"ICTU","id":6009701,"avatar_url":"https://avatars2.githubusercontent.com/u/6009701?v=3","gravatar_id":"","url":"https://api.github.com/users/ICTU","html_url":"https://github.com/ICTU","followers_url":"https://api.github.com/users/ICTU/followers","following_url":"https://api.github.com/users/ICTU/following{/other_user}","gists_url":"https://api.github.com/users/ICTU/gists{/gist_id}","starred_url":"https://api.github.com/users/ICTU/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ICTU/subscriptions","organizations_url":"https://api.github.com/users/ICTU/orgs","repos_url":"https://api.github.com/users/ICTU/repos","events_url":"https://api.github.com/users/ICTU/events{/privacy}","received_events_url":"https://api.github.com/users/ICTU/received_events","type":"Organization","site_admin":false},"repo":{"id":16836834,"name":"quality-report","full_name":"ICTU/quality-report","owner":{"login":"ICTU","id":6009701,"avatar_url":"https://avatars2.githubusercontent.com/u/6009701?v=3","gravatar_id":"","url":"https://api.github.com/users/ICTU","html_url":"https://github.com/ICTU","followers_url":"https://api.github.com/users/ICTU/followers","following_url":"https://api.github.com/users/ICTU/following{/other_user}","gists_url":"https://api.github.com/users/ICTU/gists{/gist_id}","starred_url":"https://api.github.com/users/ICTU/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ICTU/subscriptions","organizations_url":"https://api.github.com/users/ICTU/orgs","repos_url":"https://api.github.com/users/ICTU/repos","events_url":"https://api.github.com/users/ICTU/events{/privacy}","received_events_url":"https://api.github.com/users/ICTU/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ICTU/quality-report","description":"HQ - Holistic Software Quality Reporting","fork":false,"url":"https://api.github.com/repos/ICTU/quality-report","forks_url":"https://api.github.com/repos/ICTU/quality-report/forks","keys_url":"https://api.github.com/repos/ICTU/quality-report/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ICTU/quality-report/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ICTU/quality-report/teams","hooks_url":"https://api.github.com/repos/ICTU/quality-report/hooks","issue_events_url":"https://api.github.com/repos/ICTU/quality-report/issues/events{/number}","events_url":"https://api.github.com/repos/ICTU/quality-report/events","assignees_url":"https://api.github.com/repos/ICTU/quality-report/assignees{/user}","branches_url":"https://api.github.com/repos/ICTU/quality-report/branches{/branch}","tags_url":"https://api.github.com/repos/ICTU/quality-report/tags","blobs_url":"https://api.github.com/repos/ICTU/quality-report/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ICTU/quality-report/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ICTU/quality-report/git/refs{/sha}","trees_url":"https://api.github.com/repos/ICTU/quality-report/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ICTU/quality-report/statuses/{sha}","languages_url":"https://api.github.com/repos/ICTU/quality-report/languages","stargazers_url":"https://api.github.com/repos/ICTU/quality-report/stargazers","contributors_url":"https://api.github.com/repos/ICTU/quality-report/contributors","subscribers_url":"https://api.github.com/repos/ICTU/quality-report/subscribers","subscription_url":"https://api.github.com/repos/ICTU/quality-report/subscription","commits_url":"https://api.github.com/repos/ICTU/quality-report/commits{/sha}","git_commits_url":"https://api.github.com/repos/ICTU/quality-report/git/commits{/sha}","comments_url":"https://api.github.com/repos/ICTU/quality-report/comments{/number}","issue_comment_url":"https://api.github.com/repos/ICTU/quality-report/issues/comments{/number}","contents_url":"https://api.github.com/repos/ICTU/quality-report/contents/{+path}","compare_url":"https://api.github.com/repos/ICTU/quality-report/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ICTU/quality-report/merges","archive_url":"https://api.github.com/repos/ICTU/quality-report/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ICTU/quality-report/downloads","issues_url":"https://api.github.com/repos/ICTU/quality-report/issues{/number}","pulls_url":"https://api.github.com/repos/ICTU/quality-report/pulls{/number}","milestones_url":"https://api.github.com/repos/ICTU/quality-report/milestones{/number}","notifications_url":"https://api.github.com/repos/ICTU/quality-report/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ICTU/quality-report/labels{/name}","releases_url":"https://api.github.com/repos/ICTU/quality-report/releases{/id}","deployments_url":"https://api.github.com/repos/ICTU/quality-report/deployments","created_at":"2014-02-14T12:39:18Z","updated_at":"2017-05-18T14:51:12Z","pushed_at":"2017-07-09T09:09:57Z","git_url":"git://github.com/ICTU/quality-report.git","ssh_url":"git@github.com:ICTU/quality-report.git","clone_url":"https://github.com/ICTU/quality-report.git","svn_url":"https://github.com/ICTU/quality-report","homepage":"http://ictu.github.io/quality-report/","size":4438,"stargazers_count":5,"watchers_count":5,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":4,"mirror_url":null,"open_issues_count":30,"forks":4,"open_issues":30,"watchers":5,"default_branch":"master"}},"base":{"label":"ICTU:master","ref":"master","sha":"09ac453b3bc694a3c505b04a33d01640a366b4d7","user":{"login":"ICTU","id":6009701,"avatar_url":"https://avatars2.githubusercontent.com/u/6009701?v=3","gravatar_id":"","url":"https://api.github.com/users/ICTU","html_url":"https://github.com/ICTU","followers_url":"https://api.github.com/users/ICTU/followers","following_url":"https://api.github.com/users/ICTU/following{/other_user}","gists_url":"https://api.github.com/users/ICTU/gists{/gist_id}","starred_url":"https://api.github.com/users/ICTU/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ICTU/subscriptions","organizations_url":"https://api.github.com/users/ICTU/orgs","repos_url":"https://api.github.com/users/ICTU/repos","events_url":"https://api.github.com/users/ICTU/events{/privacy}","received_events_url":"https://api.github.com/users/ICTU/received_events","type":"Organization","site_admin":false},"repo":{"id":16836834,"name":"quality-report","full_name":"ICTU/quality-report","owner":{"login":"ICTU","id":6009701,"avatar_url":"https://avatars2.githubusercontent.com/u/6009701?v=3","gravatar_id":"","url":"https://api.github.com/users/ICTU","html_url":"https://github.com/ICTU","followers_url":"https://api.github.com/users/ICTU/followers","following_url":"https://api.github.com/users/ICTU/following{/other_user}","gists_url":"https://api.github.com/users/ICTU/gists{/gist_id}","starred_url":"https://api.github.com/users/ICTU/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ICTU/subscriptions","organizations_url":"https://api.github.com/users/ICTU/orgs","repos_url":"https://api.github.com/users/ICTU/repos","events_url":"https://api.github.com/users/ICTU/events{/privacy}","received_events_url":"https://api.github.com/users/ICTU/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ICTU/quality-report","description":"HQ - Holistic Software Quality Reporting","fork":false,"url":"https://api.github.com/repos/ICTU/quality-report","forks_url":"https://api.github.com/repos/ICTU/quality-report/forks","keys_url":"https://api.github.com/repos/ICTU/quality-report/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ICTU/quality-report/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ICTU/quality-report/teams","hooks_url":"https://api.github.com/repos/ICTU/quality-report/hooks","issue_events_url":"https://api.github.com/repos/ICTU/quality-report/issues/events{/number}","events_url":"https://api.github.com/repos/ICTU/quality-report/events","assignees_url":"https://api.github.com/repos/ICTU/quality-report/assignees{/user}","branches_url":"https://api.github.com/repos/ICTU/quality-report/branches{/branch}","tags_url":"https://api.github.com/repos/ICTU/quality-report/tags","blobs_url":"https://api.github.com/repos/ICTU/quality-report/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ICTU/quality-report/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ICTU/quality-report/git/refs{/sha}","trees_url":"https://api.github.com/repos/ICTU/quality-report/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ICTU/quality-report/statuses/{sha}","languages_url":"https://api.github.com/repos/ICTU/quality-report/languages","stargazers_url":"https://api.github.com/repos/ICTU/quality-report/stargazers","contributors_url":"https://api.github.com/repos/ICTU/quality-report/contributors","subscribers_url":"https://api.github.com/repos/ICTU/quality-report/subscribers","subscription_url":"https://api.github.com/repos/ICTU/quality-report/subscription","commits_url":"https://api.github.com/repos/ICTU/quality-report/commits{/sha}","git_commits_url":"https://api.github.com/repos/ICTU/quality-report/git/commits{/sha}","comments_url":"https://api.github.com/repos/ICTU/quality-report/comments{/number}","issue_comment_url":"https://api.github.com/repos/ICTU/quality-report/issues/comments{/number}","contents_url":"https://api.github.com/repos/ICTU/quality-report/contents/{+path}","compare_url":"https://api.github.com/repos/ICTU/quality-report/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ICTU/quality-report/merges","archive_url":"https://api.github.com/repos/ICTU/quality-report/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ICTU/quality-report/downloads","issues_url":"https://api.github.com/repos/ICTU/quality-report/issues{/number}","pulls_url":"https://api.github.com/repos/ICTU/quality-report/pulls{/number}","milestones_url":"https://api.github.com/repos/ICTU/quality-report/milestones{/number}","notifications_url":"https://api.github.com/repos/ICTU/quality-report/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ICTU/quality-report/labels{/name}","releases_url":"https://api.github.com/repos/ICTU/quality-report/releases{/id}","deployments_url":"https://api.github.com/repos/ICTU/quality-report/deployments","created_at":"2014-02-14T12:39:18Z","updated_at":"2017-05-18T14:51:12Z","pushed_at":"2017-07-09T09:09:57Z","git_url":"git://github.com/ICTU/quality-report.git","ssh_url":"git@github.com:ICTU/quality-report.git","clone_url":"https://github.com/ICTU/quality-report.git","svn_url":"https://github.com/ICTU/quality-report","homepage":"http://ictu.github.io/quality-report/","size":4438,"stargazers_count":5,"watchers_count":5,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":4,"mirror_url":null,"open_issues_count":30,"forks":4,"open_issues":30,"watchers":5,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ICTU/quality-report/pulls/86"},"html":{"href":"https://github.com/ICTU/quality-report/pull/86"},"issue":{"href":"https://api.github.com/repos/ICTU/quality-report/issues/86"},"comments":{"href":"https://api.github.com/repos/ICTU/quality-report/issues/86/comments"},"review_comments":{"href":"https://api.github.com/repos/ICTU/quality-report/pulls/86/comments"},"review_comment":{"href":"https://api.github.com/repos/ICTU/quality-report/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ICTU/quality-report/pulls/86/commits"},"statuses":{"href":"https://api.github.com/repos/ICTU/quality-report/statuses/5c70777e9b4ab21fc8577690ce4aa6f250813e74"}}}}
{"actor":{"display_login":"codacy-bot"}}