From 692c0d0286a1dcaef44a52d77def6ca4642d0db6 Mon Sep 17 00:00:00 2001 From: chen-regen Date: Tue, 12 Sep 2017 10:05:48 -0400 Subject: [PATCH 1/2] DIXON-3 => - add 2032 for care_site based entropy - report-manager.html: add datatable div for care sites data - refactor report-manager.js entropy part for showing "all" and "care site" based entropy --- js/app.js | 2 +- js/components/report-manager.html | 10 ++++ js/components/report-manager.js | 86 +++++++++++++++++++++++-------- 3 files changed, 75 insertions(+), 23 deletions(-) diff --git a/js/app.js b/js/app.js index 5523fe3fb..dd393542a 100644 --- a/js/app.js +++ b/js/app.js @@ -925,7 +925,7 @@ define(['jquery', 'knockout', 'ohdsi.util', 'appConfig', 'webapi/AuthAPI', 'atla }, { name: "Entropy", reportKey: "Entropy", - analyses: [2031] + analyses: [2031, 2032] }]); /* self.reports = ko.observableArray([ diff --git a/js/components/report-manager.html b/js/components/report-manager.html index 26ad53f1b..591eda3b8 100644 --- a/js/components/report-manager.html +++ b/js/components/report-manager.html @@ -58,6 +58,16 @@
+
+ + + + + + +
Care Site
+
+
Entropy Report ()
Entropy by Date
diff --git a/js/components/report-manager.js b/js/components/report-manager.js index 8edc7e252..29d808391 100644 --- a/js/components/report-manager.js +++ b/js/components/report-manager.js @@ -76,6 +76,8 @@ define(['knockout', 'text!./report-manager.html', 'd3', 'atlascharts', 'colorbre data: 'ethP' }]; + self.careSiteDatatable; + self.reportTriggerRunSuscription = self.model.reportTriggerRun.subscribe(function (newValue) { if (newValue) { self.runReport(); @@ -1853,31 +1855,71 @@ define(['knockout', 'text!./report-manager.html', 'd3', 'atlascharts', 'colorbre break; // Data Completeness report case 'Entropy': $.ajax({ - url: config.services[0].url + 'cohortresults/' + self.model.reportSourceKey() + '/' + self.model.reportCohortDefinitionId() + '/entropy', + //url: config.services[0].url + 'cohortresults/' + self.model.reportSourceKey() + '/' + self.model.reportCohortDefinitionId() + '/entropy', + url: config.services[0].url + 'cohortresults/' + self.model.reportSourceKey() + '/' + self.model.reportCohortDefinitionId() + '/allentropy', success: function (data) { self.model.currentReport(self.model.reportReportName()); self.model.loadingReport(false); - - var entropyData = self.normalizeArray(data, true); - if (!entropyData.empty) { - var byDateSeries = self.mapDateDataToSeries(entropyData, { - - dateField: 'date', - yValue: 'entropy', - yPercent: 'entropy' - }); - - var prevalenceByDate = new atlascharts.line(); - prevalenceByDate.render(byDateSeries, "#entropyByDate", 400, 200, { - xScale: d3.scaleTime().domain(d3.extent(byDateSeries[0].values, function (d) { - return d.xValue; - })), - xFormat: d3.timeFormat("%Y/%m/%d"), - tickFormat: d3.timeFormat("%Y"), - xLabel: "Date", - yLabel: "Entropy" - }); + + var all_map_data = data.map(function(d) { + return d.insitution; + }); + var care_site_array = []; + for(var i = 0; i < all_map_data.length; i++) + { + if (care_site_array.indexOf(all_map_data[i]) == -1){ + care_site_array.push(all_map_data[i]); + } } + var care_site_data = care_site_array.map(function(d) { + return {'institution': d}; + }); + + self.careSiteDatatable = $('#care_site_table').DataTable({ + order: [], + dom: 'Clfrtip', + data: care_site_data, + columns: [ + { + data: 'institution' + } + ], + pageLength: 5, + lengthChange: false, + deferRender: true, + destroy: true + }); + + $(document).on('click', '#care_site_table tbody tr', function () { + $('#care_site_table tbody tr.selected').removeClass('selected'); + $(this).addClass('selected'); + + var institution_id = self.careSiteDatatable.data()[self.careSiteDatatable.row(this)[0]].institution; + + var entropyData = self.normalizeArray(data.filter(function(d){ return d.insitution == institution_id; }), true); + if (!entropyData.empty) { + var byDateSeries = self.mapDateDataToSeries(entropyData, { + + dateField: 'date', + yValue: 'entropy', + yPercent: 'entropy' + }); + + var prevalenceByDate = new atlascharts.line(); + prevalenceByDate.render(byDateSeries, "#entropyByDate", 400, 200, { + xScale: d3.scaleTime().domain(d3.extent(byDateSeries[0].values, function (d) { + return d.xValue; + })), + xFormat: d3.timeFormat("%Y/%m/%d"), + yFormat: d3.format(".3f"), + tickFormat: d3.timeFormat("%Y"), + xLabel: "Date", + yLabel: "Entropy" + }); + } + }); + + $('#care_site_table tbody tr:eq(0)').click(); } }); break; // Entropy report @@ -2862,7 +2904,7 @@ define(['knockout', 'text!./report-manager.html', 'd3', 'atlascharts', 'colorbre if (data && !data.empty) { for (var i = 0; i < data[options.dateField].length; i++) { series.values.push({ - xValue: new Date(data[options.dateField][i]), + xValue: new Date(new Date(data[options.dateField][i]).getTime() + (new Date().getTimezoneOffset() + 60) * 60000), //offset timezone for date of "yyyy-mm-dd" yValue: data[options.yValue][i], yPercent: data[options.yPercent][i] }); From 50d99dbcbed79a96ea34f3473447879955408189 Mon Sep 17 00:00:00 2001 From: Anthony Sena Date: Tue, 19 Sep 2017 16:06:22 -0400 Subject: [PATCH 2/2] Fix D3 v4 reporting bug --- js/components/report-manager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/components/report-manager.js b/js/components/report-manager.js index 29d808391..34c1e30b7 100644 --- a/js/components/report-manager.js +++ b/js/components/report-manager.js @@ -2611,7 +2611,7 @@ define(['knockout', 'text!./report-manager.html', 'd3', 'atlascharts', 'colorbre yLabel: "% Persons", seriesName: "recordType", showLegend: true, - colors: d3.scale.category10(), + colors: d3.scaleOrdinal(d3.schemeCategory10), tooltips: [ { label: 'Series',